본문 바로가기
  • 공부 기록 인생 기록
Python/NLP

RNN 언어 모델(RNNLM)

by 티권 2023. 3. 19.

피드 포워드 신경망 언어 모델(NNLM) (tistory.com)

 

피드 포워드 신경망 언어 모델(NNLM)

피드 포워드 신경망 언어 모델(Feed Forward Neural Network Language Model) - 신경망 언어 모델의 시초 피드 포워드 신경망(FFNN) - 오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망 기존 N-gram 언어

tgwon.tistory.com

순환 신경망(RNN) (tistory.com)

 

순환 신경망(RNN)

RNN RNN(Recurrent Neural Network)이란? - 입력과 출력을 시퀀스 단위로 처리하는 시퀀스 모델 - 가장 기본적인 인공신경망 시퀀스 모델 시퀀스 모델이란?? - 연속적인 입력으로 부터 연속적인 출력을 생

tgwon.tistory.com

 

 n-gram 언어 모델과 NNLM의 한계

- 다음 단어 예측을 위해 정해진 n개의 단어만 참고했음, 고정된 개수의 단어만을 입력으로 받아야한다는 단점

-> RNNLM은 이 한계를 극복, 입력의 길이를 고정할 필요 X


RNNLM

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

 

 

위 그림은 'what will the fat cat sit on'  라는 문장이 훈련 코퍼스에 있을 때,

RNNLM이 이전 시점의 단어들과 현재 시점의 단어로 다음 단어를 예측하는 모습

 

 

RNNLM 테스트 (실제 사용할 때)

-> RNNLM은 예측 과정에서 이전 시점의 출력을 현재 시점의 입력으로 사용

ex) what을 입력받으면, will을 예측하고 이 will은 다음 시점의 입력이 되어 the를 예측, the는 또 다시 다음 시점의 입력이 되어 fat을 예측

..

..

결과적으로 네번째 시점의 cat은 앞서 나온 what, will, the, fat이라는 시퀀스로 인해 결정된 단어

 

보통 RNN은 t-1 시점에서의 출력 값을 t 시점의 입력값으로 사용한다

 

 

RNNLM 훈련

- 테스트 과정과 다름. 이전 시점의 예측 결과를 다음 시점의 입력으로 사용하는 것이 아님

ex)

훈련 코퍼스 what will the fat cat sit on 가 있다면,

모델의 입력이 what will the fat cat sit 일 때,

모델이 will the fat cat sit on 을 예측하도록 훈련 시킴

각 시점의 레이블 : will, the, fat, cat, sit, on

 

각 시점의 입력과 레이블(x,y)

(what, will)

(will, the)

...

(sit, on)

 

즉, t 시점의 레이블을 t+1 시점의 입력으로 사용

 

-> 사 강요(teacher forcing)

- 테스트 과정에서 t 시점의 출력이 t+1 시점의 입력으로 사용되는 RNN 모델을 훈련시킬 때 사용하는 훈련 기법

- t 시점에서 예측한 값을 t+1 시점에 입력으로 사용하지 않고, t 시점의 레이블(실제값)을 t+1 시점의 입력으로 사용

 

왜 이렇게 할까?

- t 시점의 예측값이 실제값과 다를 수 있음

- 한 번 잘못 예측하면 뒤에서의 예측까지 영향을 미쳐 훈련시간이 느려지게 됨

 

정확한 데이터로 훈련하기 위해서 예측값을 다음 시점으로 넘기지 않고, 실제값을 매번 입력값으로 사용함

RNN을 좀 더 빠르고 높은 성능이 되게끔 훈련시킬 수 있음

 

RNNLM 훈련 과정

 


RNNLM 구조

 

Input layer

- t 시점의 단어의 원 핫 벡터가 들어옴

 

Embedding layer 

- NNLM 에서 언급한 투사층(projection layer)

- 가중치 행렬 lookup table을 통해 임베딩 벡터로 변환

 

Hidden layer

- 임베딩 벡터를 이전 시점의 은닉 상태인 h(t−1)과 함께 다음의 연산을 하여 현재 시점의 은닉 상태 h(t)를 계산

- 아래 그림과 같은 계산을 통해 h(t)를 계산

 

Output layer

- 출력층에서는 아래 그림처럼 소프트맥스 함수를 통해 값을 출력

 

학습 되는 가중치는?

-> Wx, Wh, Wy,  lookup table을 수행하는 가중치 행렬

'Python > NLP' 카테고리의 다른 글

워드투벡터(Word2Vec)  (0) 2023.03.20
워드 임베딩이란  (0) 2023.03.20
순환 신경망(RNN)  (0) 2023.03.14
피드 포워드 신경망 언어 모델(NNLM)  (0) 2023.03.14
펄플렉서티(Perplexity, PPL)  (0) 2023.03.14