그림으로 보는 RNN/LSTM과 GRU 번역 및 정리

2020. 2. 7. 22:28nlp

반응형

https://towardsdatascience.com/illustrated-guide-to-recurrent-neural-networks-79e5eb8049c9

 

Illustrated Guide to Recurrent Neural Networks

Understanding the Intuition

towardsdatascience.com

 

 

 

 

RNN과 은닉상태 초기화 →  input 단어와 은닉상태를 RNN에 집어 넣기 → 그 단어의 output과 새로운 은닉상태가 출력됨 → 이 출력을 다시 RNN에 집어넣기 → 단어 없을 때까지 반복 → 출력을 FeedForward 레이어에 넣기 최종결과(prediction) 출력

 

 

 

은닉상태가 RNN의 기억장치 (저번 출력을 다음 입력으로 넘겨줌)

 

 

tanh 함수는 출력을 [-1,1] 사이로 만듦. 따라서 특정 값이 폭발적으로 증가하는 것을 막음.

 

 

(문제) Vanishing Gradient (short-term memory)

 

 

- 오래 전 정보는 덜 기억하고 최신 정보를 많이 기억함

- 이는 오차역전파back-propagation 때문

- 오차역전파로 gradient가 앞 레이어로 전해질수록 gradient는 급속도로 줄어듦 

- 따라서 맨 앞 레이어는 기울기 소실(거의 조정되지 않음), 따라서 가중치도 거의 조정되지 않아 학습 불가 

- "What time is it?"에 대한 최종 prediction을 할 때 "What"과 "time"은 거의 고려되지 않을 수도 있음

 

(보완) LSTM's and GRU's

- 단기기억을 보완하기 위한 방법 

- LSTM : Long Short-Term Memory 

- GRU : Gated Recuurent Units 

- 이들은 '게이트'를 이용해 장기기억 가능 

 

 

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

 

Illustrated Guide to LSTM’s and GRU’s: A step by step explanation

Hi and welcome to an Illustrated Guide to Long Short-Term Memory (LSTM) and Gated Recurrent Units (GRU). I’m Michael, and I’m a Machine…

towardsdatascience.com

 

 

LSTM

 

 

Cell State

- 메모리 같은 존재. 중요한 정보를 갖고 다님

- cell state가 흘러가면서 게이트를 통해 정보가 추가되거나 제거됨

- 게이트는 training을 통해 어떤 정보가 중요해서 keep해야 하고 어떤 정보는 버려도 되는지 학습함

 

Sigmoid

- 출력을 [0,1] 사이로 변환

- 출력을 0으로 만들어 정보를 까먹게 할 수 있음 

- 출력을 1로 만들면 정보를 keep

 

Gates : forget gate, input gate, output gate

 

Forget gate : 전 단계에서 온 중요한게 뭔지 결정하고 keep함

- 이전의 은닉 상태(hidden state) + 현재의 input data 가 합쳐져서 시그모이드 함수로 넘겨짐 

- 출력이 0에 가까우면 안 중요하니까 까먹어라, 1에 가까우면 중요하니 keep하라는 뜻 

 

 

Input gate : 현재 단계에서 온 중요한게 뭔지 결정하고 add함 

- 1) [이전 은닉상태] + [현재 input data] 를 시그모이드 함수에 넘겨줌 : 잊을지 말지 결정

- 2) [이전 은닉상태] + [현재 input data] 를 tanh 함수에 넘겨줌 : 출력을 [-1,1] 사이로 만들어 정규화

- 1)과 2)를 곱하기

- tanh에 모든 입력 정보가 있다면 시그모이드는 그 정보 중 중요한 것만 선별해줌 (안 중요하면 0으로 만들어 잊기)

 

 

Cell State 계산

- 기존 cell state * [forget gate output] + [input gate output] = new cell state 

 

 

 

Output gate : 새로운 은닉상태를 계산함

- 다음 은닉상태 계산 

- 1) [이전 은닉상태] + [현재 input data] 를 시그모이드 함수에 넘겨줌

- 2) new cell state를 tanh 함수에 넘겨줌 

- 1) 과 2)를 곱하여 새로운 은닉상태 만들기 

 

 

 

GRU

- LSTM의 cell state 대신 은닉 상태 사용 

- 2개의 게이트 : Reset gate, Update gate 

 

Update gate

- LSTM의 Forget/Input gate와 유사함 

- 어떤 정보를 버릴 지, 어떤 새 정보를 추가할지 결정

 

Reset gate 

- 과거 정보를 얼만큼 버릴지 결정

 

반응형