LSTM(Long Short-Term Memory)의 아키텍처를 처음 봤을 때 ‘이런 복잡한 아키텍처도 있나?!’ 하는 생각을 했습니다. 각각의 기능들은 또 무슨 의미이지 궁금했었죠. 하지만 각각의 의미를 알고 나니 기발한 수학적 발상이었다는 것이 느껴지더라고요. 그리고 시계열 데이터의 장기 기억에 대한 기존 RNN의 한계를 극복하도록 설계되었다는 사실을 알게 됐죠.
그러면 LSTM 모델의 왜 등장했는지 배경부터 살펴볼까요?
LSTM 배경
1. RNN의 문제점
RNN은 시계열 데이터에서 주로 사용된다는 것을 배웠습니다. 그런데 시간이 지남에 따라(long term) 기울기가 극도로 작어져 과거 시간 단계의 정보를 잊어버리는 문제가 있었습니다. 바로 기울기 소실(Vanishing Gradient) 문제로 인한 어려움이었죠. 이러한 제한으로 인해 RNN은 긴 시퀀스에 걸쳐 정보를 학습하고 유지하기가 어렵습니다.
보통 time-step이 10 이상이면 성능 저하가 나타나기 시작합니다. 여기서 LSTM 모델은 구조를 개선하여 장기 의존성(Long-Term Dependency) 문제를 해결하려 했습니다. RNN처럼 직전 정보만 참고하는 것이 아니라, 그전 정보(longer-term)까지 고려해야 하는 방법을 사용 했습니다.
2. 기울기 소실과 폭발 원인
기울기 소실은 앞에서 설명했듯이 BPTT(오차 역전파)를 하면서 발생합니다. 동일한 핼렬곱($ 𝑊_{ℎ} $)의 반복으로 인해 $ 𝑊_{ℎ} $이 특이값에 따라 1보다 작으면 소실, 1보다 크면 폭발하게 됩니다. 여기서 활성화 함수 tanh을 미분할 경우를 생각해 보면, 1보다 작기 때문에 vanishing 발생하게 됩니다.
3. 기울기 클리핑(Gradient Clipping)
기울기 폭발을 막기 위한 방법으로 클리핑(Clipping)을 사용합니다. 이는 임계값을 설정하고 gradient의 norm이 임계값을 넘어가지 못하도록 하는 것입니다. 만약 임계값을 넘어가면 gradient를 normalize 한 후 임계값을 곱해서 norm이 임계값이 되도록 만들어 버립니다. 수식은 아래와 같습니다.
- if $ ||𝑔−𝑏𝑎𝑟 || ≥𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 : 𝑔−𝑏𝑎𝑟= \dfrac{𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑}{||𝑔−𝑏𝑎𝑟||} ||𝑔−𝑏𝑎𝑟|| $
기울기 클리핑(gradient clipping)을 이용하면 기울기 폭발을 해결할 수 있습니다.
LSTM이란?
1997년 Sepp Hochreiter와 Jurgen Schmidhuber가 LSTM 네트워크를 처음 도입했습니다. LSTM 네트워크는 기존 RNN에서 사용되는 SRU(Simple Recurrent Unit) 보다 더 복잡한 구조의 메모리 셀을 통합합니다. 이러한 내용이 논문 LONG SHORT-TERM MEMORY(1997) 나와 있으니 참조하시기 바랍니다.
LSTM은 RNN을 많이 개선했기 때문에 언어, 음성인식 등 다양한 분야에서 사용되고 있습니다. 이렇게 여러 분야에 사용되는 이유는 실제 현실 data를 적용했을 때 LSTM이 좋은 성능을 보여주는 경우가 다수 있었기 때문입니다. 단순하게 RNN과 LSTM의 차이를 요약하면 아래와 같습니다.
- RNN : 단순한 구조로 tanh layer 한 층을 가지고 있음
- LSTM : Cell state라는 장기 기억 cell이 추가되었고, 기억을 조절하는 3개의 Gate로 서로 정보를 주고 받도록 되어 있음(Forget, Input, Output)
LSTM 구조(아키텍처)
LSTM 아키텍처의 특징은 Cell state라고 해도 과언이 아닙니다. Cell state, 즉 셀의 상태(state)는 $ h_{t} $와 $ C_{t} $로 나눌 수 있습니다. 아래 그림은 각각의 기능 설명을 위한 LSTM의 아키텍처입니다.
- $ h_{t} $ : 단기 상태 (short-term state)
- $ C_{t} $ : 장기 상태 (long-term state)
- Neural Network Layer : 학습된 신경망 레이어를 나타냄
- Pointwise Operation : 벡터 덧셈과 같은 점별 연산을 나타냄
- Vector Transfer : Diagram에서, 각 선은 한 노드의 출력에서 다른 노드의 입력으로 전체 벡터를 전달함
- Concatenate : Line Merging 행 병합으로 연결을 나타냄
- Copy : Line Forking 행 복사는 내용이 복사되며, 복사본이 다른 위치로 이동함을 나타냄
LSTM 핵심 아이디어
LSTM의 핵심 아이디어는 2가지가 있는데요. 장기기억 Cell 구조와 Gate 구조를 도입해 사용한 것입니다.
1. 장기기억 Cell 구조 도입(Cell state)
- Cell state는 그림에서 수평으로 그어진 윗 선에 해당
- Cell state는 컨베이어 벨트와 같아서, 작은 linear interaction(선형 상호작용)만을 적용시키면서 전체 체인을 계속 구동
2. Gate 구조 도입
- 문(Gate)을 사용하여 자동으로 학습하여 Input, Output 제어
- 정보가 전혀 바뀌지 않고 중요도 만큼 그대로 흐르게 함
- 계수에 대한 원소별 곱(element wise coefficient multiplication)
- 원소(요소, 특성)들 중 중요한 것들을 남기는 작업
결론적으로, 장기 기억을 위해 Cell state라는 개념을 가지고 와 Gate 수식을 이용하여 적절하게 정보를 학습에 의해 흐르게 구현했습니다. 이렇게 해서 LSTM에서는 특정 정보가 Gradient에 안좋은 영향을 미치지 않는 한, 약 1000번의 time step 이상의 interval에도 정보를 소실하지 않고 효과적으로 정보를 전달할 수 있게 개선되었죠.
다음 글에서는 LSTM의 처리 절차와 각각의 Gate에서 기능들에 대해 설명드리도록 하겠습니다.
'딥러닝' 카테고리의 다른 글
LSTM의 3개의 Gate 특징 및 설명 (0) | 2024.04.23 |
---|---|
LSTM의 Cell State 특징 및 원리 (0) | 2024.04.22 |
순환신경망(RNN) 구현, Time RNN (0) | 2024.04.09 |
순환신경망(RNN) 학습, Truncate BPTT (0) | 2024.04.01 |
순환신경망(RNN)이 언어 모델로 사용된 이유 (0) | 2024.03.27 |