0. Reference
https://ieeexplore.ieee.org/abstract/document/6795963
Long Short-Term Memory
Learning to store information over extended time intervals by recurrent backpropagation takes a very long time, mostly because of insufficient, decaying error backflow. We briefly review Hochreiter's (1991) analysis of this problem, then address it by intr
ieeexplore.ieee.org
1. Introduction
- 기존의 RNN, BPTT, RTRL에서 역전파를 계산할 때, Gradient Vanish나 Gradient explode가 자주 발생하는 경향이 있다.
- 해당 논문에선 이를 해결한 LSTM에 대해 설명한다.
2. Previous Work
- 생략하겠지만, 논문보고 한번 봐보는 걸 추천한다.
3. Constant Error Backpropagation
3.1. Exponentially Decaying Error
3.1.1. Conventional BPTT
- BPTT에서 Loss Function으로 MSE을 사용할 때, Backpropagation은 다음과 같다.
3.1.2. Outline of Hochreiter's Analysis
- 해당 섹션은 Hochreiter's Analysis를 요약하였다고 볼 수 있다.
- 기존의 RNN에서 Gradient Vanish나 Gradient Explode가 발생하는 이유를 서술한다.
- 우선 기존의 RNN에서 역전파를 수식으로 나타내면 다음과 같다.
- 이를 조금 더 일반화 하면 다음과 같아진다.
3.1.3. Intuitive Explanation
- 마지막으로 일반화한 식을 통해 Gradient Vanish나 Gradient Explode가 발생하는 이유를 알아보자.
- 만약 미분한 값이 1보다 크다면, 계속 1보다 큰 값이 계속 곱해지기 때문에 Gradient가 Explode하게 된다.
- 만약 미분한 값이 1보다 작다면, 계속 1보다 작은 값이 계속 곱해지기 때문에 Gradient Vanish가 일어나게 된다.
- 그로인해 Long-Term Dependencies를 학습할 수 없게 된다.
3.2. Constant Error Flow : Naive Approach
3.2.1. A single unit : Naive approach
- Gradient vanish를 피하기 위해 우리는 어떻게 해야할까?
- 해당 값을 1보다 작거나 1보다 크게 만드는게 아니라, 딱 1이면 해결이가능하다.
3.2.2. CEC(Constant Error Carousel)
- 위의 식을 적분하면 다음과 같은 f(net)을 얻을 수 있다.
- 이는 f가 linear function임을 시사한다.
- 해당 식을 만족해야 하는데, 그 이유는 시간이 감에 따라 변화가 없길 바라기 때문이다.
- 이를 통해 f는 identity function이여야 하고, w는 1이 되어야 한다는 것을 알 수 있다.
- 이를 우리는 CEC(Constant Error Carousel)이라고 하고, 이는 LSTM의 핵심 기능이 된다.
- 하지만 2가지 핵심 문제가 발생한다.
i) 입력 가중치 충돌:
- 동일한 입력 가중치가 입력을 저장하는 동시에 무시하는 두 가지 상충되는 역할을 수행해야한다.
- 이로 인해 가중치 업데이트 신호가 충돌하고, 학습이 어려워진다.
ii) 출력 가중치 충돌:
- 동일한 출력 가중치가 정보를 검색하는 동시에 다른 유닛을 보호하는 두 가지 상충되는 역할을 수행해야함
- 이로 인해 가중치 업데이트 신호가 충돌하고, 학습이 어려워진다.
- 이러한 두가지 문제를 해결하기 위해 게이트 메커니즘(입력게이트,출력게이트,망각게이트)를 도입하여 해결하게 된다.
4. The Concept of Long Short-Term Momory
4.1. Memory Cells and Gate Units
- naive approach의 단점 없이 특별한 self-connected units를 통해 Constant Error Flow를 허용하는 Architecture를 구축하기 위해, CEC를 추가 기능으로 확장하게 된다.
- Multiplicative Input gate unit은 memory contents가 irrelevant inputs에 의해 방해받지 않도록 보호하기 위해 도입되었고,
- Multplicative output gate unit은 현재 irrelevant한 memory contents가 다른 units를 방해하지 않도록 보호하기 위해 도입되었다.
- 이렇게 복잡해진 unit을 memory cell이라고 한다.(j번째 memory cell을 c_j라고 Notation을 정함)
- 각각의 memory cell들은 CEC를 중심으로 구축된다.
- 뿐만 아니라, Output gate인 multiplicative unit (out_j 혹은 o_j),
- Input gate인 multiplicative unit(in_j 혹은 i_j)로부터 입력을 받는다.
- 그러면 다음과 같은 Notation이 정의된다.
- 추가적으로, Memory cell c_j의 입력은 다음과 같이 주어진다.
- 여기서 summation에서 u는 input unit, gate unit, Memory cell, Hidden unit등을 포함할 수 있다.
- 이러한 다양한 Unit들은 network의 현재 상태에 대한 유용한 정보를 전달할 수 있다고 한다.
- 각 unit들의 역할은 뒤에 섹션에 나오기에 잠시후에 자세히 알아보도록 하자.
- 우선 해당 memory cell의 c_j의 출력은 다음과 같다.
4.2. Why gate Units?
- Input gate는 input weight의 충돌을 방지하기 위해 memory cell의 입력 연결로의 error flow를 방지한다.
- Output gate는 output weight의 충돌을 방지하기 위해 memory cell의 출력 연결로의 error flow를 방지한다.
- 즉, 신경망은 Input gate를 통해 memory cell의 정보를 유지할지 덮어쓸지를 결정하고,
- Output gate를 통해 memory cell에 저장된 정보를 접근할지, 차단할지 결정가능하다.
- 이러한 과정을 CEC를 통해 이루어진다고 한다.
cf) input gate, output gate는 둘 다 사용하진 않아도 된다고 논문에 나와있다.
4.3. Network Topology
- 일반적인 Deep learning 모델들과 마찬가지로, input layer, hidden layer, output layer로 구성되어 있다고 한다.
- hidden layer에선 memory cells을 포함하고 있으며, full self-connected되어있다고 한다.
- 또한, hidden units이 포함되며, gate unit 및 memory cell에 input을 제공하는 역할을 한다.
- 모든 layer의 unit들은 자신보다 더 높은 layer의 모든 unit에 단방향으로 연결된다고 한다.(directed connections)
4.4. Memory Cell Blocks
- 크기가 S인 memory cell block은 같은 input gate와 같은 output gate를 공유하는 S개의 memory cell로 이루어져 있다.
- 이러한 block structure는 정보 저장을 효율적으로 수행할 수 있도록 돕는다고 한다.
5. Experiments
- 이러한 long-time-lag algorithm의 성능이 좋아지려면 어떤 조건을 만족해야할까?
- 모든 학습데이터에서 input과 output 사이의 minimal time 차이가 충분히 길어야한다.
- 기존의 BPTT, RTRL등의 RNN들은 long-time-lag 문제에서 실패하였다고한다.
- 그 이유는, Error Signal이 전파되면 전파될수록 지수적으로 줄어들기 때문이다.(gradient vanish)
- 이러한 RNN의 한계를 LSTM을 통해 극복하였다고 서술되어 있다.
5.1. Experiment 1 : Embedded Reber Grammer
5.1.1. Task
- 처음엔 short time lag 문제에 대한 RNN의 성능을 평가하는게 목적이였다.
- 그 이유는 기존의 많이 사용되었던 RTRL, BPTT들이 완전히 실패하지 않는 환경에서 비교하기 위함이다.
- 이를 통해 Output Gate의 유용성을 시연할 수 있게 된다.
- 실험 개요는 다음과 같다.
- Reber Grammer을 기반으로 한 문자열을 생성하고 예측하는 실험이다.
- 신경망은 입력된 문자열의 다음 기호를 예측해야한다.
- 최대 9개의 기호로 이루어져 있다.(short-time-lag) --> 기존 RNN 알고리즘도 일부 성공 가능해짐
- 작동 방식은 다음과 같다.
- 빈 문자열에서 출발하여, edge를 따라 이동하며 기호를 추가한다.(오른쪽 끝 노드에 도달할 때 까지)
- 선택지가 있는 경우 edge는 무작위로 선택된다.
5.1.2. Comparison
- 총 4가지 Elman, RCC,RTRL,LSTM의 모델을 비교해보았는데 결과를 요약하면 다음과 같다.
- Elman
-- short-time-lag 문제에선 성공적인 모습을 보이지만, 복잡한 패턴 학습엔 한계가 있음
- RCC
-- 네트워크 구조를 동적으로 확장하며 하습하지만, LSTM보다 성능이 낮음.
- RTRL
-- short-time-lag 문제에서 일부 성공적이지만, 작업 단순화를 통해 성능을 끌어올려야함
-- LSTM은 이러한 단순화 없이 더 나은 성능을 보임
- LSTM
-- Output gata와 같은 메커니즘을 통해 필요한 정보를 효과적으로 필터링하고 활용함
-- 복잡한 조건에서도 높은 정확도로 문자열을 예측 가능함
5.1.3. Conclusion
- LSTM에서 Output gate를 제거해보았더니,
- memory cell의 정보가 무분별하게 output layer에 전달되었고,
- 이로 인해 필요하지 않은 정보가 예측을 방해하고, 학습 속도가 크게 느려졌다고 한다.
- 이를 통해, Output gate는 LSTM의 핵심 구성 요소 중 하나라는 알 수 있다.
- Output gate는 정보를 필터링하거나 학습 속도를 높여주는 역할을 해준다.
5.2. another Experiments
- 나머지 실험결과에 대해선 논문을 참고하시기 바랍니다..
6. Discussion
6.1. Limitations of LSTM
6.1.1. Strongly delayed XOR problems
- LSTM는 Strongly delayed XOR problem를 쉽게 해결하지 못한다고 한다.
- 그 이유는 두 개의 배열을 완벽히 기억해야하기 때문이다.
- Strongly delayed XOR problem은 subgoal로 나눌 수 없는 non-decomposable한 문제이기 때문이다.
- 즉 쉽게 해결할 수 있는 subgoal을 먼저 풀어도 최종 해결에 도움이 안된다.
6.1.2. LSTM이 직면하는 문제들
- CEC를 통한 일정한 error flow덕분에, LSTM은 전체 입력을 한 번에 보는 feedforward 신경망과 비슷한 문제를 겪는다.
- LSTM은 "최근 입력일수록 더 중요하다"라는 개념을 다루는 데 있어, 다른 접근법들과 동일한 수준의 한계를 가진다.
- 모든 그래디언트 기반 접근법은 정확한 시간 카운팅을 하는데 어려움을 겪는다.
ex) 어떤 신호가 99step 전에 발생했는지, 100step 전에 발생했는지 차이를 구분해야 한다면, 추가적인 카운팅 메커니즘이 필요하다.
- 하지만, 3 step vs 11 step 을 비교하는 쉬운 문제는 해결이 가능하다.
- 이를 memory cell의 output과 Input간 negative connection을 만들어,
- 최근 입력을 더 강조하거나, 필요할 때 적절한 decay를 학습할 수 있기 때문이다.
7. LSTM 각 gate의 수학적의미
7.1. Forget gate
- 이전 상태의 정부 C_(t-1) 중 어떤 정보를 버릴지 결정한다.
- h_(t-1)과 x_t를 결합한 벡터를 입력으로 받는다.
- sigmoid function을 통해 0~1사이의값을 출력한다. (1에 가까울수록 정보를 유지하고, 0에 가까울수록 정보를 삭제함)
- Weight와 bias는 학습과정에서 Optimal하게 된다.
7.2. Input gate
- 새로운 정보를 셀 상태 C_t에 얼마나 추가할지 결정한다.
- i_t : sigmoid function으로 update 강도를 결정한다.
- ~C_t : tanh 함수로 새로운 후보 값을 생성한다.(-1과 1사이로 스케일링해준다.)
- 최종적인 업데이트로 새로운 정보의 중요도와 내용을 반영한다.
7.3. Cell state update
- 장기 메모리를 저장하는 핵심 상태를 업데이트한다.
- 덧셈의 왼쪽부분 : Forget Gate를 통해 이전 정보를 선택적으로 유지
- 덧셈의 오른쪽부분: input gate를 통해 새로운 정보를 선택적으로 추가
7.4. Output gate
- C_t에서 어떤 정보를 출력할지 결정한다.
- sigmoid를 통해 출력 강도를 조절한다.
- tanh를 통해 [-1,1] 범위로 스케일링한다.
'Paper Review(논문 리뷰) > Deep Learning' 카테고리의 다른 글
[논문 리뷰] [Deep Learning] empirical evaluation of gated recurrent neural networks on sequence modeling (0) | 2025.02.05 |
---|---|
[논문 리뷰] [Deep Learning] LSTM: A Search Space Odyssey (1) | 2025.02.05 |
[논문 리뷰] [Deep Learning] Machine Learning Students Overfit to Overfitting (1) | 2025.02.01 |
[논문 리뷰] [Deep Learning] Group Normalization (1) | 2025.01.21 |
[논문 리뷰] [Deep Learning] Layer Normalization (0) | 2025.01.21 |