반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

빙글빙글 머학원생 일상

LSTM(Long Short Term Memory) 본문

AI, ML

LSTM(Long Short Term Memory)

kaw 2023. 2. 22. 09:25
반응형
  1. LSTM(Long Short Term Memory) 배경
  2. LSTM 셀 구조
  3. 주요 하이퍼파라미터
  4. 기능 및 특징
  5. 활용 사례
  6. 예시 코드

1. LSTM(Long Short Term Memory) 배경

  • 1997년 Hochreiter & Schmidhuber에 의해 처음 소개됨[1]
  • LSTM 은 RNN(Recurrent Neural Network)의 한 종류로, 전통적인 RNN의 느린 학습 속도와 state 간의 거리에 따른 Vanishing gradient problem을 개선한 모델로서 시계열 데이터 예측에 자주 사용되고 있음
    • 기존 딥러닝 방법론의 경우 ‘Vanishing gradient(기울기 소멸)’로 인해 'Long-term dependency(장기 의존성)'을 고려하지 못하는 문제[2]가 발생함
    • LSTMs은 RNNs에 memory cells, gates 구조를 도입하여 전통적 RNN 모델에서 발생하는 vanishing gradient 문제를 해결하고 장기 메모리를 유지할 수 있음
Vanishing &
exploding gradient
기울기 소멸 & 폭주
-  소멸: 역전파 과정에서 계층을 거칠수록 손실 기울기 값이 점점 작아져 초반 계층 학습이 잘 안되는 현상
-  폭주: 계층을 거칠수록 손실 기울기가 점점 커져 초반 계층의 학습이 안 되는 현상
-  RNN 네트워크가 커질수록(시간이 길어질수록) 발생할 가능성이 커짐
소멸
폭주
long-term
dependency
-  RNN은 입력 time frame이 길어지면 vanishing & exploding gradient 발생 가능성이 높아지는 현상이 발생함
-  따라서 전통적인 RNN의 경우 먼 시간대 사이의 패턴을 포착하기 어렵기 때문에 long-term dependency가 중요한 데이터를 학습할 수 없음

2. LSTM 셀 구조

 1) LSTM 기본 구조

  • LSTM 네트워크에서 LSTM cell(memory cell)은 3개의 gate(Output gate, input gate, forget gate)를 가짐
  • 이 구조를 통해 LSTM은 관련 정보를 선택적으로 보존하고 삭제할 수 있으며 보존한 정보를 다음 cell으로 전달하는 순환 신경망(Recurrent network) 형태를 가짐
LSTMs 전체 구조 LSTM Cell 내부구조





  • 각 LSTM cell은 하나의 time-step을 연산하며 시작부터 끝까지 순차적으로 진행되면서 이전 time-step의 정보를 cell state(C)와 hidden state(h)를 이용해 전달함
  • LSTM의 cell state를 다음 cell으로 전달하며 cell state에 정보를 추가하고 삭제하는 과정을 gate라고 불리는 구조에 의해 제어함
  • Cell state: 장기 상태(long term state), 기억을 오랫동안 유지할 수 있는 구조로 LSTM이 진행되는 일종의 체인역할을 하며 gate를 통해 선형적인 상호작용만을 진행함
  • Hidden state: 단기 상태(short term state), 계층의 출력이 되며 다음 time-step으로 정보를 전달함
  • LSTM 네트워크 모델에서 cell state를 업데이트 하고 hidden state output(ht)을 계산하는 과정 4개의 층(layer)를 통해 진행되며 이를 수식으로 다음과 같이 나타낼 수 있음 [7]
  • LSTM 셀의 각 층(layer)에서는 이전 셀의 정보(ht-1) 중 일부를 삭제하고(forget), 새로 받은 정보(xt)를 기억하고(input), cell 상태(state)를 업데이트하고, 다음 셀에 보낼 정보(ht)를 구성하는(output) 연산을 수행함

  2) LSTM cell layer별 기능 상세 설명

[Step 1]
Forget gate
-  LSTM의 첫번째 단계는 cell state에서 어떤 정보를 버릴 것인가를 결정하는 것이며 이는 "forget gate layer"의 시그모이드 층에서 결정됨

-  Forget gate에서는 이전 hidden ht-1 과 현재 입력값 xt 를 확인하고 이전 cell state Ct-1 에 있는 각 요소에 대해서 01사이의 값을 생성함(1 - 모두 보존, 0 - 모두 제거)

- 이 값은 최종
Ct 를 결정할때, Ct-1 과 곱해지는 값으로 이전의 cell state 정보를 얼마나 통과시킬지를 결정함

[Step 2]
Input gate
- Input gate에서는 어떤 새로운 정보를 cell state에 저장/추가할 것인가하는 업데이트 정보를 결정

-
input gate layer라고 불리는 시그모이드 층에서 어떤 값을 업데이트할지 결정 sigmoid -> [0, +1]


-
tanh 층에서는 state에 추가될 수 있는 새로운 후보 cell state (벡터, Ct )를 생성 tanh -> [-1, +1]

- it
는 현재 정보를 기억하기 위한 게이트로, 이 값은 sigmoid 함수를 사용해 0~1이지만 Hadamard product를 하는 Ct hyperbolic tangent(tanh) 결과이므로 –1~1 값을 가져 결과가 음수가 될 수 있음
[Step 3]
Cell state
업데이트
- 이전 cell state(Ct-1 )를 새로운 cell state(Ct )로 업데이트하는 과정.

