0. Reference
https://arxiv.org/abs/1503.04069
LSTM: A Search Space Odyssey
Several variants of the Long Short-Term Memory (LSTM) architecture for recurrent neural networks have been proposed since its inception in 1995. In recent years, these networks have become the state-of-the-art models for a variety of machine learning probl
arxiv.org
1. Introduction
- RNN에서 LSTM은 Sequential data를 학습하는데 효과적인 모델이라고 자리 잡혔다.
- 기존의 RNN이 붙잡지 못했던 long-term temporal dependencies를 효과적으로 포착할 수 있었다.
- 그래서, LSTM은 여러 문제에서 SOTA을 발전시키는 데 활용되었다고 한다.
ex) 문제 예시
"""
- Handwriting recognition / Handwriting generation
- Language Modeling / Translation
- Acoustic modeling of speech / speech synthesis
- Protein secondary structure prediction
- audio and video data anlysis
"""
- 본 논문에선 LSTM을 구성하는 다양한 연산 요소들의 유용성과 LSTM의 Architecture를 향상시키는 방안을 담고 있다.
2. Vanilla LSTM
- Vanilla LSTM의 구조는 다음과 같이 이루어져 있다. (이것들이 재귀적으로 연결되어 있다.)
"""
i) 3가지 gate (input gate, forget gate, output gate)
ii) block input
iii) CEC
iv) output activation function
v) peephole connections
"""
2.1. Forward pass
- LSTM의 weight들은 다음과 같이 Notation을 정한다.
- 각 gate에 따른 순전파 공식은 다음과 같다.
2.2. Backpropagation
- 역전파는 다음과 같이 계산된다고 한다. 가볍게 보고 가자.
3. History of LSTM
3.1. forget gate
- 기존의 LSTM엔 forget gate가 없었다고한다.
- 그래서 forget gate를 도입하였다고 한다.
- 이 기능을 통해 LSTM은 자기 자신의 상태를 직접 초기화할 수 있게 되었다고 한다.
- 이를 통해 Embedded Reber Grammer와 같은 지속적인 학습이 필요한 작업을 수행할 수 있게 되었다고 한다.
3.2. Peephole Connections
- LSTM이 정확한 타이밍을 학습하려면 Cell이 직접 Gate를 직접 제어해야한다고 한다.
- 그러나 기존 LSTM에선 output gate가 열려있을때만 Cell이 Gate를 제어할 수 있었다고 한다.
- 이를 해결하기위해 Peephole이 도입되었으며, 이로 인해 더 정밀한 타이밍을 학습할 수 있게 되었다고 한다.
4. Evalution Setup
- 논문에서의 연구는 SOTA를 위함이 아니라, 다양한 LSTM 변형 모델들을 실험적으로 비교하는 것에 초점을 맞췄다.
- Vanilla LSTM을 baseline으로 사용하고, 8가지의 변형 모델과 함께 평가한다.
- 각 번형 모델은 기존의 Vanilla LSTM의 특정 기능을 추가하거나 제외하고(한개만)
- 각 요소의 역할이나 성능의 개별적인 영향을 알아보고자 하였다.
- 각 LSTM을 공정하게 평가하기 위해선 동일한 실험환경에 놓여야 하는데,
- 이때, Hyperparameter는 서로다른 설정이 필요할 지도 모른다.
- 이를 위해 Random Search 사용하여 Hyper-parameter를 찾아냈다고 한다.
5. Result & Discussion
- LSTM에서 Output Activation Function과 forget gate를 제거하였더니 성능이 급격히 저하되는 모습을 보였다.
--> Output Activation Function과 forget gate는 중요한 역할을 한다는 것을 알 수 있다.
- 하지만 여기서 Output Activation Function이 없는 경우,
- Forget gate와 Input gate를 결합하면 해당 문제를 해결할 수 있다고한다.
- GRU가 Output Activation Function이 없어도 성능이 좋은이유를 설명할 수 있게 되었다.
- Peephole같은 경우 있으나 없으나 성능차이가 크지 않다고 한다.
--> 불필요한 경우 제거 가능하다.
- Hyper-parameter 튜닝 때, Learning rate가 성능에 굉장히 영향이 크다고 한다.