기존 RNN의 경우 계산식과 모델

기울기 소멸 문제
RNN을 N번 연결한 경우

위와 같이 tanh를 너무 여러번 곱하게 되고, 이로 인해 가중치 값이 너무 빠르게 0이 되는 기울기 소멸 문제가 발생한다.
-> LSTM과 GRU 이용
LSTM

Gate를 사용해서 데이터를 가공한다.

빨간색 데이터만 살리고 싶은 경우,
neural이 중요도를 계산하여 0~1사이값으로 나타난다. (gate coefficient)
그리고 이를 원래 데이터와 곱하면 중요한 데이터만 남고 다른 데이터는 거의 0이 된다.
-> gate coefficient를 어떻게 계산할 것인가?
Gate Coefficient

$g_t\cdot C_t$ 값을 통해 어떤 정보를 남기고 어떤 정보를 없앨지 선택할 수 있다.

LSTM은 Hidden State 뿐만 아니라 Cell State에서도 정보를 받는다.
LSTM의 동작 과정

$f_t$: 0~1사이의 벡터를 만든다.


이전 스텝에서 남길건 남기고 현재 단계에서 $C_t$를 만든다.
이전 스텝에서 $f_t$에 의해 남길 값은 남기고 없앨 값은 없앤다.
이번 스텝에서 $i_t$에 의해 남길 값은 남기고 없앨 값은 없앤다.
중요한 정보를 판단하는 것도 학습한다.
-> cell state 업데이트

output으로 내보낼 것만 가공하여 내보낸다.

그래서 어떻게 기울기 소멸 문제를 해결하는 가?
t시점에서 cell state에 기록된 정보가 만약 지워지지 않고 t+n에서 활용되었을 때 중간에 non-linear activation function을 거치지 않고 t+n 시점까지 흘러오기 때문에 기울기 소멸 문제를 상당히 해결할 수 있다.
standard RNN의 경우 time을 t+n까지 가려면 무조건 tanh를 통과해야 했는 데, LSTM의 경우 tanh를 통과하지 않고도 t+n까지 흘러 올 수 있다는 것이 다르다.
GRU
LSTM의 게이트가 너무 많아서 이를 줄이기 위해서 고안됨

$h_{t-1}$과 $h_t$를 이용해 무엇을 지울지 계산한다.


임시 $h_t$와 $h_{t-1}$의 가중치를 둔다.
그래서 어떻게 기울기 소멸 문제를 해결하는 가?
$h_{t-1}$ 라인이 tanh를 거치지 않고 전달될 수 있다.
-> 기울기 소멸 문제를 해결 가능
결국 tanh를 거치지 않고 값을 전달할 수 있는 channel을 만들어 기울기 소멸 문제를 해결할 수 있다.