본문 바로가기

Deep Learning/자연어처리13

RNN 언어 모델(RNNLM) RNNLM(RNN Language Model) * RNN을 도입한 언어 모델을 RNNLM이라고 한다. Teacher Forcing(교사 강요) * RNNLM의 경우 모델 테스트시에 위와 같이 현재 time step의 입력을 집어넣으면 이전 time step의 hidden state까지 고려해 다음에 올 단어를 예측하는 과정을 거친다. 이 hidden state에는 모델이 예측한 단어(label, 즉 ground truth가 아니다)에 대한 정보가 들어있게 된다. * 그렇다면 훈련 과정에서도 동일하게 모델이 예측한 단어의 정보를 hidden state에 담아 다음 단어의 예측을 실시할까? 아니다. 테스트는 모델의 성능을 검증하는 것이므로 예측한 단어를 가지고 다음 단어를 예측하게 되지만, 훈련은 그렇게 해.. 2021. 12. 17.
피드포워드 신경망 언어 모델(NNLM) NNLM(Neural Network Language Model) N-gram 언어 모델의 한계 * n-gram 언어 모델은 corpus에 충분한 양의 문장이 존재해야 예측도가 높아진다. 단순히 corpus에 있는 유사 문장들의 출현 빈도를 통해 단어를 예측하기 때문이다. 이렇게 훈련에 충분한 양의 데이터가 선행되지 않으면 모델링이 정확하지 않게 되는 문제를 희소 문제(sparsity problem)라고 한다. * 예를 들자면 4 gram 모델에서 boy is spreading 다음의 단어를 예측한다고 했을 때 label이 smile임에도 불구하고 corpus에 boy is spreading smile이라는 문장이 없으면 절대로 smile이란 단어를 예측할 수가 없다. * 이렇게 학습한 문장만 예측할 수 .. 2021. 12. 16.
Keras를 통한 SimpleRNN, LSTM 출력값의 이해 임의의 입력 생성하기 import numpy as np import tensorflow as tf from tensorflow.keras.layers import SimpleRNN, LSTM, Bidirectional train_X = [[0.1, 4.2, 1.5, 1.1, 2.8], [1.0, 3.1, 2.5, 0.7, 1.1], [0.3, 2.1, 1.5, 2.1, 0.1], [2.2, 1.4, 0.5, 0.9, 1.1]] train_X=np.array(train_X, dtype=np.float32) train_X=train_X[np.newaxis, :] train_X # array([[[0.1, 4.2, 1.5, 1.1, 2.8], # [1. , 3.1, 2.5, 0.7, 1.1], # [0.3, .. 2021. 12. 16.
LSTM, GRU Vanilla RNN * Vanilla RNN은 장기의존성 문제(Problem of Long-Term dependencies)로 인해 긴 sequence의 data를 입력으로 받는 것이 권장되지 않는다. * 이는 RNN의 backpropagation과정인 BPTT에 대한 이해, gradient vanishing에 대한 이해가 선행되어야 하지만, 이번 포스팅에서는 이를 수식적으로 살펴보기 보다는 간단한 예시로 넘어가려고 한다(BPTT에 대한 포스팅은 추후에 올리겠다). * 예를 들어 긴 sequence, 100단어로 구성된 문장의 마지막 단어를 예측하는 모델의 경우를 살펴보자. 마지막 단어를 유추하기 위해서는 hidden state를 통해 전달되어 온 이전 정보들을 통해 문장에 대한 맥락을 파악하게 될 것.. 2021. 12. 16.