본문 바로가기
딥러닝관련/자연어처리

Word Embedding

by 머리올리자 2020. 7. 13.

Word Embedding

 

- 텍스트를 구성하는 하나의 단어를 수치화하는 방법의 일종

- 단어vector로 표현

 

[아래는 참고 2, 3 링크에서 참고하여 필요한 내용을 적어 놓고 일부 수정한 것입니다.]

 

데이터 = 대상속성표현해 놓은 자료

- 속성들을 바탕으로 대상을 판단할 수 있다 (속성 → 대상 판단)

- 따라서 대상을 어떤 속성으로 표현하는지 매우 중요하다 (대상 속성 표현 중요)

- 이렇게 대상의 속성을 표현하는 방식 => Feature representation

 

Ex) if 텍스트

- 텍스트의 속성을 표현해 놓은 것 : 데이터

- 단어가 강아지라면 강아지 자체가 대상의 속성이 될 수 있다.

- 품사, 앞 단어 또는 문장에서 몇번째 단어인지, 단어가 긴지 짧은지 등이 중요할 수 있다.

 

- 이런 언어적 정보를 추출하여 이를 기반으로 표현하는 것이 언어의 feature representation

 

1. Sparse Representation

 

ex) 강아지 → [0 0 0 2 0 0 0 0 ........ .... 0]

 

  - 강아지에 대한 vector를 sparse representation으로 위와 같이 표현할 수 있다.

  - One-hot encoding 방식

  - Sparse vector

"You" : 0
"are" : 1
"stupid" : 2

"You are stupid" 라는 문장을 만드려면 [1 1 1] 과 같이 vector 형태로 만들 수 있다.

"Would" : 0
"you" : 1
"do" : 2
"me" : 3
"a" : 4
"favor" : 5

"Would you do me a favor" 라는 문장을 만드려면 [1 1 1 1 1 1] 과 같이 vector 형태로 만들 수 있다.

"I": 0
"am": 1
"a": 2
"boy": 3 
"girl": 4

참고 1 링크에 근거하여 만약 "I am a boy" 라는 문장을 만들고 싶으면 어떻게 할까?

 

그럼 [1 1 1 1 0]의 vector로 나타낼 수 있다.

 

네 번째 index인 girl은 사용되지 않기 때문이다.

 

Sparse representation 단점

  a. 단어의 개수가 늘어나면 차원이 계속 늘어남

       - 전체 단어의 개수가 10,000개면 ▶ vector 차원도 10,000

       - 저장 공간 측면에서 매우 비효율적

 

  b. 단어와 단어 간의 관계가 전혀 드러나지 않는다.

       - 어떠한 단어끼리 유사한 의미를 갖고, 반대의 의미를 갖는지 등 단어와의 관계 반영 못함

       - 이는 검색 시스템에서 단점으로 작용

         (서울->맛집, 서울->여행 등으로 관계 있는 단어끼리 보여줘야 하는데 그러지 못함)

 

2. Dense Representation

 

  - Sparse Representation과 반대

  - Vector의 차원을 단어 집합의 크기로 상정하지 않음(속성을 독립적인 차원으로 나타내지 않음)

  - 사용자가 설정한 값으로 모든 단어의 vector 표현의 차원으로 설정

  - One-hot encoding이 아닌 실수값을 가짐

  - 해당 속성을 n차원으로 표현할 것이면 그 속성을 n차원 vector에 대응시키는 것  Embedding

  - 여러 속성들이 섞여있서 표현되었기 때문 각각의 차원이 어떤 의미를 갖는지는 알 수 없다.

  - 대신 '사람'을 표현하는 vector와 '유인원'을 표현하는 vector가 얼마나 다른지는 vector간의 distance를 통해 알 수 있다.

  - Dense vector

 

  ex)

   Sparse representation : 강아지  [0 0 0 2 0 0 0 0 ........ .... 0] 10,000 차원

   Dense representation : 강아지  [0.8 1.3 3.0 0.8 1.9 3.8 1.2 0.2 ........ .... 4.0]  128 차원

 

 

 

 

 

 

 

3. Word Embedding

 

  - 단어를 dense vector의 형태로 표현하는 방법을 word embedding.

  - Dense vector(=embedding vector)

 

 

 

 

 

 

 

 

 

"I": (0.3, 0.2)
"am": (0.1, 0.8)
"a": (0.5, 0.6)
"boy": (0.2, 0.9) 
"girl": (0.4, 0.7)

 

참고 1 링크에서 그림 받아옴

 

- 입력 x에 weight W가 곱해져 h 생성

- x가 one-hot-encoding 된 값이기 때문에 h vector는 W의 행 하나에 대응된다.

 

참고 1 링크에서 그림 받아옴

 

wi vector 값을 해당 단어에 대한 distributed representation, vector representation 혹은 word embedding 이라고 한다.

 

 

 

참고 1 : https://datascienceschool.net/view-notebook/6927b0906f884a67b0da9310d3a581ee/

참고 2 : https://dreamgonfly.github.io/machine/learning,/natural/language/processing/2017/08/16/word2vec_explained.html

참고 3 : https://wikidocs.net/book/2155

'딥러닝관련 > 자연어처리' 카테고리의 다른 글

자연어 처리란  (0) 2021.12.15
Transformer Decoder : Linear & Softmax Layer  (0) 2021.11.16
Transformer Decoder : Encoder-Decoder Attention  (0) 2021.11.16
Word2Vec  (0) 2020.07.20
StackGAN 논문 리뷰(작성 중)  (0) 2020.07.16