전 포스팅에서 RNN에 관한 기본적인 내용을 정리하고, 마지막에는 문제점까지 알아봤습니다.
https://kingnamji.tistory.com/26
이번에는 LSTM(long short-term memory)에 대해 정리해보겠습니다.
LSTM의 구조
아래의 그림은 RNN과 LSTM의 구조를 나타냅니다.
RNN은 하나의 hidden state만을 갖고있습니다.
LSTM은
1. RNN의 hidden state에 cell state가 추가됐습니다. ( hidden state = $h_t$, cell state = $c_t$ )
2. 3개의 게이트 구조, 입력 게이트(input gate, $i_t$), 망각 게이트(forget gate, $f_t$), 출력 게이트(output gate, $o_t$)가 추가됐습니다.
수식
LSTM의 수식을 보겠습니다.
$\sigma$는 시그모이드 함수를 나타냅니다.
$\odot$은 elementwise product를 뜻하는, 아다마르 곱(Hadamard product) 연산자입니다.
Forget Gate
forget gate, $f_t$ 는 과거의 정보를 잊기 위한 게이트입니다.
직전의 hidden state $h_{t-1}$과 입력 $x_t$를 입력 받고, 시그모이드 함수를 취해준 값이 forget gate의 출력입니다.
시그모이드 함수의 출력은 0~1로 값이 0에 가까울수록 이전 정보를 잊고, 1에 가까울 수록 이전 정보를 많이 기억합니다.
Input Gate
input gate는 현재의 정보를 기억하기 위한 게이트입니다.
위의 그림에서는 $h_{t-1}$과 $x_t$를 마찬가지로 입력받고 각각 시그모이드와 하이퍼볼릭탄젠트를 취해줍니다.
시그모이드의 출력 0~1 값은 input gate의 역할을, tanh의 출력 -1~1 값은 현재 cell state를 나타냅니다.
Cell State Update
Cell state의 update 과정입니다.
(1) 이전의 cell state 값과 얼마나 잊을지를 정해줄 forget gate의 출력값을 원소별 곱셈 연산
(2) 현재의 cell state 값과 얼마나 기억할지를 정해줄 input gate의 출력값을 원소별 곱셈 연산해 더한 값으로 update 됩니다.
Output Gate
output gate는 update된 cell state의 정보를 얼마나 다음 hidden state에 반영할지를 정해줍니다.
hidden state의 값은 tanh를 취한 cell state의 값과 얼마나 반영할지를 정해줄 output gate 출력 값의 원소별 곱셈으로 계산됩니다.
LSTM Network는 이렇게 정보를 얼마나 반영하고, 잊을지를 학습합니다.
구조나 수식이 RNN보다 복잡하고, 어렵지만 한번 이해해보시길 바랍니다.
읽어주셔서 감사합니다. ^^
[참고자료]
[1] http://colah.github.io/posts/2015-08-Understanding-LSTMs/
'머신러닝, 딥러닝 ML, DL > 이론' 카테고리의 다른 글
[Deep Learning] 어텐션 메커니즘 (Attention Mechanism) 아이디어 이해하기 (2) | 2021.08.31 |
---|---|
[Deep Learning] seq2seq (Encoder - Decoder) (0) | 2021.08.18 |
[Deep Learning] RNN 개념 정리 (0) | 2021.08.12 |
[Deep Learning] 10. CNN, 풀링 계층 (Pooling Layer) (0) | 2021.08.12 |
[Deep Learning] 9. CNN, 합성곱 계층, 패딩, 스트라이드 (2) | 2021.08.11 |