Long Short-Term Memory
Article in Neural Computation · December 1997
Sepp Hochreiter
Introduction
LSTM은 NLP와 같은 분야에서도 쓰이지만 time-series data 특히 stock price prediction과 같은 금융 분야에서도 쓰일 수 있는 굉장히 성능이 좋은 architecture라는 것을 알게되어 해당 논문을 읽어보기로 하였다.
논문을 통해 LSTM이 deep한 모델을 학습하는 다양한 방법론들에 대한 기본적인 방향성을 제시했음을 알게 되었고 그만큼 LSTM이 반드시 완벽히 이해하고 있어야하는 중요한 모델임을 느꼈다.
Background Knowledge
Time-Series Data란 일정 시간 동안 수집된 순차적인 즉 sequential한 데이터이다. 시간순서에 따라 feature간에 인과관계가 있는 것이 핵심이다. 그 예시는 동영상, 공정 센서 측정 데이터, 제품 수요량 데이터, 주가 예측 등이 있다.
시계열 데이터는 DTW(Dynamic Time Warping), FFT(주파수 변환), Time-Lag Feature와 같은 Data Approach방식으로 과거에는 다뤄졌지만 요즘은 Model Approach방식을 주로 이용한다. Model Approach중에서도 HMM(Hidden Markov Model), ARIMA같은 확률통계적인 방법은 과거에 많이 쓰였었고, 최근에는 Deep Learning Model들의 성능이 더 좋다고 판단하여 많이 쓰이는 추세이다.
Deep Learning Model은 RNN, LSTM, GRU, 1D-CNN, Transformer, TCN, Neural ODE, LFTS-Linear와 같이 다양한 모델들이 있다.
이중 LSTM의 기초가 되는 Vanilla RNN을 먼저 알아보았다.
Vanilla RNN
RNN은 Recurrent Neural Network의 약자로 순환신경망이라고 불린다.
Vanilla RNN은 RNN은 초기 모형으로 FCN(Fully Connected Network)와 유사한 형태로 입력값 xt가 rnn유닛에 들어오고 출력값 ht가 나가는 구조이다. 다만 output ht가 다음 t+1시간에 xt+1과 같이 입력되는 구조이다. 다시 말해 RNN은 입력과 이전 시간 단계의 출력을 다시 입력으로 사용하는 반복 구조를 가지고 있는 것이다.
이런식으로 FCN와 유사하게 연결되어있고 데이터는 ht만 이용할 수도 있고 h0,h1,...등등 모든 중간 output을 이용할 수도 있다.
이때 편미분을 통한 gradient값으로 back propagation을 진행하게되면 붉은 선을 따라 gradient정보를 전달하여 gradient descent로 학습을 할 수 있다.
이때 역전파 과정은 BPTT라는 방법을 이용하여 Vanilla RNN의 딥한 구조를 끝에서부터 돌아오는 방법을 이용한다.
FCN의 경우 각 히든레이어가 다른 가중치를 갖고 있는 반면 RNN의 경우 동일한 가중치를 갖고 있는 유닛이 반복적으로 계산되기 때문에 각 time step별로 동일한 가중치를 공유한다.
기존 RNN의 문제점
문제현상: 긴 time step에 대해서 학습이 잘 이루어지지 않는다.(보통 10이상이 되면 성능 저하가 시작됨)
이때 대부분의 시계열 데이터는 10 time step 이하의 데이터가 거의 없다.
문제원인: 저자들은 Vanishing Gradient and Exploding Gradient을 주된 문제라고 판단하였다.
상세한 원인을 살펴보자
1) 긴 Time Dependency를 갖고 있을 경우, 오차 역전파시 동일(공유)한 행렬곱(Wh)의 반복으로 인해 Wh 값의 특이값에 따라 1보다 작은 값을 갖고 있을 경우 Gradient가 Vanishing, 1보다 큰 값일 경우 Exploding
2) Activation function인 tanh을 미분했을 경우, 1보다 작기 때문에 Vanishing 될 확률이 높음
Long Short-Term memory
• 하나의 Unit에서 계산된 정보(Short-Term)를 길게(Long) 전파하는 Memory 구조를 제안함
• 기존의 RNN Unit보다 Vanishing/Exploding Gradient를 막으며, 긴 Time Step을 학습 가능하게 함
Contribution
1. 장기기억 Cell구조 도입
- 장기기억 Cell인 CEC(Constant Error Carousel)을 도입하여 Vanishing Gradient를 막았다.
- Identity Mapping으로 어떠한 Matrix 변환 없이정보를 다음 Time Step으로 전달한다. ( + 연산만 존재하여 역전파 과정에서의 정보손실이 없다.)
- BPTT로 인한 Vanishing Gradient 현상이 없어지고 더 깊은 Network 학습이 가능해진다. (더 긴 Time 학습가능)
2. Gate 구조의 도입
-Gate를 사용하여 학습 기반으로, 자동으로 Input, Output값에 대한 제어
Input Gate는 Cell State에 들어가는 정보를 업데이트하고 Cell이 직전 데이터와 현재 데이터의 업데이트 비율을 자동으로 결정하도록 하며 sigmoid function과 tanh를 변형한 squash를 이용하였다.
Output Gate는 Cell State에서 다음 외부 Output이 될 ht를 결정한다. 현재정보와 직전정보에 sigmoid함수를 이용하고 장기기억 Cell에는 squash함수를 이용하여 output 비율을 결정한다.
위와 같은 모델에서 depth가 깊어질 수록 오히려 Exploding Gradient가 되는 문제가 발생하여 추후에 저자들은 아래와 같이 Forget Gate가 탑제된 개선된 모델을 공개하였다.
Forget Gate는 다음과 같은 식으로 설명이 되는데 이는 입력값 h(t-1)과 Xt에 따라 C(t-1)을 조절하는 것을 의미한다.
3. Training Method 개선
BPTT(Back Propagation Through Time)과 RTRL(Real-Time Recurrent Learning)의 Variation을 동시에 학습 사용한다.
아래 그림과 같이 BPTT는 Output units, Hidden units, Output gates에서 이용되고 RTRL은 Input gates, CEC에서 사용된다.
BPTT와 RTRL의 특징을 간단히 알아보자면 BPTT는 속도가 빠르며 (0(n^2) 시간복잡도, (n=유닛의 수)) 일반적으로 많이 사용하지만 Backward연산이 따로 필요하며, Vanishing Gradient가 잘 나타난다. 반면에 RTRL은 속도는 느리나 (0(n^4) 시간복잡도, (n=유닛의 수)) BPTT보다는 좀 더 Vanishing Gradient에 강하고, Forward 연산 시 미분하여 Weight를 업데이트 하므로 따로 Training Phase가 필요 없어서 메모리 사용량이 적고 실시간 학습에 적합하다.
'Drawing (AI) > Paper review' 카테고리의 다른 글
BERT(1) (0) | 2023.08.02 |
---|---|
[논문 리뷰] Attention is all you need (2) (0) | 2023.07.25 |
[논문 리뷰] Attention is all you need(1) (1) | 2023.07.19 |
[논문 리뷰] AutoRec: Autoencoders Meet Collaborative Filtering (0) | 2023.07.10 |
[논문 리뷰] Deep Sparse Rectifier Neural Networks (2) | 2023.02.05 |