본문 바로가기
기계학습/자연어 처리 머신러닝

LSTM - 딥러닝을 이용한 자연어처리 입문

by tryotto 2020. 1. 28.

# LSTM : 장단기 메모리

(Long-short term memory)


- 바닐라 RNN : 가장 기본적인 꼴의 RNN

   > 이 RNN으로부터 더 발전된 꼴의 RNN 들이 LSTM 등 여러가지 존재


- 장기 의존성 문제 : (RNN 의 한계점)

   > 맨 마지막 state 에서, 올바른 y 값을 출력하기 위해서 앞부분에 있는 state 의 출력값이 필요하다고 하자

      그럴 경우, 앞 부분의 state 값은 뒷부분까지 널리 전달되지 못하기 떄문에 (영향력이 미비해짐) 문제 발생


- 구성 방식 : 모두 시그모이드 함수를 사용한다는 특징 지님


1) 입력 게이트 : 현재의 정보를 기억하기 위한 게이트

  > i : 시그모이드 함수 사용 -> 0, 1 출력

  > g : 하이퍼볼릭 탄젠트 함수 사용 -> -1, 1 출력

      >> 이 두 출력값을 이용, 기억할 정보의 양을 정함


2) 삭제 게이트 : 기억을 삭제하기 위한 게이트

   >> 출력값이 0에 가까우면 많이 삭제한 것,

        출력값이 1에 가까우면 정보를 많이 기억하는 것.


3) 셀 상태 (장기 상태) : 입력 게이트로부터 받은 정보와, 삭제 게이트로부터 받은 정보를 이용해서 다음 상태값을 만들어낸다

   >> 이를 통해, 입력 게이트의 값에 더 의존할 것인지, 삭제 게이트의 정보에 더 의존할 것인지를 결정이 가능

  -> 즉, 현재 데이터에 더 큰 영향을 받는지(입력 게이트)

         과거 데이터에 더 큰 영향을 받는지(삭제 게이트)  를 결정해주는 상태다.


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

   >> 셀 상태로부터 받은 값과, 입력층의 값을 다시 한 번 더 연산을 해줌.

-> 다시 한 번 더 입력층과 연산을 해줬다는 점에서 단기 상태라고 하는 것 같다.

   >> 출력 게이트 값으로 나오는 동시에, 은닉 상태 값으로도 연산이 된다/