데이터과학 삼학년

Sequence Model (RNN, LSTM) 본문

Machine Learning

Sequence Model (RNN, LSTM)

Dan-k 2020. 6. 2. 14:50
반응형

Working with Sequence Model

- sequence는 시계열적인 특성을 가짐

  > time에 따라 변해가는 양상을 모델에 표현할 수 있음

- 자연어 처리도 마찬가지로 단어의 순서에 따라 영향을 미치기 때문에 적용할 필요 있음

- 이미지 모델에서는 sequence를 어떻게 적용할까?

  > 동영상과 같은 움직임이 들어가 있는 이미지의 경우 적용 가능

- 시퀀스 모델의 타입은 3가지로 볼수 있음

  > one to sequence

  > sequence to one

  > sequence to sequence

- 번역의 문제의 경우, sequence to sequence 로 볼 수 있음

  > 번역할 것의 사이즈가 정해져서 사이즈만큼 변환

- 이미지 captioning 경우, one to sequence  인풋이 하나의 이미지가 들어가고 레이블은 길이를 가짐

- 이메일의 경우, sequence to one 모델을 가짐

- 시퀀스 모델을 할때는 sliding window를 얼마나 가져갈지를 결정하는 것이 중요

  > preprocess할때 1시간 단위? 1일 단위?, 1주일 단위? 로 할지 결정

- 자기상관성(autocorrelation)을 이용하여 이것이 sequence 모델에 적용할 만한 피처인지 결정

- benchmark (baseline)를 가지고 모델을 구성하는 것이 좋음

>> 결국 들어가는 인풋의 형태가 시계열인지 아닌지가 중요!

 

Sequences models

- Recurrent Neural Networks

- Gated Recurrent Unit

- 적절한 time lag를 찾는 것은 데이터의 형태에 의존적임

  > 얼마나 다음을 예측할 수 있는 것인지

  > 샘플 데이터 셋을 이용하여 실험을 해보면서 찾아가는 것이 일반적인 형태

- RNN은 timeseries 데이터의 성격을 받아들일 수 있도록 구성되어 있음

  > 이전의 상태를 고려하면서 예측할 수 있도록

  > unrolling 같은 셀을 반복하는 것인데 펴놓는 형태로 표현한 것

    : 동일한 가중치를 학습시키는 것

 

출처 : http://dprogrammer.org/rnn-lstm-gru

  

Recurrent Neural Networks

- 이전 데이터의 모델 통과 아웃풋을 함께 다시 활성화 함수에 통과시키는 것

- shape 비교 : ht = batchsize * neuron 수

                                xt  = batchsize * feature 수(input 수)

                                wx = feature 수 * neuron 수

                                wh = neuron수 *  neuron 수

                                 b   = 1 * neuron 수

- tanh 함수가 사용되는 이유 : -1 ~ +1 → That's why tanh is used to determine candidate values to get added to the internal state.

- negative~positive 사이의 value를 갖는 다른 function을 적용하면 안되나?

  > 될거 같긴 한데 tanh function을 가장 일반적으로 사용함

- rnn의 구조 : 보통 하나의 layer(input과 cell이 합쳐진)가 tanh layer를 거쳐 나간다고 생각하면 됨

- state : 마지막 모든 cell을 지난 마지막 output을 의미(H5)

  > 위 그림은 한개의 layer를 가진 rnn 을 말하는 것(cell size = neuron수)



Dealing with long sequences

- RNN은 긴 시퀀스의 문장을 다룰때 학습시키기가 힘듦 → 이것을 Long term dependancies 라고 함

- 이런 문제를 해결하기 위해 나온 것이 LSTM(Long-Short Term Memory)

  > 정보를 컨트롤하는 방법

 

Long-Short Term Memory

- 컨베이어 벨트(Ct)에서 얼마나 keep할지 결정(0~1) → ft : forget gate

- 셀스테이트에서 얼마나 keep할지 결정 it : input gate

- 셀스테이트 중에서 얼마나 많이 아웃풋으로 전달하냐 Ot : output gate   (⊙ : 행렬곱(내적))

- 각 vector size 비교

- sequence 모델을 적용할때, 데이터셋을 shuffle 하면 안되는 것 아닌가? 왜냐면 shuffle을 하면 sequence의 성격을 잃게 되지 않나?

  > shuffle을 할때 어차피 통(단락)으로 오기 때문에 상관없어

- advanced RNN : multiRNNCell 호출로 layer를 늘리는 케이스

 

- improving loss function

 

728x90
반응형
LIST
Comments