Stats & AI tech blog - '일단 시도함'
[ML/DL] LSTM, Long Short Term Memory (장단기 기억 신경망) 본문
[ML/DL] LSTM, Long Short Term Memory (장단기 기억 신경망)
justdoit ok? 2024. 5. 8. 13:36
LSTM, Long Short Term Memory (장단기 기억 신경망)
이전 포스팅에서 알아봤던 순환신경망(RNN)은 시계열 데이터를 다루는데 특화된 모델이지만 단점이 존재한다.
시계열의 시점이 길어질수록 기울기 소실 문제에 취약해진다는 것인데, 이런 경우 시점의 간격이 클수록 앞의 정보가 이후 시점으로 충분히 전달되지 않을 수 있다.
이런 순환신경망의 단점을 보완하기 위해 제시된 신경망이 장단기 기억 신경망(LSTM) 이다.
LSTM은 순환신경망의 한 종류로, 정보의 기억과 망각을 적절히 제어할 수 있도록 cell의 구조를 변형한 신경망이다.
1. LSTM의 Gate
먼저 일반적인 순환신경망의 문제가 왜 발생하는지 알아보겠다.
첫 번째 시점의 input(x1)으로 파란 물감을 입력하고 이후 두 번째 시점부터는 input(x2~)으로 회색물감을 입력한다.
첫 번째 시점의 파란 물감은 시점을 지날수록 이후 시점의 회색 물감과 희석되어 점점 소실될 것이다. 시점이 충분히 긴 상황에서는 파란 물감에 대한 정보가 거의 없어지는데, 이렇게 시점을 지나면서 정보가 소실되는 것이 기본 순환신경망의 단점이다.
장단기 기억 신경망(LSTM)에서는 전달되는 정보의 양을 조절하기 위해 아래 3종류의 Gate를 사용한다.
1) 입력 게이트(input gate) : cell 내부로 입력되는 정보 흐름을 조절
2) 망각 게이트(forget gate) : cell 내부 정보의 망각 정도를 결정
3) 출력 게이트(output gate) : cell 외부로 출력되는 정보의 흐름을 조절
이런 Gate들이 포함된 Cell은 기억 블록(Memory Block)이라고 부른다.
기억 블록에서 각각의 Gate는 Cell 내부에 존재하는 일종의 하부 Cell로 생각할 수 있는데, 그 이유는 RNN에서 Cell들이 일정한 가중치를 가지고 출력을 생성하는 것처럼 Gate들도 자체적인 가중치를 가지고 출력을 생성하기 때문이다.
하지만 기존 Cell과의 다른 점은 Gate의 출력값은 0과 1사이의 실수이기 때문에 가중치는 Gate의 개폐 정도만을 결정한다는 것이다. Gate는 0에서 1사이 값을 출력하기 위해 활성화 함수로 Sigmoid 함수를 사용하고, 가중치는 신경망 전체의 학습을 통해 동시에 학습된다.
2. LSTM 신경망의 동작
1) 입력단 $g$
먼저 기본 순환신경망과 유사하게,
현재 시점 $t$에서 cell에 입력되는 $x^{(t)}$와 $h^{(t-1)}$을 가중치와 곱한 뒤, 활성화 함수(hyperbolic tangent)로 연산한 값 $g$를 구한다.
2) input gate
입력단 $g$를 구했다면 각각의 gate를 통과하게 되고, 첫 번째로 input gate를 통과한다.
기억 블록 내부에서 $g$는 input gate ($i$)를 만나 곱해지고, $i$의 값은 0과 1사이의 실수값이니까 입력단$g$를 어느정도 개폐할지 결정한다. 이 과정은 행렬의 연산이니 $g \odot i$라고 표현하겠다.
3) forget gate
$g \odot i$를 구했다면 이제 망각 게이트를 통과한다.
망각 게이트에서 $g \odot i$는 $f \odot S^{(t-1)}$과 더해지게 되는데, 이 때 $S$는 LSTM 신경망 구조에서 cell의 상태로 정의된 값이다.
$S$는 다른 기억블록이나 출력으로 전달되는 것이 아니라 다음 시점의 동일한 기억블록으로만 순환 전달된다.
즉, $f \odot S^{(t-1)}$는 이전 시점 cell의 정보를 얼마나 망각할 것인가를 의미한다.
4) output gate
앞의 과정을 통해 현재 시점 t에서 cell의 상태를 나타내는 $S(t)$를 구했다.
$$S^{(t)} = f \odot S^{(t-1)} + g \odot i$$
출력 게이트에서 $S(t)$는 활성화 함수(hyperbolic tangent)를 거치고 $o$와 곱해져서 최종적으로 현재 시점의 출력 $h$가 된다.
$$h^{(t)} = f_{tanh}(S^{(t)}) \odot o$$
여기까지 LSTM 신경망의 동작 과정을 알아보았다.
중요한 점은 기억 블록 외부 구조에서 정보 전달은 기본 순환신경망과 동일하게 입력 $x$와 출력 $h$가 관여하지만,
내부 구조에서 전달되는 순환 정보에는 $h$뿐만 아니라 cell의 상태를 나타내는 $S$가 있다는 것이다.
$S$는 $h$와의 정보 교환을 통해 계산되고 다음 각 시점에서 출력의 민감도를 결정하는 정보를 전달하는 역할을 한다.
* Reference
- 인공지능, 보건의료 전문가를 위한 길라잡이
'Statistics & AI > Deep Learning' 카테고리의 다른 글
[ML/DL] GAN, Generative Adversarial Network (적대적 생성 신경망) (1) | 2024.05.13 |
---|---|
[ML/DL] RNN, Recurrent Neural Network (순환신경망) (1) | 2024.05.07 |
[ML/DL] Mixed Precision Training (혼합 정밀도 훈련) (0) | 2024.05.03 |
[ML/DL] 딥러닝 최신 연구 동향 및 모델 참고 사이트 (0) | 2024.04.15 |
[ML/DL] CNN, Convolutional Neural Network (컨볼루션 신경망) (0) | 2024.04.05 |