본문 바로가기
기계학습/자연어 처리 머신러닝

RNN 언어모델 - 딥러닝을 이용한 자연어처리 입문

by tryotto 2020. 1. 28.

# RNNLM  vs.  n-gram, NNLM



- n-gram, NNLM : 고정된 갯수의 단어만큼을 입력으로 받는다


- RNNLN : 반드시 고정된 갯수일 필요가 없다





# RNNLM 의 훈련 과정


- "교사 강요" 기법의 사용 (teacher forcing)

   > RNN 의 기본 원칙인, "현재의 출력값을 다음 상태 값으로 전달한다" 방식을 훈련 과정에선 하지 않는다

      (훈련이 다 끝난, 테스트 과정에서만 은닉 상태를 전달함)

   > 실제 훈련 과정에서는, (현재의 입력값) + (실제 정답 값) 두 가지만 이용해서 훈련한다.

> 즉, t 시점의 실제 정답값을 t+1 시점의 입력값으로 전달한다. ( 출력값 전달 X )

   > Why? : 오류 발생 가능성 많음, 시간이 오래 걸림


- 여태껏 봐왔던 대부분의 RNN 도식들이 모두 교사 강요 기법을 사용했다.

  출력값을 다음 은닉층의 입력값으로 사용한 경우에 대한 도식은 거의 없었음

> 여기서, "출력값"과 "은닉상태"는 다른 값이다

- 출력값 (y 값) : 은닉상태의 값을 활성화 함수에 넣어서, 특정 label 로 결괏값을 냄 (원핫벡터 이용)

- 은닉상태 (h 값) : 활성화 함수 넣지 않음. 그대로 결괏값을 다음 은닉층으로 전달함.


- 인풋 값의 전처리 : embedding 과정을 거쳐야 한다 -> 이 값을 은닉층에 대입

> 임베딩을 위해 word2vec 같은 방식을 사용

> look up table 에 대한 추가적인 공부 필요 (NNLM 단원에 등장)


- 학습을 위한 손실 함수 : 

> 은닉층의 예측 값을 실제 label 값과 비교한다

>이때 예측값 계산을 위해 softmax 함수를 사용함 (확률처럼 표현하기 위함)

> cross entropy를 사용해서 오차 값을 계산, 이 값에 따라 매개변수를 수정한다.