LSTM & GRU
순환 신경망(Recurrent Neural Network, RNN)
RNN은 위 그림의 A와 같이 입력층과 출력층 사이에 있는 은닉층의 정보(가중치 등)를 다음 단계로 넘겨 공유함
즉, 이전에서 받은 정보 A에 새로운 입력값이 더해져 A가 계속 업데이트되어 다음으로 전달되는 구조
문제점은 가중치w가 n번 업데이트된다는 것은 w의 n제곱으로 계산되는 값.
즉, 가중치가 양의 값이면 w의 n제곱은 거의 무한대로 커져 연산량이 많아지거나,
가중치가 음의 값이면 w의 n제곱은 0에 가까워져 학습 효과가 없어진다는 것. Vanishing 문제.
그래서 잘 쓰이지 않고, 이 문제에 대한 대안법이 있는 LSTM과 GRU를 사용
1. LSTM (1997)
LSTM은 RNN의 구조에서 가중치 연산이 일어나 전달하는 "A"를 단순 신경망이 아닌 모듈 구조로 바꾼 것.
즉, 가중치를 연산하고 전달하는 과정에서 쓸모없는 것은 0을 만들어 버리고, 의미있는 것만 전달하여 vanishing 문제 해결
Forget Gate에서는 앞블럭 연산값 (short-term memory)에 입력값 x가 연산되어 Sigmoid를 거친 후,
Cell State의 값 (long-tem memory)과 연산되어 값을 취할 지 버릴 지 결정함.
그림의 예처럼, 입력값이 양수인 경우 Sigmoid를 통과한 값이 유의미하여 전달하고,
입력값이 음수이면 Sigmoid를 통과하고 0이 되어 망각(forget)하는 구조
Input Gate는 두 파트의 연산 구조로 되어 있음
오른쪽에서는 이전 블록의 shirt-term memory에서 넘겨받은 값과 input 값을 결합함
왼쪽에서는 오른쪽에서 연산한 값(potential memory)의 몇 퍼센트를 cell state의 long-term memory와 더할 것인지 결정
이렇게 더해진 값이 새로운 long-tetm memory 값이 됨
즉, LSTM 모듈 내 GATE 연산에서,
memory 값 자체는 tanh를 통과시켜 결정하고,
이 값을 얼마나 반영할 건지에 대해서 Sigmoid를 통과시킴.
Output Gate 역시 potentail short-term memory 부분과 new short-term memory 연산 부분으로 되어 있음
potential short-term memory는 앞서 계산된 cell state의 long-term memory로 얻은 값에 tanh를 통과시켜 얻음
이 값을 얼만큼 short-term memory에 반영할 것인지를 전달받은 short-trm memory의 값과 input값을 결합하여 얻음
sigmoid를 통과한 값의 반영분을 potential 값과 곱하여 새로운 short-term memory값을 얻음
이 값이 이 모듈의 output이면서 다음 hidden state에 넘겨줄 short-term memory값이 됨
2. GRU (2014)
GRU는 LSTM의 간소화 버전임 (그림으로만 봐도 sigmoid 하나 줄고 연산도 하나 줄었음)
가운데 Z(t)를 통해 forget gate (정보 보존 or 버림)와 input gate 둘을 동시에 제어 (보존=input 닫힘, 버림=input 열림)
r(t)를 통해 h의 출력을 제어함으로써 LSTM에 있던 output gate를 없앰
즉,
RNN: 이전 정보의 축적으로 계산량이 점점 많아져 아주 큰 수가 되거나 0이 되는 vanishing 문제 심함
LSTM: 취하고 버릴 정보를 선별함으로써 vanishing 문제 해결
GRU: LSTM의 파라미터를 줄여 좀 더 간소하게 함
Reference
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
Understanding LSTM Networks -- colah's blog
Posted on August 27, 2015 <!-- by colah --> Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and start thinking
colah.github.io
StatQuest