- 결정된 forget 값을 이전
Ct-1 과 곱하고, input 값과 새로운 cell state 후보(Ct )를 곱해 계산함

[Step 4]
Output gate
- 무엇을 출력할지 정하는 게이트로, 계산된 현재 cell state(Ct) 중 일부를 선택적으로 필터링하여 출력함

-
시그모이드 층을 써서 현재 cell state 중 어떤 부분을 출력할지 선택 -> ot


-
cell statetanh 함수(-1~+1)를 사용해 위에서 구한 ot 와 곱하여 최종적으로 출력할 부분을 결정하여 LSTM의 최종 결과를 도출함
ot 는 최종 결과 ht 를 위한 게이트로 cell statehyperbolic tangentHadamard product한 값이 LSTM의 최종 결과가 됨

 

3. 주요 하이퍼파라미터

  • Keras LSTM 하이퍼 파라미터
파라미터명 default 설명
activation
(
활성화 함수)
Tanh - Tanh: cell state 업데이트, output gate에 사용되며 tanh 레이어를 통해 새로운 후보 cell state 벡터를 생성하고, 최종 cell state를 도출함
-  뉴럴 네트워크의 입력값 평균이 0이 아닌 경우 학습 성능 저하가 발생할 수 있어 sigmoid 대신 Tanh 모형을 사용함[3]
recurrent_
activation
(
순환 활성화
함수
)
Sigmoid - sigmoid 사용 이유:  LSTMforget, input, output gate layer에 사용되며 0(아무것도 통과시키지 않음)~1(모두 통과시킴) 사이 값이 출력되어야 하기 때문에 sigmoid 함수 사용
input_size
(
피처 수)
Input 피처 수 - input feature dimension을 의미함(input 데이터 피처 수)
epoch   - 너무 많으면 과적합(overfitting), 너무 적으면 학습이 제대로 되지 않음(underfitting)
num_layers
(
히든 레이어
층 수
)
  - LSTM layer를 얼마나 쌓을지를 의미한
- hidden layer 층수가 증가할수록 gradient vanishing 확률 증가
Hidden_size
(
히든 레이어
노드 수
)
  - 히든레이어 크기(노드 수), input을 내부에서 어떤 feature dimension으로 변환할지를 지정
Bias True - bias term을 둘 것인지 결정
Dropout   - 삭제할 데이터 비율, generalization이 잘 안될 경우 조정
go_backwards False - 양방향(Bidirectional) LSTM 사용 시 forward_layer, backward_layer 설정(True)
- 양방향 LSTM의 경우 순차적인 입력값에 대해 이전 데이터와의 관계 뿐만 아니라 이후 데이터와의 관계까지도 학습함
optimizer
(
최적화 함수)
Adam - adam: 𝐿2 Norm을 사용하기 때문에 급등락하는 데이터에 민감함
- adamax: 𝐿Norm을 사용해 급등락하는 데이터의 영향이 줄어들 수 있음
- 그 외 SGD, RMSprop, Adam, AdamW, Adadelta, Adagrad, Adamax, Adafactor, Nadam, Ftrl 등이 있음
learning rate
(
학습률)
0.01 - 최적화 함수의 학습률이 시간 경과에 따라 변화하는 정도
loss
(
손실함수,
loss function,
cost function)
  - 예측값과 실제값에 대한 오차 계산 함수
- mean_squared_error: mean(square(y_true - y_pred), axis=-1)
- 그 외 mean_absolute_error function, mean_absolute_percentage_error function, mean_squared_logarithmic_error function, cosine_similarity function, huber function, log_cosh functioncategorical_crossentropy 등이 있음

 

4. 기능 및 특징

  • 순환 신경망(RNN)과 같은 딥러닝 모델은 단순 신경망과 비교할 때 시공간 시퀀스 모델링 및 동적 시스템 모델링에 적합함[4]
  • 데이터 시퀀스가 많을 경우의 장기 종속성에 대한 RNN의 한계를 LSTM이 보완할 수 있음
  • 기존 RNN에서 input 비율(it), forget 비율(ft), ouput 비율(ot)까지 총 3개의 파라미터가 추가된 구조에 해당됨
     
     
     

5. 관련 문헌

가)    COVID-19 & LSTM

저자 활용모델 결과 요약
[5] LSTM,
SEIR
-     중국 COVID-19 예측에 LSTM이 비교 모델로 사용되었으며 SEIR 모델(Susceptible–Exposed-Infectious-Recovered model: 전염병 확산 모델)에 비해 좋은 성능을 보임
[6] LSTM -     전세계 COVID-19 감염 추세와 캐나다 데이터 비교 예측에 LSTM 모델을 활용함
[9] LSTM -     인도 COVID-19 일일 신규 감염 예측을 위해 단변량 및 다변량 LSTM을 활용함

 

나)    LSTM, 그 외 머신러닝 모델 활용

저자 활용모델 결과 요약
[7] ConvLSTM -     Convolutional LSTM기반 미래 강우량 시계열 예측을 진행함
[8] CNN -     앙상블 분석기법과 CNN(Convolutional Neural Network)기반 풍력발전 시계열 예측을 진행함

References

[1] S. Hochreiter and J. Schmidhuber, "Long Short-Term Memory," in Neural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi: 10.1162/neco.1997.9.8.1735.

http://colah.github.io/posts/2015-08-Understanding-LSTMs

 

Understanding LSTM Networks -- colah's blog

Posted on August 27, 2015 <!-- by colah --> Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and start thinking

colah.github.io

 

반응형
Comments