text를 embedding시키는 Word2Vec의 성질 이해하기
1. 시각적으로 알아보는 Word2Vec
layer의 기본 구성
8개의 단어를 5차원 embedding vector로 만들고 싶다.
random하게 초기화시킨 가중치는
여기서 가로 한줄한줄이 단어
세로 한줄한줄은 차원
수백번 학습시키고나서 얻은 가중치는
apple과 orange는 의미상 비슷하다는 것을 알고 있다. 실제 embedding결과도 비슷한 색을 보이고 있다는 것
juice, milk, water도 색이 비슷하다는 것이 보인다. 실제로 이들도 의미상 비슷하다.
고차원의 벡터는 눈으로 확인이 불가능하다. PCA를 통해 2차원으로 축소시켜 시각화한 그림은
의미상 비슷한 벡터들이 모여있긴하다
W1과 W2중 무엇을 embedding vector로 써도 상관없지만 통상적으로는 W1을 embedding vector로 사용한다고 한다.
평균치를 쓰기도 한다고함
참고로 두 행렬 W1과 W2는 전치관계에 있는 행렬이 아니고 output을 더욱 정확히 맞추기 위해 서로 다른 행렬을 사용한다
2. Word2Vec의 성질
Word2Vec으로 학습한 벡터들은 단어의 의미상 관계를 잘 표현하는 것으로 알려져있다.
Word2Vec으로 학습하여 PCA로 표현한 그림
(Germany와 Berlin의 관계)와 (France와 어떤 x의 관계) 두 관계가 서로 동일한 관계가 되려는 x는 무엇일까?
vec(‘Berlin’) - vec(‘Germany’) = vec(x) - vec(‘France’)를 만족하는 x는?
정답은 Paris다. vec(‘Berlin’) - vec(‘Germany’)과 vec(‘Paris’) - vec(‘France’)는 cosine distance가 비슷하다.
2-1) analogy reasoning
cosine distance 관점에서 analogy reasoning이 가능하다.
queen과 king의 차이는 woman과 man의 차이와 동일하다.
두 벡터간 거리를 cosine distance로 구하였고(논문에서 밝힘)
이것이 결국 의미의 차이가 되는거고 그래서 그 의미의 차이를 다른 벡터들에게 적용해도 동일한 의미 변화가 생긴다는것을 보여주는 것이다.
man에서 woman으로의 거리 차이가 남자에서 여자로 가는 의미 차이를 나타내는 벡터가 되고
그래서 이걸 동일하게 king에 적용하면 queen이 되고 uncle에 적용하면 aunt가 된다.
물론 매우 이상적으로 학습된 경우
2-2) Intrusion detection
단어들 간 배열에서 가장 상이한 단어를 찾는 과정
예를 들어 staple,hammer,saw,drill 4개의 단어가 주어졌다고 하자.
특정 단어와 나머지 단어들의 embedding vector를 구하여 이들 간 distance를 구한다.
euclidean distance나 cosine distance 모두 가능하다. 교수님은 euclidean distance를 예로 들었다.
staple과 나머지 hammer,saw,drill과의 distance를 계산하여 d1,d2,d3를 구하고
이들의 평균 (d1+d2+d3)/3을 staple의 평균거리로 정의하고
나머지 단어 hammer,saw,drill도 똑같은 방식으로 구해본다.
그러면 평균거리 값이 가장 큰 단어가 나머지 단어들과 가장 상이할 것이다.
여기서 납득이 안된점은 word vector간 거리를 euclidean distance로 구하는게 말이 되냐 이거였는데
이러한 단순한 단어배열에서 방향각을 고려할 필요가 있을까? 절대적인 거리개념인 euclidean distance만 생각해도 충분했다. 물론 cosine distance를 써도 된다
2-3) 다른 task로의 활용
Word2Vec은 단순히 단어 유사도 문제에서만 활용되는 것이 아니라
machine translation, POS tagging 등 다른 문제에서 word의 입력벡터로 제공함으로써 성능향상을 도왔다.
machine translation에서는 의미표현을 더욱 잘해주는 embedding vector를 제공하여 성능향상을 도왔다.
sentiment analysis에서는 각 단어들의 긍부정차이를 보다 정밀하게 표현해주는 vector를 제공하여 성능향상을 도왔다.
image captioning은 이미지를 보고 이해하여 이미지에 적절한 상황을 sequence로 생성하는 task
의미를 잘 이해하는 embedding vector는 이러한 task에도 성능향상을 도왔다.
'딥러닝 > NLP' 카테고리의 다른 글
RNN의 기본 구조 이해하기 (0) | 2022.02.19 |
---|---|
Word2Vec의 2가지 형태 - CBOW와 skip-gram 모델 (0) | 2022.02.15 |
Word2Vec의 기본 알고리즘 (0) | 2022.02.06 |
Word2Vec의 핵심 아이디어 (0) | 2022.02.05 |
naive bayes classifier의 문제점을 보완하는 Laplace smoothing (0) | 2022.02.04 |