n-gram 모델의 경우 단어를 discrete symbol로 보기 때문에 '애완동물' 이라는 단어 시퀀스는 학습 코퍼스에 존재하지만 '반려동물'이라는 단어 시퀀스는 학습 코퍼스에 존재하지 않는다면 '애완동물'과 '반려동물'의 단어의 유사도를 알 수 없기 때문에P(보호 단체 | 반려 동물)를 0으로 연산할 것이다. (Unseen sequence에 대한 대처가 미흡)
따라서 Markov Assumption이나 Smoothing 같은 기법들을 도입하여 문제점을 완화하였으나 문제점을 근본적으로 해결하지는 못하였다.
Neural Network Language Model
단어의 유사성을 학습할 수 있다면 unseen sequence에 대해 대처를 할 수 있을 것이다.
단어 벡터 간 유사도를 구하는 벡터를 얻어내는 Word embedding을 통해 word를 continuous로 다룸으로서 이러한 문제점을 해결하고자 하였다.
NNLM(feed-forward Nerual Network Language Model)은 word embedding 을 처음으로 사용한 모델이다.
위 그림에서처럼 input layer, projection layer, hidden layer, output layer로 구성되어 있다.
예문 : "what will the fat cat sit on"
window size = 4인 모델이라고 가정 (특정 단어를 예측하기 위해 참고할 단어의 수) 입력(what, will, the, fat, cat) -> 언어모델 -> 출력(sit)
1. input layer의 input으로 one-hot encoding된 단어를 넣는다.
2. one hot vector와 Projection layer의 가중치가 곱해지는 연산이 이루어진다. Projection layer의 가중치의 `one hot vector의 1값의 idx에 해당되는` row가 결과가 된다.