본문 바로가기
AI

자연어처리 : RNN의 언어 모델 (RNNLM)

by 월곡동로봇팔 2020. 3. 11.

NN 언어 모델(Recurrent Neural Network Language Model, RNNLM)

2020/03/05 - [machine_learning/natural language] - 자연어처리 : 언어모델 : N-gram

 

자연어처리 : 언어모델 : N-gram

정의 SLM의 일종이지만, 단어 고려를 모든 단어를 고려하는 것이 아닌, n개로 정한 갯수만 고려한다. 1. corpus에서 카운트하지 못하는 경우의 확률 감소 SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이..

mambo-coding-note.tistory.com

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

댓글