LSTM 이란? | RNN 기울기 소실 방지법

0
90

basic RNN에서는 기울기 소실이 일어납니다. 따라서 LSTM이라고 아예 알고리즘을 뜯어 고쳐서 이를 방지합니다. 한번 알아봅시다.

당연히 요즘은 RNN대신 LSTM이나 GRU를 주로 씁니다. RNN에 게이트라는 구조가 더해진 것 입니다. 시간적으로 멀리 떨어진 시계열 데이터간의 의존관계를 잘 학습할 수 없다는 단점을 해결했습니다.

RNN의 한계점 : 기울기소실, 기울기폭발

BPTT에서 기울기 소실, 기울기 폭발이 일어나서 RNN은 장기기억 학습이 어렵습니다.

기울기 폭발 방지법 : 기울기 클리핑

기울기 폭발 시 기울기를 줄여주는 로직을 추가합니다. 매우 간단한 식입니다.

위와 같은 로직입니다. g는 신경망의 모든 파라미터 기울기를 하나로 모은 것 입니다.

기울기 소실 방지법 : LSTM

이를 해결하려면 근본부터 뜯어 고쳐야 합니다. 이것이 LSTM입니다.

C라는 경로가 하나 추가되었다는 게 다릅니다. memory cell이라고 합니다.

C는 h처럼 출력되지 않습니다.

h는 c의 각원소에 tanh 함수를 적용한 것일 뿐 입니다.

위와 같이 어떤 계산들이 추가되는데, input 게이트, output 게이트, forget 게이트, new memory 게이트 등이 추가 됩니다.

input 게이트는 i, output 게이트는 o, forget 게이트는 f, new memory 게이트는 g로 도식화하면 아래와 같습니다.

LSTM는 어떻게 기울기 소실을 없애주는 걸까요?

LSTM의 역전파 흐름을 보면 위와 같습니다.

‘+’ 노드는 기울기를 그대로 흘리므로 기울기 감소가 일어나지 않고,

‘x’ 노드는 행렬곱이 아닌 원소별 곱 이므로, 곱셈이 누적되지 않아 기울기 소실이 일어나기 힘듭니다.

‘x’ 노드는 forget 게이트가 제어하는데, 잊어야하는 원소는 잊고, 잊지 말아야할 노드는 잊지 않아야 할 원소는 기울기가 약화되지 않기에 거리가 먼 데이터도 기울기 소실이 일어나지 않을 수 있습니다.

Leave a reply

Please enter your comment!
Please enter your name here