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 |