4기(20200711)/데이콘

3주차 - 모델 정하기(RNN, LSTM)

KAU-Deeperent 2020. 8. 8. 21:01

작성자 : 윤나라

 

<이번주 회의 내용>

- 데이터 분석한 내용을 바탕으로 어떤 기법을 적용했을때 정함

- 프로세스에 흐름이 있고, time step이 있으므로 RNN, LSTM 등 타임 시리즈를 쓰는것이 좋겠다고 정함.

- 이번주 신입기수 강의에 RNN이 있으므로 LSTM 위주로 스터디

 

 

 

  • RNN의 한계

보통의 인공 신경망과 마찬가지로 Vanishing과 Exploding 문제가 존재한다. 손실값을 구하고, 역전파를 이용해 가중치를 업데이트 하려고 할 때 Chain Rule이 이용됩니다.

위와 같은 식이 나오는데, 만약 데이터의 길이나 시퀀스가 길다면 곱해지는 그래디언트들의 값은 많아질것입니다. 각 값들이 1보다 작다면 0으로 수렴하여 Vanishing이 발생하고, 1보다 크다면 무한대로 발산하는 Exploding 문제가 생길것입니다. 

조금 더 직관적으로 보자면, 이렇게 여러개의 문장으로 구성된 긴 문장에서, 과연 John이라는 정보를 기억해서 빈칸에 he가 나오도록 할 수 있느냐가 RNN이 가진 문제입니다.

 

 

 

 

  • LSTM

기존에 RNN의 hidden state에 Memory cell을 추가한 것입니다. 메모리셀은 이전 상태를 얼마나 기억하고 얼마나 잊을지를 결정해줍니다.

LSTM의 구조에서 조금더 자세히 살펴보면

우선 이전 히든 스테이트 h_(t-1)과 현재 입력값 x_t가 들어가면 가장 먼저 forget gate를 통과합니다

 

-> forget gate

: 과거 정보를 얼마만큼 잊을지 정해주는 게이트로, h_(t-1)과 x_t를 입력 받아 sigmoid를 취했습니다. 출력범위가 0~1이므로 만약 0.3이라면 이전 메모리셀 c_(t-1)의 정보를 30퍼센트만 기억하라는 것입니다.

 

-> input gate

: 현재 정보를 기억하기 위한 게이트입니다. 마찬가지로 h_(t-1)과 x_t를 입력받아 각각 sigmoid와 tanh를 취한다음 요소별 곱셈을 취해줍니다.

 

 

그 후 현재 cell의 상태값을 새롭게 업데이트 해주는데, forget gate 값에 이전 cell state값을 곱하고, input gate의 값을 더합니다.

 현재 cell state값에 tanh를 취하고, 원래 RNN의 출력값을 곱하여 계산합니다.