Word Representation

지금까지는 Vocab 사용해서 (위 예시의 경우 사이즈가 10,000) one-hot vector로 단어를 표현했음

예를 들어 Orange가 vocal에서 6257번째 단어라면 $O_{6257}$로 표기

 

이러한 representation의 단점

- 이러한 예시에서 orange와 apple이 가까운 관계에 있다는 것을 학습하지 못함

--> 두 개의 다른 one-hot vector의 내적(inner product)은 $0$이기 떄문

 

one-hot representation 대신에 "featurized representation"을 사용해보자!

 

첫번째 칼럼에 features

그 외에 size, cost, alive, verb .. 등등 다양한 feature 생각해볼 수 있음

 

예를 들어 300개의 feature가 있다고 해보자

그러면 "Man"을 represent하는 300차원의 벡터가 생긴다 -> $e_{5391}$ 로 표현하기로 함

 

이제 orange와 apple이 비슷하다는 것을 알 수가 있다; 많은 feature에 있어서 같은/비슷한 값으로 표현되기 때문

 

this allows the algorithm to generalize better across different words

실제로 학습된 feature들이 gender를 의미하는지 royal를 의미하는지 정확히 알아내기는 어려울 수 있음

 

 

[Visualizing word embeddings]

300차원으로 표현된 단어들을 2차원 시각화하기

자주 사용하는 알고리즘 중 하나는 t-SNE

 

 

"embeddings"

 

300차원의 한 지점에 단어가 embeded 된다 

 

 

Using Word Embeddings

[Named entity recognition example]

 

편의상 unidirectional로 그렸지만 주어진 태스크 위해서는 bidirectional로 수행해야 함

 

featurized representation 을 사용하면, 

"orange farmer"와 "apple farmer"가 비슷한 단어라는 것을 알 수 있기 때문에 named entity 을 수행하는 데 유리

 

만약에 두번째 예시가 "Robert Lin is a durian cultivator"이고, 가지고 있는 비교적 작은 training set에 "durian", "cultivator" 라는 말이 없을 때는?

거대한 훈련셋(ex. 1B~100B의 인터넷 자료)에 훈련된 모델을 traing set으로 transfer learning 할 수 있음

 

 

[Transfer learning and word embeddings]

 

수행해야 할 task를 위한 학습셋이 비교적 작을 때 word embedding을 효과적으로 사용할 수 있다 (어떤 language modeling, machine translation 등 task에서는 그다지,)

transfer learning(A->B) 은 데이터A 크기가 매우 크고 데이터B의 크기가 상대적으로 적을 때 효과적

 

[Relation to face encoding]

- "encoding"과 "embedding"은 매우 비슷한 표현

siamese 네트워크에서 두 얼굴을 비교할 때 사용하는 128차원의 face encoding

 

word embedding과 차이점은?

어떤 새로운 얼굴 이미지라도 CNN 네트워크를 통과하여 encoding할 수 있음

반면 word embedding은 고정된 크기의 vocab이 있고, 그 속의 각 단어에 대한 embedding을 학습하게 됨

 

 

Properties of Word Embeddings

- analogy reasoning

 

 

Man -> Woman
as
King -> ___?___

 

4차원의 word embedding으로 represent 한다고 쳤을 때,

$$e_{man} = \begin{bmatrix}-1\\0.01 \\0.03\\0.09\end{bmatrix} , \ e_{woman}= \begin{bmatrix}1\\0.02 \\0.02\\0.01\end{bmatrix}$$

$$e_{king} = \begin{bmatrix}-0.95\\0.93 \\0.70\\0.02\end{bmatrix} , \ e_{queen}= \begin{bmatrix}0.97\\0.95 \\0.69\\0.01\end{bmatrix}$$

$$e_{man} - e_{woman} = \begin{bmatrix}-2\\0 \\0\\0\end{bmatrix}$$

$$e_{king} - e_{queen} = \begin{bmatrix}-2\\0 \\0\\0\end{bmatrix}$$

 

- man과 woman의 주요 차이는 'gender'이고, king과 queen도 마찬가지다

- 따라서 벡터끼리 뺀 값의 결과가 같은 것임

 

[Analgoies using word vectors]

300차원 위 점으로 표시한 단어의 위치

 

$$e_{man} - e_{woman}\approx e_{king} - e_{?}$$

 

위 식을 만족하기 위한 단어를 찾는다면

 

Find word $w$: 

$$\mathop{argmax}_{w}\ sim(e_{w}, e_{king} - e_{man} + e_{woman})$$

 

- t-SNE: 300차원을 2차원에 비선형적인 방식으로 맵핑하기 때문에 바로 위에 보이는 300차원 시각화 이미지처럼 되지는 않음 (단어와 단어 관계가 평행으로 나타나는)

- 자주 사용하는 similarity function?

 

[cosine simliarity]

$$sim(u, v) = \frac{u^{T}v}{ \parallel u \parallel _{2}  \parallel v \parallel _{2}}$$

분자만 보자면, 결국에 내적(inner prodcut)과 마찬가지인데 두 벡터가 비슷할수록 결과는 커지게 됨

 

- square similarity 도 있음

 

$$\parallel u-v \parallel ^{2}$$

 

하지만 similarity 보다는 dissimilarity 측정하는 데 더 적절함

코사인 유사도를 더 자주 사용함

 

놀라운 word embedding

 

Embedding Matrix

사전에 있는 모든 단어의 featurized vector 를 가지고 하나의 embedding matrix 를 구성하기로 함

 

 

또 단어별로 one-hot vector 가 있음

 

위의 metrix $E$($(300, 10000)$ 차원)와 one-hot vector($(10000, 1)$ 차원)를 곱한다면

 

$$E  \cdot O_{6257} = e_{6257}$$

 

그 결과는 $(300, 1)$ 차원의 벡터인 $e_{6257}$

복사했습니다!