작성자: 고려대학교 통계학과 김현지
Contents
1. Human language and word meaning
2. Word2vec introduction
3. Word2vec objective function gradients
4. Word2vec: More Details
5. Optimization basics
어떻게 단어의 의미를 표현할까?
우리의 말은 '문자'로 구성되며, 말의 의미는 '단어'로 구성된다. 단어는 말하자면 의미의 최소 단위인 셈이다. 그래서 자연어를 컴퓨터에게 이해시키는 데는 무엇보다 '단어의 의미'를 이해시키는 게 중요하다.
컴퓨터에게 단어를 어떻게 표현할까?
: 유의어 사전으로, '뜻이 같은 단어(동의어)'나 뜻이 '비슷한 단어(유의어)'가 한 그룹으로 분류되어있다.
⇒ 이런 '단어 네트워크'를 이용해 컴퓨터에게 단어 사이의 관계를 가르칠 수 있다.
: 자연어 처리 분야에서 가장 유명한 시소러스
단어를 discrete symbols로 나타내기
전통적인 NLP에서는 단어를 discrete symbols로 간주한다.
Example: 웹 검색을 할 때 사용자는 "Seattle motel"을 검색하면 "Seattle hotel"이 포함된 문서도 찾아지길 원한다.
그러나
이 두 벡터는 orthogonal하다.
맥락으로 단어 표현하기
: 단어의 의미는 주변 단어에 의해 형성된다.
: 우리는 각 단어에 대해 밀집 벡터(dense vector)를 만든다. 이는 유사한 맥락(context)에서 나타나는 단어들끼리 유사하게 구성된다.
➡ 이러한 추론 문제를 반복해서 풀면서 단어의 출현 패턴을 학습한다.
: word vectors를 학습하는 프레임워크
Idea
Example windows and process for computing
✅ 중심 단어(center word)로부터 맥락 단어(context word)를 추측하는 용도의 신경망을 사용한다.
→ 이 모델이 가능한 정확하게 추론하도록 훈련시켜서 분산 표현을 얻어낸다.
입력층에서 은닉층로의 변환은 matrix 에 의해 이루어진다. 이 가중치 의 각 행에는 해당 단어의 분산 표현이 담겨 있다. 학습을 진행할수록 맥락에서 출현하는 단어를 잘 추측하는 방향으로 분산표현들이 갱신된다. 놀랍게도 이렇게 얻은 벡터에는 '단어의 의미'도 잘 녹아있다.
Softmax function: 의 예시
목적 함수 는 (average) negative log likelihood이다.
➡ 이 obective function을 최소화해야 한다.
Optimization을 통해 objective function을 최소화하는 파라미터 , 즉 와 (word를 나타내는 두 벡터)를 찾는다.
If and , i.e , then:
Simple example:
⇒
일 때,
일 때,
Objective funcion:
이 식을 중심 단어(center word), 맥락 단어(context word)로 각각 미분한다.
이처럼 objective function을 편미분한 것은 실제 단어와 예측한 단어와의 차이와 같다. 따라서 gradient descent를 통해 실제에 더 가깝게 예측할 수 있다.
Why two vectors?
➡ Easier optimization. Average both at the end
우리는 최소화하고 싶은 비용함수 를 가지고 있다.
Gradient Descent는 를 최소화하는 알고리즘이다.
Idea: for current value of , calculate gradient of , then take small step in direction of negative gradient. Repeat.
Update equation (in matrix notation):
Update equation (for single parameter):
Algorithm:
While True:
theta_grad = evaluate_gradient(J, corpus, theta)
theta = theta - alpha * theta_grad
는 corpus의 모든 windows에 대한 함수이다.
🚨 수십억개가 될 수도 있다!
모든 windows 대신 sample window 단위로 update한다.
While True:
window = sample_window(corpus)
theta_grad = evaluate_gradient(J, window, theta)
theta = theta - alpha * theta_grad
Stanford CS224N: NLP with Deep Learning | Winter 2019
Reference
투빅스 15&16기 텍스트 세미나 발표자료
투빅스 14기 박지은
컴퓨터 자연어 단어의 의미를 이해할 수 있도록 단어는 벡터로 표현하게 됩니다. 전통적 NLP에서는 단어를 discrete symbol로 간주하여 one-hot vector로 나타내거나, 맥락을 반영한 밀집 벡터를 이용할 수 있습니다. 다음으로 word vector를 학습하는 프레임워크인 word2vec의 skip-gram은 중심 단어를 입력받아 이로부터 주변의 맥락 단어를 예측하는 신경망입니다. 이 때, 학습에는 두 단어 벡터에 대한 내적을 통해 유사도를 계산하는 예측함수와, negative log likelihood의 목적함수를 사용합니다. 최적화 함수로는 Gradient Descent와 Stochastic Gradient Descent가 활용될 수 있습니다. NLP 심화 세미나를 위한 기초를 친절하게 설명해주셔서 좋았습니다. 감사합니다!
투빅스 16기 이승주
Wordnet
: 유의어를 찾는 과정에서 단어의 미묘한 차이 반영이 불가하며 신조어를 바로 반영하는 것이 힘든 한계가 있습니다. 또한 단어간의 유사도 계산이 불가하기 때문에 적절하지 않습니다.
One-hot-vector
: 단어 수가 많아지면 sparse해지고 차원이 커지는 한계가 있습니다. 그리고 유사도에 대한 자연스러운 개념이 어렵습니다.
Word Vectors
: 각 단어에 대해 밀집 벡터를 만들어 유사한 맥락에서 나타나는 단어끼리 유사하게 구성합니다. word embedding이라고도 불립니다.
Word2Vec
: 이는 word vectors를 학습하는 프레임 워크입니다. 중심단어를 기반으로 맥락 단어를
추측합니다. 중심단어와 맥락단어의 유사도를 이용하여 확률 계산을 통해 맥락단어를 추측합니다. 유사도 계산은 두단어의 벡터의 내적을 통해 계산합니다. Word2Vec의 목적함수는 negative log likelihood 입니다. 이 목적함수를 최소화하는 것이 목표입니다. 최소화하는 알고리즘은 gradisent descent가 있습니다. Word2Vec에는 두가지의 종류가 있는데 하나는 skip-grams(SG)이고 또 다른 하나는 continupus bag of words(CBOW)가 있습니다. SG는 중심단어가 주어졌을 때 맥락 단어를 예측하고 CBOW는 맥락단어로부터 중심단어를 예측하는 방식입니다.
투빅스 16기 주지훈
WordNet
One-hot vector
Word Vectors
Word2Vec
NLP 기초를 쉽게 알려주셔서 NLP의 전반적인 흐름을 이해할 수 있었습니다. 감사합니다!