본문 바로가기
딥러닝

LSTM(Long Short-Term Memory) 이해하기

by mintee
728x90

장단기 메모리(Long Short-Term Memory, LSTM)인 LSTM은 RNN의 특별한 한 종류로, 긴 의존 기간을 필요로 하는 학습을 수행할 능력을 갖고 있다. 이 구조에 대해 이해해보자. 

아래는 딥러닝을 이용한 자연어처리 입문 책에서 LSTM관련 내용을 요약한 것이다. https://wikidocs.net/22888

1. 기존의 RNN의 한계점

https://wikidocs.net/22888

위의 그림과 같이 뒤로 갈 수록 첫 번째 입력값인 x1의 영향력이 점점 희미해짐. 

예를 들어 ''모스크바에 여행을 왔는데 건물도 예쁘고 먹을 것도 맛있었어. 그런데 글쎄 직장 상사한테 전화가 왔어. 어디냐고 묻더라구 그래서 나는 말했지. 저 여행왔는데요. 여기 ___'' 다음 단어를 예측하기 위해서는 장소 정보가 필요합니다. 그러나 RNN이 충분한 기억력을 가지고 있지 못한다면 다음 단어를 엉뚱하게 예측함.

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

 

따라서 이 바로 이전의 입력값에 대한 가중치를 조절해주기 위해 LSTM을 사용한다.

 

2. LSTM

(Long Short-Term Memory)

구조 살펴보기

위의 그림은 LSTM의 전체적인 내부의 모습이다. 

LSTM은 은닉층의 메모리 셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것들을 정한다. LSTM은 기존의 RNN보다 은닉층의 계산이 조금 더 복잡해지고 셀 상태(cell state)라는 개념이 추가 되었다. (위의 그림에서는 t시점의 셀 상태를 Ct로 표현하고 있다.)

 

  • σ는 시그모이드 함수를 의미
  • Wxi, Wxg, Wxf, Wxoxt와 함께 각 게이트에서 사용되는 4개의 가중치입니다.
  • Whi,Whg,Whf,Who는 ht−1와 함께 각 게이트에서 사용되는 4개의 가중치입니다.
  • bi,bg,bf,bo는 각 게이트에서 사용되는 4개의 편향입니다.

1) 입력 게이트 - it, gt

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

현재 시점(t)의 x값과 이전 시점(t-1)의 은닉상태(ht-1)에 각각의 가중치를 곱하여 더한값을 시그모이드 함수에 넣은 값이 it, 탄젠트 함수에 넣은 값이 gt(시그모이드 함수를 지나 0과 1 사이의 값과 하이퍼볼릭탄젠트 함수를 지나 -1과 1사이의 값 두 개가 나오게 됨)

이 두 개의 값을 가지고 이번에 선택된 기억할 정보의 양을 정하게 됨,,,(셀 상태 수식 참고.)

2) 삭제 게이트 - ft

  • 삭제 게이트는 기억을 삭제하기 위한 게이트
  • 현재 시점(t)의 x값과 이전 시점(t-1)의 은닉상태가 시그모이드 함수를 지남.
  • 이 값이 0에 가까울수록 정보가 많이 삭제된 것이고 1에 가까울수록 정보를 온전히 기억한 것!
  • 이를 가지고 셀 상태를 구하게 됨,,,

3) 셀 상태(장기 상태)

  • 셀 상태 Ct를 LSTM에서는 장기 상태라고도 함.
  • 입력 게이트에서 구한 ititgtgt 이 두 개의 값에 대해서 원소별 곱(entrywise product)을 진행.(같은 크기의 두 행렬이 있을 때 같은 위치의 성분끼리 곱하는 것으로  ∘ 로 표현) 이것이 이번에 선택된 기억할 값이다. 
  • 입력 게이트에서 선택된 기억을 삭제 게이트의 결과값과 더한다. 이 값을 현재 시점 t의 셀 상태라고 하며, 이 값은 다음 t+1 시점의 LSTM 셀로 넘겨짐
  • 삭제 게이트와 입력 게이트의 영향력을 이해해보기 :

 만약 삭제 게이트의 출력값인 ftft가 0이 된다면, 이전 시점의 셀 상태값인 Ct−1은 현재 시점의 셀 상태값을 결정하기 위한 영향력이 0이 되면서, 오직 입력 게이트의 결과만이 현재 시점의 셀 상태값 Ct을 결정할 수 있음.

반대로 입력 게이트의 itit값을 0이라고 한다면, 현재 시점의 셀 상태값 Ct는 오직 이전 시점의 셀 상태값 Ct1Ct−1의 값에만 의존함. 

 결과적으로 삭제 게이트는 이전 시점의 입력을 얼마나 반영할지를 의미하고, 입력 게이트는 현재 시점의 입력을 얼마나 반영할지를 결정한다. 

 

4) 출력 게이트와 은닉 상태(단기 상태)

  • 출력 게이트는 현재 시점 t의 xx값과 이전 시점 t-1의 은닉 상태가 시그모이드 함수를 지난 값(해당 값은 현재 시점 t의 은닉 상태를 결정하는 일에 쓰이게 됨)
  • 은닉 상태를 단기 상태라고도 함.
  • 은닉 상태는 장기 상태의 값이 하이퍼볼릭탄젠트 함수를 지나 -1과 1사이의 값
  • 해당 값은 출력 게이트의 값과 연산되면서, 값이 걸러지는 효과가 발생한다. 단기 상태의 값은 또한 출력층으로도 향한다. ---? 저 위 방향으로 있는 ht는 무슨 기호?

 

3. 수식구현

출처 http://docs.likejazz.com/lstm/

LSTM수식을 정리하면 위와 같고 이를 코드로 구현하면 아래와 같다. 

cell state Ct와 hidden state ht는 아래와 같이 이 전의 값을 저장해 다음 스텝에서 사용

 

728x90

댓글