LSTM(Long Short-Term Memory)

현주·2024년 12월 17일
0
post-thumbnail

LSTM이란?

이전글(RNN)에서 다룬 RNN은 가장 기본적이라는 뜻에서 바닐라 RNN이라고 한다.
바닐라 RNN 이후, 바닐라의 한계를 극복하기 위한 변형 RNN이 나온다.

그 중 하나가 장기 의존성 문제를 보완한 장-단기 메모리, LSTM이다.


바닐라 RNN의 한계


바닐라 RNN은 출력결과가 이전 계산 결과에 의존한다. 그래서 짧은 비교적 짧은 시퀀스에 효과를 보인다.
위 사진처럼 시점이 길어질수록 앞의 정보가 희석되어 뒤로 갈수록 충분히 전달되지 못한다.

x1x_1의 정보량은 시점이 길어질수록 손실된다.
문제는 가장 중요한 정보가 앞쪽에 있을 수 있다는 것이다.

"미국에 여행을 왔는데 건물도 예쁘고 먹을 것도 맛있었어. 그런데 글쎄 직장 상사한테 전화가 와서 어디냐고 묻더라고 그래서 나는 말했지 저 여행왔어요 여기 [?]"

정답은 맨 앞에 있다. RNN이 충분한 기억력을 가져야 풀 수 있을 것이다.

이런 문제를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 한다.


LSTM 구조


LSTM은 장기 의존성 문제를 보완하기 위해 은닉층 메모리 셀에 입력 게이트, 삭제 게이트, 출력 게이트를 추가했다. 이 게이트들은 불필요한 기억은 지우고, 기억할 것을 정한다.

이 세개의 게이트에는 공통적으로 시그모이드 함수를 사용하는데, 시그모이드 함수를 지나면 0과 1사이의 값이 되고 이 값으로 게이트를 조절한다.

또한 셀 상태(cell state)라는 값을 추가했다. 위 그림에서 t시점의 셀 상태를 CtC_t로 표현한다. 셀 상태 또한 은닉 상태처럼, 다음 시점의 셀 상태를 구하기 위해 이전 시점의 셀 상태를 입력으로 사용한다.


입력 게이트

it=σ(Wxixt+Whiht1+bi)gt=tanh(Wxgxt+Whght1+bg)\begin{aligned} i_t &= \sigma(W_{xi}x_t + W_{hi}h_{t-1} + b_i) \\ g_t &= \tanh(W_{xg}x_t + W_{hg}h_{t-1} + b_g) \end{aligned}

입력 게이트는 현재 정보를 기억하기 위한 게이트이다.

iti_t는 현재 시점 ttxx값과 입력 게이트로 이어지는 가중치를 곱한 값과 이전 시점의 은닉 상태가 입력 게이트로 이어지는 가중치를 곱한 값을 더해 시그모이드를 지난 값이다. 이 값은 0과 1사이의 값이다.

gtg_t도 현재 시점 ttxx값과 입력 게이트로 이어지는 가중치를 곱한 값과 이전 시점의 은닉 상태가 입력 게이트로 이어지는 가중치를 곱한 값을 더해 하이퍼볼릭탄젠트 함수를 지난 값이다. 이 값은 -1과 1사이의 값이다.

iti_tgtg_t는 기억할 정보의 양을 정한다.


삭제 게이트

ft=σ(Wxfxt+Whfht1+bf)f_t = \sigma(W_{xf}x_t + W_{hf}h_{t-1} + b_f)

삭제 게이트는 기억을 삭제하기 위한 게이트이다.

현재 시점 ttxx값과 이전 시점의 은닉 상태가 시그모이드를 지난 값이다. 이 값은 0과 1사이의 값이다.

ftf_t는 삭제 과정을 거친 정보의 양이다. 0에 가까울 수록 많은 정보가 삭제된 것이다.


셀 상태

Ct=ftCt1+itgtC_t = f_t \circ C_{t-1} + i_t \circ g_t

ftf_t와 이전 시점의 셀값의 원소별 곱 부분(ftCt1f_t \circ C_{t-1})은 이전의 기억에서 얼마나 남길 것인지 정한다.

iti_tgtg_t의 원소별 곱 부분(itgti_t \circ g_t)은 입력된 정보를 얼마나 기억할 것인지를 정한다.

따라서 이전 입력을 얼마나 기억할지와, 입력받은 현재 시점의 정보를 얼마나 반영할지 업데이트 한다.


출력 게이트 / 은닉 상태

ot=σ(Wxoxt+Whoht1+bo)ht=ottanh(ct)\begin{aligned} o_t &= \sigma(W_{xo}x_t + W_{ho}h_{t-1} + b_o) \\ h_t &= o_t\circ\tanh(c_t) \end{aligned}

oto_t는 현재 시점의 입력값과 이전 시점의 은닉 상태가 시그모이드 함수를 지난 값이다. 이 값은 현재 시점의 은닉 상태를 결정하는 일에 쓴다. 즉 필터 역할이라고 할 수 있다.

hth_t는 -1과 1사이의 값이 되고 출력 게이트 값과 원소별 곱을 하면서 값이 걸러져 은닉 상태가 된다. 이 은닉 상태 값은 출력층으로도 간다.

출력 게이트(oto_t)는 현재 시점의 입력값을 걸러주는 필터, 은닉 상태(hth_t)는 걸러진 정보의 요약본이라고 할 수 있다.


마무리

LSTM은 바닐라 RNN의 한계인 장기 의존성 문제를 극복하기 위한 중요한 발전이다.
게이트 메커니즘과 셀 상태를 도입해 중요한 정보는 더 오래 기억하고 불필요한 정보는 삭제하여 긴 데이터에서도 성능을 낼 수 있었다.

추상적인 내용을 직관적으로 설명하는 건 정말 어려운 일같다. 다음 글은 RNN 언어 모델을 정리해야겠다.😺


레퍼런스

profile
공부하는 블로그😎

0개의 댓글