본문 바로가기
ML, DL/RNN

[RNN] LSTM이란?

by Wordbe 2019. 10. 25.
728x90

이글은 기계학습, 오일석 저 책을 보고 공부한 내용을 기록한 것입니다.

RNN 모델 중 하나인 LSTM을 배워봅니다.

4. LSTM

LSTM(Long short term memory)(Hochretier, 1997)은 여러 종류의 게이트가 있어 입력을 선별적으로 허용하고, 계산 결과를 선별적으로 출력할 수 있다.

GRU(Gated recurrent unit)은 성능 저하를 최소로 유지하면서 LSTM을 단순화한 모델이다.(Chung, 2014)

4.1) 게이트 이용한 영향력 범위 확장

LSTM의 핵심 아이디어는 게이트를 열고 닫는 것이다.

게이트는 0.0~1.0사이의 실숫값을 가지고 개폐 정도를 조절한다. 언제 얼마만큼 여닫을지는 학습으로 알아낸다.

구조는 RNN의 은닉층에 메모리블록을 배치한 것이다.이 메모리 블록에는 입력 게이트와 출력 게이트가 있다.

4.2) LSTM의 동작

시간 t에서 j번째 메모리 블록을 보자.

메모리로 들어오는 $h^{(t-1)}$입력은 세 방향(입력단, 입력게이트, 출력게이트)으로 들어가게된다. 이를 각각 $W^g, W^i, W^o$ 라고 한다. 물론 이 행렬 중에 한 열이 될 것이다.

또한 입력 벡터 $x^{(t)}$ 도 세 군데로 입력이 된다. 이를 각각 $U^g, U^i, U^o$ 라고 한다.

그 후 세 곳에서 이루어지는 연산은 다음과 같다.
$$
\begin{gather}
입력단: g= \tau_g(U^gx^{(t)} + W^gh^{(t-1)} + b^g) \newline
입력 게이트: i= \tau_f(U^ix^{(t)} + W^ih^{(t-1)} + b^i) \newline
출력 게이트: o= \tau_f(U^ox^{(t)} + W^oh^{(t-1)} + b^o)
\end{gather}
$$

$\tau_g$ 는 입력단 활성함수로 [-1, 1] 가 치역인 tanh 를 주로 사용하고,

$\tau_f$는 입력 게이트와 출력 게이트의 활성함수로 [0, 1] 가 치역인 logistic sigmoid 를 주로 사용한다.

$b^g, b^i, b^o$는 각각 입력단, 입력게이트, 출력게이트의 바이어스이다.

다시 그림을 보면,

입력단(g) * 입력게이트(i) 의 값이 0에 가까우면, 입력단을 차단하고,

1에 가깝다면 g를 그대로 위로 올리게 된다.

그 위는 메모리 블록이 '기억'하는 내용이 담기는 부분인데, 아래 식과 같이 업데이트 된다.
$$
s^{(t)} = s^{(t-1)} + g \odot i
$$
위로 올린 값이 0이면 예전의 기억을 그대로 유지하고, 그렇지 않다면 바뀐값이 반영되어 업데이트 되게 된다. 결국 이전 입력의 영향력 범위를 더 멀리 확장하는 효과를 제공한다.

원 안의 기호 /는 선형 활성함수를 의미한다.

이제 위 쪽에 있는 *를 보면,
$$
h_j^{(t)} = \tau_h(s^{(t)}) \odot o
$$
의 식으로 출력이 된다. 이 때, $ \tau_h $는 활성함수로 주로 tanh를 사용한다.

이 계산 결과는 q개의 출력 노드로 전달되어, 출력단의 계산에 사용된다.

또한, 입력단, 입력게이트, 출력 게이트에 있는 3p개의 노드로 전달되어 다음 순간 t +1계산에 활용된다.

마지막으로 출력단의 계산식이다. RNN과 똑같다.
$$
y'^{(t)} = softmax(Vh^{(t)} + c)
$$

4.3) 망각 게이트와 핍홀

LSTM은 여러 측면에서 성능 개선이 이루어졌고,

forget gate(망각 게이트)는 현재 거의 표준처럼 사용된다.(Gers, 2000)

그리고, 또 다른 확장으로 peephole(핍홀) 기능이 있다.(Gers, 2000)

핍홀은 메모리 블록의 내부 상태를 3개의 게이트에 알려주는 역할을 한다.

순차 데이터를 처리하다가, 어떤 조건에 따라 특별한 조치를 취해야 할때, 핍홀이 매우 효과적이다.


reference

기계학습, 순환 신경망, 오일석, 2017

728x90

'ML, DL > RNN' 카테고리의 다른 글

[RNN] Language Model, Machine Translation, Image Captioning  (989) 2019.10.25
[RNN] RNN이란? Sequantial data?  (1044) 2019.10.25

댓글