본문 바로가기

AI,ML

NLP - [2] Language Model, RNN - (2)

Recap:Fixed-window neural language model's Improvement & problems

지난글에는 n-gram의 모델과 가장 기초적인 인공신경망 모델을 살펴보았다. 

n-gram은 확률적 근사를 이용한 방법으로 간단하나, sparsity, storage problem이 있었다.

이에 가장 간단한 인공 신경망을 이용한 모델인 fixed-window neural language model을 살펴보았는데 n-gram의 sparsity, storage problem은 해결되었으나 아직 window size가 충분히 커질 수 없고 단어를 행렬곱할 때 No symmetry 하다는 문제점이 있었다.

Recurrent Neural Netowork(RNN)

fixed window nerual language은 긴문장에 대해서 고정된 윈도우 사이즈로 처리하고 그 이전의 값은 반영되지 않는다. 

우리는 이렇게 긴 문장에 대해서 어떤 길이의 문장이든 계속 유연하게 처리할 수 있으면 좋겠다.

 

강의에서는 이후 RNN을 소개한다.

RNN은 분류기 내부에 매번 계산하는데 쓰이는 hidden states라고 불리는 레이어를 이용한다.

Core idea는 같은 가중치값 $W$를 반복적으로 사용하는 것이라고 한다. 그렇기에 recurrent라는 이름이 붙었나보다.

그림으로 대략 어떤 구조인지 보는게 편할 것 같다.

 

RNN flow

RNN은 다음의 흐름을 가진다.

먼저 input vector를 구하는것이 1단계 이므로 단어를 임베딩하여 word vector를 얻는다.

 

이렇게 임베딩된 단어에서 hidden state를 얻기 위하여 임베딩된 단어에는 $W_e$를 이전 상태의 hidden state를 $W_h$로 연산하고 현재 step의 hidden state를 획득한다. 

강의에서는 최초의 hidden state $h^{(0)}$ 를 일관된 시작 상태를 얻기 위해 0 vector로 초기화 한다고 하는데 이건 찾아보니 그냥 사람에 따라 다르게 설정하면 될지도... 

아무튼 이렇게 hidden state를 얻으면 그 후에도 같은 과정을 반복해준다.

문장의 마지막까지 왔다면 이제 softmax와 추가적인 행렬곱 연산으로 다음 단어를 예측하는 과정을 거친다.

 

RNN advantages & disadvantage

RNN의 장단점은 위와 같다. 

이전의 input 크기에 따른 문제를 해소했지만 느리다거나 실제로는 긴 문장에 대해서 정보를 접근하기 어려운 문제가 있다.

RNN training 

 

 

'AI,ML' 카테고리의 다른 글

NLP - [3] LSTM RNN  (1) 2024.09.23
NLP - [2] Language Model, RNN - (3)  (0) 2024.07.21
NLP - [2] Language Model, RNN - (1)  (1) 2024.06.17
NLP - [2]Word Embedding  (0) 2024.03.29
NLP - [1]Introduction  (0) 2024.03.28