Stochastic Language Model's Problem
Out-of-Vocabulary
- 학습 데이터에 존재하지 않는 단어 또는 n-gram이 테스트 시 나타나 확률 계산 불가
- Back-off or Smoothing 기법으로 일부 완화되지만 근본적 해결 어려움
Long-term Dependency
- n-gram 모델에서 n값이 증가할수록 휘귀 시퀀스 확률이 0에 가까워짐
- 긴 문맥의 의존 관계를 포착하지 못해 성능 저하
표현 한계
- 단어를 one-hot vector로 표현하면 모든 벡터가 orthogonal(내적=0)하여 유사도 측정 불가
- 현실의 단어 간 의미적 관련성 불가 → 분산 표현 필요
1. NNLM
A Neural Probabilistic Language Model
- 전통적인 n-gram 언어 모델의 한계를 줄이기 위해 신경망을 이용해 조건부 확률을 직접 근사
1.1 Procedure
NNLM 언어 모델링 과정
- "what will the fat cat sit on"
- E.g., 입력: "what will the fat cat", 예측 값 : "sit"
- 컴퓨터가 단어를 인식할 수 있도록 모든 단어를 숫자로 인코딩
- 훈련 corpus에 7개의 단어만 존재한다고 가정 → one-hot encoding
입력: "what will the fat cat", 예측: "sit"
- what, will, the, fat, cat의 one-hot vector를 입력받아 sit의 one-hot vector를 예측하는 문제
- one-hot vector들이 훈련을 위한 NNLM의 입력이면서 예측을 위한 레이블
- n = 4, "what will the fat cat"라는 단어 시퀀스가 주어졌을 때, 다음 단어를 예측하기 위해 앞의 4개 단어 "will the fat cat"까지만 참고 (window = 4)
1.2 Architecture
- 총 4개의 Layer로 이루어진 인공 신경망
- Input Layer
- Input: 4개의 단어 'will, the, fat, cat'의 one-hot vector
- Output Layer
- Output: Model Prediction(정답에 해당하는 단어): 'sit'의 one-hot vector
- Projection Layer
- 4개의 one-hot vector를 입력 받은 NNLM은 다음 층인 projection layer를 지나게 됨.
- Hidden Layer
- 인공신경망에서 입력층과 출력층 사이의 층을 보통 은닉층이라고 부름
- 투사층이 일반 은닉층과 구별되는 특징은 가중치 행렬과의 연산은 이루어지지만 활성화 함수가 존재하지 않음
- "what will the fat cat sit on"
- E.g., Input: ""what will the fat cat", Prediction: "sit"
- 컴퓨터가 단어를 인식할 수 있도록 모든 단어를 숫자로 인코딩
- 훈련 corpus에 7개의 단어만 존재 → one-hot encoding
2. Projection Layer
- 투사층의 크기를 M으로 설정하면 각 입력 단어들은 투사층에서 V x M 크기의 가중치 행렬과 곱해짐
- 만약 one-hot vector 차원이 7, M이 5라면?
- Lookup table
- one-hot vector와 가중치 W 행렬의 곱은 사실 W행렬의 i번째 행을 그대로 읽어오는 것 → lookup
- V의 차원을 가지는 one-hot vector는 이보다 더 차원이 작은 M차원의 단어 벡터와 mapping
- vector들은 초기에는 랜덤한 값을 가지지만 학습 과정에서 값이 계속 변경, 이 단어 벡터를 embedding vector라고 한다.
- Connection
- 각 단어가 table lookup을 통해 embedding vector로 변경되고, 투사층에서 모든 embedding vector들의 값은 연결됨
- x: 각 단어의 one-hot vector
- t: NNLM이 예측하고자 하는 문장에서 t번째 단어
- n: 윈도우 크기
- lookup: lookup table을 의미하는 함수
- ;: 연결 기호
3. Hidden Layer
- 투사층의 결과는 h의 크기를 가지는 은닉층을 지남
- 은닉층의 입력은 가중치와 곱해진 후 편향이 더해져 활성화 함수의 입력이 됨.
- Wh: 가중치, bh: 편향
- tanh: 은닉층의 활성화 함수
4. Output Layer
- 은닉층의 출력은 V의 크기를 가지는 출력층으로 전달
- 다시 또 다른 가중치와 곱해지고 편향이 더해지면, 입력이었던 one-hot vector들과 동일하게 V차원 벡터
- 만약 입력 벡터의 차원이 7이었다면 여기서 나오는 벡터도 7차원
- 출력층에서는 활성화 함수로 Softmax 함수 사용
- V차원의 벡터는 Softmax를 지나면서 0~1 사이의 실수값, 총 합 1.
- 이렇게 나온 벡터를 NNLM의 예측값이라는 의미에서 y^
y^=softmax(Wyhlayer+by)
- 벡터 y^의 각 차원 안에서의 값이 의미하는 것.
- y^의 j번째 인덱스가 가진 0과 1 사이의 값은 j번째 단어가 다음 단어일 확률
- y^는 실제 정답에 해당되는 단어인 one-hot vector의 값(실제 y)에 가까워져야 함
- 실제값에 해당되는 다음 단어를 y라고 했을 때, 이 두 벡터가 가까워지기 위해 Loss function으로 cross-entropy 사용
- 역전파가 이루어지면서 가중치 행렬들이 학습되는데, 이 과정에서 embedding vector들도 학습됨
Pros
- one-hot이 아니라 embedding으로 표현해 비슷한 용도로 쓰이는 단어들이 비슷한 벡터 값을 갖도록 학습되며 단어 간 유사도 표현 가능
- embedding 덕분에 훈련에서 못 본 시퀀스라도 비슷한 문맥의 단어들을 이용해 그럴듯한 확률을 주고, 모든 n-gram count를 저장할 필요가 없어 sparsity & 저장 공간 문제 완화
Cons
- 고정 길이 입력(n-gram window)을 사용하므로 정해진 n개 이전 단어만 보고 다음 단어를 예측해 더 먼 과거 문맥 정보는 활용 불가
- 문장마다 길이가 다른 현실 데이터를 잘 다루려면 임의 길이 시퀀스를 처리할 수 있는 RNN, LSTM, Transformer와 같은 모델이 필요하다.
1.3 Computational Complexity
한 단어 처리 시 연산량
- Projection Layer
- 입력 n개의 one-hot vector를 embedding 차원 m으로 투영하는 데 n x m 연산
- Hidden Layer
- embedding을 모아 은닉층 크기 h로 변환하는 데 n x m x h 연산
- Output Layer
- 은닉층에서 단어 집합 크기 V로 가는 softmax 연산 h x V가 필요해 전체 복잡도는 nm + nmh + hV
지배항과 실제 규모
- 일반적으로 V(단어 집합 크기)가 매우 크기 때문에 hV항이 나머지를 압도하며 사실상 복잡도는 O(hV)
- E.g., n = 10, m = 500, h = 500, V = 100,000 정도만 되어도 한 단어당 연산량이 매우 커져 NNLM 학습이 느려진다.
2. NNLM vs. Word2vec
NNLM
- 언어 모델이므로 이전 단어들 → 다음 단어 확률을 직접 예측하는 게 목적
Word2vec
- 주변 단어들로 중심 단어를 맞히면서 embedding 학습에 초점
- NNLM 구조에서 비선형 은닉층을 제거하고, 투사층(embedding)에서 바로 출력층으로 연결되는 훨씬 단순한 신경망
2.1 Computational Complexity
NNLM
Word2vec
- 은닉층을 없애고 계층적 softmax나 negative sampling 같은 기법으로 각 단계 복잡도를 nm + mlogV까지 줄여 훨씬 빠르게 학습된다.
