NN 언어 모델(Recurrent Neural Network Language Model, RNNLM)
2020/03/05 - [machine_learning/natural language] - 자연어처리 : 언어모델 : N-gram
gram은 N개의 단어들만 생각을 하게되고, 문맥을 파악하지 못한다는 단점이 존재한다.
하지만 RNN은 sequence를 다루기 쉽고, time step이라는 시점이 존재하기에 앞, 뒤 간에 관계를 파악하기 용이하다.
이처럼 RNN으로 만든 언어 모델을 RNNLM(Recurrent Neural Network Language Model)이라고 합니다.
RNNLM의 학습과정
예문 : "what will the fat cat sit on"
RNNLM은 기본적으로 예측 과정에서 이전 시점의 출력을 현재 시점의 입력으로 합니다.
훈련 과정에서는 이전 시점의 예측 결과를 다음 시점의 입력으로 넣으면서 예측하는 것이 아니라,
what will the fat cat sit on라는 훈련 샘플이 있다면, what will the fat cat sit 시퀀스를 모델의 입력으로 넣고,
will the fat cat sit on를 y값으로 둘어 이를 예측하도록 훈련됩니다.
RNNLM은 what을 입력받으면, will을 예측하고 이 will은 다음 시점의 입력이 되어 the를 예측합니다.
결과적으로 세번째 시점에서 fat은 앞서 나온 what, will, the라는 시퀀스로 인해 결정된 단어이며,
네번째 시점의 cat은 앞서 나온 what, will, the, fat이라는 시퀀스로 인해 결정된 단어입니다
교사 강요(teacher forcing)
교사 강요(teacher forcing)란, 테스트 과정에서 t 시점의 출력, y값이 t+1 시점의 입력, x로 사용되는 RNN 모델을 훈련시킬 때 사용하는 훈련 기법입니다.
훈련할 때 교사 강요를 사용할 경우, 모델이 t 시점에서 예측한 값을 t+1 시점에 입력으로 사용하지 않고, t 시점의 레이블. 즉, 실제 알고있는 정답을 t+1 시점의 입력으로 사용합니다.
교사 강요를 쓰는 이유
물론, 훈련 과정에서도 이전 시점의 출력을 다음 시점의 입력으로 사용하면서 훈련 시킬 수도 있지만 이는 한 번 잘못 예측하면 뒤에서의 예측까지 영향을 미쳐 훈련 시간이 느려지게 되므로 교사 강요를 사용하여 RNN을 좀 더 빠르고 효과적으로 훈련시킬 수 있습니다.
예측값은 cell에서 ht가 나오면
Wy (Dense) * ht = yt -> softmax(yt) 를 진행한다.
모델이 예측한 값과 실제 레이블과의 오차를 계산하기 위해서 손실 함수로 크로스 엔트로피 함수를 사용합니다.
RNNLM의 구조
- 입력층(input layer) : RNNLM의 현 시점(timestep)은 4로 가정합니다. 그래서 4번째 입력 단어인 fat의 원-핫 벡터가 입력이 됩니다.
- 임베딩 벡터를 얻는 투사층을 임베딩층(embedding layer) : 현 시점의 입력 단어의 원-핫 벡터 xt를 입력 받은 RNNLM이 임베딩 층을 지난다.그리고 이 임베딩 행렬은 역전파 과정에서 다른 가중치들과 함께 학습됩니다.
- 은닉층 : ht=tanh(Wxet+Whht−1+b)
- 출력층(Output layer) : cat의 원-핫 벡터는 출력층에서 모델이 예측한 값의 오차를 구하기 위해 사용될 예정입니다. 그리고 이 오차로부터 손실 함수를 사용해 인공 신경망이 학습을 하게 됩니다. 조금 더 구체적으로 살펴보겠습니다.
'AI' 카테고리의 다른 글
자연어처리 : Word Embedding (0) | 2020.03.12 |
---|---|
DL : Keras Sequential method 정리 (0) | 2020.03.11 |
DL : RNN : GRU (Gated Recurrent Unit) (0) | 2020.03.10 |
DL : RNN : LSTM (Long-Short-Term Memory) (0) | 2020.03.10 |
DL : RNN (Recurrent Neural Network) (0) | 2020.03.10 |
댓글