4주차 RNN 정리

kimkihoon·2022년 2월 10일
0

부스트캠프 AI

목록 보기
10/49

RNN

Sequential Model

Sequential model의 종류

one to many

Image Captioning : 이미지 데이터에서 글을 출력하는 것
Language model

many to one

텍스트에서 감정이 긍정적인지 부정적인지 분류하기
시계열 예측(ex: 지역의 최근 날씨가 주어졌을 때 향후 날씨 예측)

many to many

Name entity recognition : Text에서 언급된 사람,회사,장소 등의 개체를 인식하여 출력
Video classification on frame level : 영상별로 예측, 현재의 프레임과 더불어 전의 프레임 모두를 고려한 출력

Naive sequence model


주식이나 언어 영상 등과 같이 고정된 차원의 데이터가 아닌 시간에 따라 데이터가 입력이 되는 시계열 데이터를 Sequential Data라고 하고 이에 동작하는 모델을 Sequential Model이라고 한다. 언어의 경우 첫 번째부터 n번째 등장하는 단어들을 모두 고려해줘야 하기 때문에 시간이 지남에 따라 고려해줘야하는 데이터의 개수가 계속 늘어나게 된다.

Auto regressive model


위의 방법과는 다르게 과거의 n개의 데이터만 고려하는 것을 Auto regressive model이라고 한다.

Markov model


이 모델은 현재의 값은 직전 한개의 데이터에만 영향을 받는다는 가정을 한다. 대신 하나의 데이터만을 이용하기 때문에 많은 정보를 이용할 수 없다는 단점이 있다.

Latent autoregressive model


중간에 Hidden state가 들어가는데 이것이 하는 역할은 과거 데이터의 정보를 summary하는 것이다.

Recurrent Neural Network

RNN 과정

Input
Sequence data 정보는 벡터로 표현되어 model에 input된다. Text의 경우에는 vector로 표현하기 위해 word embedding이라는 작업이 진행된다.

State
input인 벡터는 순서에 따라 순환신경망의 상태(state)에 저장된다. 이 때 state는 함수로 변형될 수 있다. 정리하면 함수 f는 파라미터 W와 이전 상태, input으로 구성되어 있다.

Update
가중치 W가 갱신되면서 update 한다.

Output
매 시간마다 새로운 출력값이 들어오면서 다른 반응 결과를 출력한다. 이를 통해 다른 시간에 다른 예측을 하는 것을 원하게 된다.

RNN 특이사항

Fully Connected Layer, CNN 등의 작동 방식을 보면 layer의 값들이 다음 layer를 지나면서 연산을 한다. 어떤 layer에 input이 된 정보가 있다면 그 layer의 output 계산에만 관여하지 input들 사이에 연산은 따로 하지 않는다. 반면 RNN은 특정 layer에 input된 값들이 output 계산에 영향을 주면서 input들 간의 계산에도 영향을 준다. 그리고 매 시간마다 동일한 function과 동일한 parameter를 사용해야 한다. 그렇기 때문에 input, output 크기에 영향받지 않고 무관하게 적용이 가능하게 된다.

초록 부분을 state라고 부른다. t번째 input x의 hidden state h를 계산할 때에 t-1번째 hidden state값이 영향을 미치고 t번째 hidden state값을 통해 t번째 output을 출력을 한다.

RNN 단점

위 그림에서 확인할 수 있듯 t 시점의 hidden state를 계산하기 위해서는 t-1시점의 hidden state를 계산해야 한다. RNN은 하나의 layer를 계산하기 위해서 hidden state가 t개 만큼 순차적으로 계산이 되어야 한다. 그렇기 때문에 기본적으로 아주 느리다.

또 다른 단점으로 vanishing gradient 문제이다. layer가 깊어질 수록 vanishing gradient 문제가 일어날 확률이 높아진다. 예를들어 128번째 hidden state를 계산한다고 할 때 1번째 hidden state 값을 계산하는 것 까지 올라가게 된다. 128개의 layer를 거슬러 올라가니까 gradient가 점점 줄어들고 vanishing gradient가 발생한다.

Short-term dependencies


RNN 자체는 과거의 모든 정보들이 미래까지 살아남기 힘든 것을 의미한다. 그렇기 때문에 현재의 몇 개의 전 데이터는 잘 고려되는 반면 한 참 멀리있는 데이터를 고려하기 힘들다.

Long Short-term Memory


기존 x가 A의 구조를 통과해서 다음번 A로 들어가는 RNN 구조를 나타낸 그림이다. 여기서 A구조에서 weight와 계산이 되고 tanh라는 활성화 함수와도 계산이 된다.

RNN을 개선한 LSTM의 구조이다. LSTM은 이전 단계의 정보를 memory cell에 저장하여 흘려보내는 것이다. 현 시점의 정보를 바탕으로 과거의 정보를 얼마나 잊을지 곱해주고 그 결과에 현재의 정보를 더해서 다음 시점으로 정보를 전달한다.

Forget Gate


과거의 정보를 얼마나 잊을지 결정하는 게이트로 현 시점의 정보와 과거의 은닉층의 값에 각각 가중치 W를 곱하여 더한 후 sigmoid 함수를 적용하여 그 출력값을 직전 시점의 cell에 곱해준다. sigmoid 함수는 0~1 사이의 값을 갖는데 0에 가깝다면 과거의 정보를 많이 잃고 1에 가깝다면 정보를 많이 활용한다.

Input Gate


현 시점의 정보를 셀에 입력할 크기를 정해주는 입력게이트이다. 현 시점이 실제로 갖고 있는 정보가 얼마나 중요한지를 반영하여 cell에 기록한다.

Update cell


Forget Gate와 Input Gate를 활용하여 memory cell에 올리는 gate이다.
먼저 과거의 정보를 Forget gate에서 계산된 것만큼 반영하고 현 시점의 정보 후보에 입력게이트의 중요도를 곱해준 것을 현 시점 기준 memory cell을 계산한다.

Output Gate


현시점의 은닉층 값으로 출력할 양을 결정하는 출력게이트이다.

LSTM 요약

기존의 정보를 얼마나 잊을 것인지
새로운 정보를 얼마나 기억할 것인지
기존의 정보를 얼만큼 잊고 새로운 정보로 얼마나 대체할 것인지
memory cell은 기억만 한다. 최종 memory cell을 받아서 조정을 해서 hidden state로 출력을 해야 의미를 가진다.

0개의 댓글