본문 바로가기
AI-driven Methodology/ANN

[ANN] LSTM (Long-Short Term Memory)

by goatlab 2022. 10. 11.
728x90
반응형
SMALL

LSTM (Long-Short Term Memory)

 

실제로 단순한 RNN은 장기적인 종속성 학습에서 문제를 겪는다. RNN은 일반적으로 역전파를 통해 훈련되며, 여기서 소실 (vanishing) 또는 폭주 (exploding)하는 기울기 문제에 직면할 수 있다. 이러한 문제는 신경망 가중치가 너무 작아지거나 너무 커지는 현상을 유발하기 때문에 장기적인 관계를 학습하기에는 효과적이지 않다. ​

 

 

Vanishing Gradient Problem을 극복하는 특수한 RNN 유형이 장단기 기억 (LSTM) 신경망이다. LSTM 신경망은 부가적인 게이트를 사용하여 은닉 셀의 어느 정보가 출력과 다음 은닉 상태까지 보내지는지를 제어한다. 이를 통해 신경망은 데이터의 장기적인 관계를 더 효과적으로 학습할 수 있다. LSTM은 일반적으로 구현되는 RNN 유형이다. 

 

역전파되는 gradient가 쉽게 소멸되는 현상을 완화시키는 모델이며 입력, 기억, 출력의 정도를 조절하는 3개의 gate로 구성된다. RNN과 달리 내부에 cell이 추가되어 있다.

 

Vanilla RNN Gradient Flow & Vanishing Gradient Problem

 

LSTM 아키텍처를 사용하면 RNN이 많은 반복 시간 단계에서 정보를 더 쉽게 보존할 수 있다. 예를 들어, 망각 게이트가 1로 설정되고 입력 게이트가 0으로 설정되면 셀 상태의 정보는 많은 반복 시간 단계에 걸쳐 항상 보존된다. 대조적으로 바닐라 RNN의 경우 단일 가중치 행렬을 사용하여 순환 시간 단계에서 숨겨진 상태의 정보를 보존하는 것이 훨씬 어렵다. LSTM은 vanishing / exploding, gradient 문제가 없다고 보장하지는 않지만 모델이 장거리 종속성을 학습하는 더 쉬운 방법을 제공한다.

 

 

필요한 정보는 기억하고 불필요한 정보는 잊게 한다. 주황색 선이 memory cell로 앞에 문장에 따라 빈칸에 대명사를 유추한다고 할 때, John은 남자이지만 jane이 등장함에 따라 John 정보는 잊고, Jane 정보는 기억해야 한다.

 

https://velog.io/@yuns_u/LSTMLong-Short-Term-Memory%EA%B3%BC-GRUgated-Recurrent-Unit

  • input gate (It​) : 새로운 입력을 받고자 하는 정도를 나타낸다. 특징은 여러 차원으로 되어 있으므로, 특징별로 받아 들일지 말지를 결정할 수 있다.
  • forget gate (Ft​) : 기억을 잊고자 하는 정도를 나타낸다. 특징을 여러 차원으로 되어 있으므로, 특징별로 기억할지 말지를 결정할 수 있다.
  • output gate (Ot​) : 두 정보를 계산하여 나온 출력 정보인 cell state 중 어떤 특징을 출력할지 결정하는 역할을 한다.
  • 메모리 셀 (gt) : 기억을 총괄하는 메모리 역할을 한다. 여러 차원으로 되어 있어서 각 차원의 특정 정보를 기억한다. Hadamard 연산자의 특성으로 인해, 특징별로 기억하고, 잊고 새로이 정보를 받을 수 있다.

 

각 은닉 노드가 상태 저장소 (memory cell)와 저장, 출력, 망각을 조절하는 게이트 (gate)를 포함한다.

 

기억 / 망각 게이트 (Forget Gate)

 

 

과거 정보를 잊기 위한 게이트이다. 시그모이드 함수의 특성상 출력 값 범위는 (0, 1)이다. 학습이 진행됨에 따라 0이나 1로 수렴하는 값들로 출력을 생성한다. 상태 벡터에 성분 별로 곱해져 잊을 것은 잊고 기억할 것은 기억하게 만든다. 생성된 값이 0에 가까울수록 망각, 1에 가까울수록 기억 보존 효과가 있다. 매 시간대마다 새로 생성되는 값 활용해 기억 보존 정도를 결정한다. 편향 파라미터 초기값을 1로 설정해 망각보다는 기억에 방점을 두고 학습을 시작한다.

 

입력 게이트 (Input Gate)

 

 

현재 정보를 기억하기 위한 게이트이다. 시그모이드 함수의 특성상 출력 값 범위는 (0, 1)이다. 학습이 진행됨에 따라 0이나 1로 수렴하는 값들로 출력을 생성한다. 입력 블록 처리 결과에 성분별로 곱해져 입력 각 성분의 반영 정도를 결정한다.생성된 값이 0에 가까울수록 입력 무시, 1에 가까울수록 입력 활용 효과가 있다. 매 시간대마다 새로 생성되는 값 활용해 입력 활용 정도를 결정한다. 편향 파라미터 초기값을 0로 설정해 입력 무시에 방점을 두고 학습을 시작한다.

 

출력 게이트 (Output Gate)

 

 

확장입력으로부터 선형 연산 후 시그모이드 함수에 의한 출력을 생성한다. 시그모이드 함수의 특성상 출력 값 범위는 (0, 1)이다. 학습이 진행됨에 따라 0이나 1로 수렴하는 값들로 출력을 생성한다. 변형된 상태 정보에 성분 별로 곱해져 새로운 순환 벡터 내용을 결정한다. 생성된 값이 0에 가까울수록 변형된 상태 정보 무시, 1에 가까울수록 활용한다. 매 시간대마다 새로 생성되는 값 활용해 변형된 상태의 활용 정도를 결정한다. 편향 파라미터 초기값을 0로 설정해 상태 정보 무시에 방점 두고 학습 시작한다.

 

입력 블록 (Input Block)

 

 

확장 입력으로부터 선형 연산 후 쌍곡탄젠트 함수에 의한 출력을 생성한다. tanh 함수의 특성상 출력 값 범위는 (-1, 1)이다. 학습이 진행됨에 따라 -1이나 1로 수렴하는 값들로 출력을 생성한다. 입력 게이트 출력과 성분 별로 곱해진 후 상태 정보에 추가되어 반영된다. (-1, 1) 범위로 정규화되고 순환 벡터 크기에 맞추어진 변형된 입력을 생성한다. 매 시간대마다 새로 생성되는 값 활용해 변형된 시간대별 입력으로 활용한다. 편향 파라미터 초기값은 0으로 1로 설정된다.

 

GRU (Gated Recurrent Unit)

 

http://dprogrammer.org/rnn-lstm-gru

 

LSTM의 간소화된 버전이다. LSTM의 매개변수도 많고 연산량이 많은 단점을 해결한다. GRU의 매개변수는 LSTM의 3/4임에도 유사한 성능을 나타낸다.

728x90
반응형
LIST