Word Embedding
- 단어들을 특정한 차원으로 이루어진 공간 상의 한 점의 좌표를 나타내는 벡터로 변환해주는 기법.
- example
- cat이라는 단어와 kitty라는 단어를 벡터로 변환했을 때, 두 좌표 간의 거리는 가깝다
- hamburger는 cat과 kitty와 의미가 다르므로, 해당 좌표들 간의 거리는 멀다
- 비슷한 의미를 가진 단어들이 좌표 공간 상에서 가까이 위치하도록 한다. -> 의미를 잘 반영한 표현 방법!
- word embedding을 학습하는 방법으로는 Word2Vec, GloVe 등이 있다.
Word2Vec
- word embedding을 학습하는 대표적인 방법.
- 가정 : 같은 문장에서 나타난 인접한 단어들 간의 의미가 비슷할 것이다.
- ex
- The cat purrs.
- This cat hunts mice.
- 라는 2개의 문장이 있을 때, cat의 앞뒤에 있는 the, purrs, this, hunts, mice와 같은 단어들이 cat과 깊은 관계가 있을 것이라 가정.
- 하나의 단어를 input으로 넣었을 때, 주변 단어들이 등장할 확률을 예측하는 방법으로 학습 진행.
- cat이라는 단어가 input일 때
- P(w|cat)은 얼마인가? (w는 cat의 주변 단어들)
- w가 meow, fleas, pet일 때 가장 확률이 높다.
- P(w|cat)은 얼마인가? (w는 cat의 주변 단어들)
- 학습 방법 (알고리즘)
- Sentence : "I study math."
- 먼저, 주어진 문장을 단어(word) 단위로 나누는 tokenization을 진행한 후에, 유니크한 단어들만 모아서 사전을 구축한다.
- Vocabulary : {"I", "study", "math}
- 각 단어들은 vocabulary의 size만큼의 차원을 가지는 one hot vector로 표현할 수 있게 된다.
- "study" = [0, 1, 0]
- sliding window 기법을 적용하여 한 단어를 중심으로 앞뒤로 나타난 워드 각각과 입출력 단어 쌍을 구성.
- ex) window size가 3이라면 (앞뒤로 한 단어씩만 본다면)
- "I"라는 단어가 중심 단어라면
- 입출력 쌍은 (I, study)
- "study"라는 단어가 중심 단어라면
- 입출력 쌍은 (study, I), (study, math)
- "I"라는 단어가 중심 단어라면
- ex) window size가 3이라면 (앞뒤로 한 단어씩만 본다면)
- 만들어진 입출력 단어 쌍들에 대해 예측 task를 수행하는 2 layer(W1, W2)의 neural layer를 만든다.
- 각 단어들이 vocabulary size 만큼의 차원을 지닌 one hot vector로 표현되기 때문에 입력과 출력 layer의 노드 수는 모두 vocabulary size가 된다.
- 아래의 그림에서 x는 input, y는 output이 된다.
- 가운데 있는 hidden layer의 노드 수는 사용자가 정하는 하이퍼 파라미터.
- 워드임베딩을 수행하는 좌표 공간의 차원 수와 동일.
- 해당 예제에서 hidden layer의 차원을 2로 설정했을 때 학습 과정을 살펴보자.
- ex ) 입출력 쌍 : (study, math)
- x = study = [0, 1, 0]
- y = math = [0, 0, 1]
- W1 : 3차원 벡터를 2차원(hidden layer)으로 변환해주는 linear transformation matrix. -> (2,3)
- 이때, 2번의 내적을 수행.
- 각각의 내적에서, x는 one hot vector이기 때문에 1과 계산되는 2번째 column의 값만 가져오게 된다.
- 이 부분을 embedding layer라고 부르며, 이 과정에서 실제로 행렬곱을 수행하지 않고, 해당 column의 값만 뽑아오는 방식으로 과정을 수행.
- W2 : 2차원을 3차원 벡터로 변환해주는 linear transformation matix -> (3,2)
- 마지막으로 non-linear layer인 softmax를 거치게 함으로써 3차원 벡터가 확률분포를 가지도록 변환해줌.
- 해당 확률분포와 ground truth의 확률분포(=[0, 0, 1])의 거리가 가까워지도록 하는 softmax loss를 적용하며 학습 진행.
- ex ) 입출력 쌍 : (study, math)
- 특성
- 단어들 간의 관계를 잘 표현.
- 예를 들어, king과 queen 간의 거리, man과 woman 간의 거리, uncle과 aunt 간의 거리가 같아서 남성과 여성 간의 차이를 잘 나타내고 있음.
- 단어들 간의 관계를 잘 표현.
- Application
- Machine translation : 단어 유사도를 학습하여 번역 성능을 더 높여줌
- Sentiment analysis : 감정분석, 긍부정분류를 도움
- Image Captioning : 이미지의 특성을 추출해 문장으로 표현하는 테스크를 도움.
Reference
- 부스트코스, 자연어처리의 모든 것, 주재걸 교수님.