RNNLM(RNN Language Model)
* RNN을 도입한 언어 모델을 RNNLM이라고 한다.
Teacher Forcing(교사 강요)
* RNNLM의 경우 모델 테스트시에 위와 같이 현재 time step의 입력을 집어넣으면 이전 time step의 hidden state까지 고려해 다음에 올 단어를 예측하는 과정을 거친다. 이 hidden state에는 모델이 예측한 단어(label, 즉 ground truth가 아니다)에 대한 정보가 들어있게 된다.
* 그렇다면 훈련 과정에서도 동일하게 모델이 예측한 단어의 정보를 hidden state에 담아 다음 단어의 예측을 실시할까? 아니다. 테스트는 모델의 성능을 검증하는 것이므로 예측한 단어를 가지고 다음 단어를 예측하게 되지만, 훈련은 그렇게 해서는 안된다. 훈련시에는 label에 대한 정보를 hidden state에 담아 전달해야 한다. 만약 모델이 예측한 단어를 사용하게 되면 예측이 어긋나서 점점 다음 시점들의 예측이 산으로 갈 수도 있지만, label을 사용하게 되면 적어도 예측이 어긋나도 다음 시점에 전달되는 hidden state, 정보 자체는 믿을만하다고 판단할 수 있기 때문이다.
RNNLM의 구조
* RNNLM은 위와 같이 4개의 층(Input layer, Embedding layer, Hidden Layer, Output layer)으로 구성되어 잇다.
* output layer의 activation function은 softmax를 사용한다. 이를 통해 출력된 벡터와 one-hot encoding된 정답 label을 사용해 loss를 계산한다. 이 때 loss function은 cross entropy를 사용하게 된다.
* embedding layer를 통과한 one-hot vector는 embedding vector로 변환된다. 그리고 hidden layer를 거쳐 output layer의 softmax 함수에 의해 0~1사이의 값을 원소로 가지는 vector가 출력된다. 더 자세한 계산 과정은 NNLM과 동일하니 이전 포스팅을 참고하길 바란다.
* bptt를 통해 update되는 가중치들은 기존 RNN의 $W_h, W_x, W_y$외에도 embedding vector를 생성하는 embedding matrix E가 추가된다.
참고자료
'Deep Learning > 자연어처리' 카테고리의 다른 글
LSTM을 사용하여 텍스트 생성하기 (0) | 2021.12.18 |
---|---|
RNN을 이용한 텍스트 생성 (0) | 2021.12.17 |
피드포워드 신경망 언어 모델(NNLM) (0) | 2021.12.16 |
Keras를 통한 SimpleRNN, LSTM 출력값의 이해 (0) | 2021.12.16 |
LSTM, GRU (0) | 2021.12.16 |