LSTM(Long Short-Term Memory)

https://youtu.be/YCzL96nL7j0

 

LSTM(Long Short-Term Memory)

- RNN의 기울기 폭등/소실 문제 해결하기 위해 만들어짐

- Long-Term Memory와 Short-Term Memory를 둘 다 사용하여 결과값 도출

- 시그모이드(Sigmoid) 함수와 하이퍼볼릭탄젠트(tanh) 함수 사용

 

  • 시그모이드 함수

: x 값에 따라 y 값이 0과 1 사이로 나타남

: 어떤 입력값이 들어와도 0과 1 사이로 반환

 

  • 하이퍼볼릭탄젠트 함수

: x 값에 따라 y 값이 -1과 1 사이로 나타남

: 어떤 입력값이 들어와도 -1과 1 사이로 반환

 

 

 

LSTM의 진행 과정

  • Long-Term Memory

: 가중치와 편향 없음 => 기울기 폭등/소실 문제 해결

 

  • Short-Term Memory

: 가중치 존재

초록 선은 Long-Term Memory / 보라 선은 Short-Term Memory

 

① (Short-Term Memory * 2.70) + (입력값 * 1.63)

     => 시그모이드 함수 적용

     => 적용한 값 + 기존 Long-Term Memory

     => 두 번째 Long-Term Memory

: 시그모이드 함수 결과값은 다음 Long-Term Memory가 얼마나 기억될지에 영향을 줌 => Forget Gate

 

② (Short-Term Memory * 1.41) + (입력값 * 0.94)

     => 하이퍼볼릭 탄젠트 함수 적용

     => Potential Long-Term Memory

 

③ (Short-Term Memory * 2.00) + (입력값 * 1.65)

     => 시그모이드 함수 적용

     => Potential Memory To Remember

 

④ (Potential Long-Term Memory * Potential Memory To Remember)

     => 더한 계산값 + 두 번째 Long-Term Memory

     => New Long-Term Memory

: Long-Term Memory를 얼마나 업데이트할지 결정 => Input Gate

 

⑤ 두 번째 Long-Term Memory를 하이퍼볼릭 탄젠트 함수에 적용

     => Potential Short-Term Memory

 

⑥ (Short-Term Memory * 4.38) + (입력값 * -0.19)

     => 시그모이드 함수 적용

     => (Potential Memory To Remember * Potentail Short Term Memory)

     => New Short-Term Memory => 결과값