1. Introdution to LSTM
LSTM(장단기 메모리)는 RNN의 변형입니다.
RNN 은 입력 Xt에 대해 여러 몇 가지 게이트가 있습니다. 끝으로 ht를 구할 수 있습니다.
펼치면 거대한 신경망 노드가 생깁니다.
은닉층이 다음 은닉층에 연결되는 방식으로 작동합니다.
RNN 에는 기울기 소실 & 폭주 문제가 있었습니다.
단어를 예측할 때 굉장히 긴 시퀀스를 제공하면 기울기 소실 (Vanishing Gradient 문제가 발생합니다.)
긴 데이터 시퀀스가 학습을 방해하는 것입니다.
예를 들어 RNN에게 SKY에 대한 예측을 학습시킨다면, 이것은 작은 시퀀스로 RNN 은 잘 작동합니다.
하지만 RNN의 시퀀스가 커진다면 문제가 발생합니다.
이러한 문제를 해결하기위해 LSTM이 고안되었습니다.
RNN 과 달리 기울기 소실 및 폭주의 문제가 없습니다.
위 사진은 기본적인 RNN 네트워크의 구조입니다. 활성화 함수로는 Tanh 가 있습니다.
위 사진은 기본적인 LSTM 네트워크입니다.
Memory cell input: 큰 아키텍처의 경우 두가지 정보를 받음
마지막 셀에서 흭득한 정보를 받게됨
좌측에 셀이 있는 경우 메모리 셀 입력에 이 특정 셀의 데이터가 있다고 가정해보겠습니다.
그 다음 입력게이트에는 새로 가져와야하는 데이터가 있습니다. 해당 정보를 추출하는데 사용되야합니다.
이 두가지 정보가 제공되면 컨텍스트가 변경됩니다.
Forget gate: 망각게이트는 기본적으로 메모리셀 입력 및 입력 게이트에서 정보를 분석하여 우리에게 필요하지 않은 정보를 잊게 합니다.
여기에 두가지 활성화 함수가 있습니다. 시그모이드 활성화함수와 하이퍼볼릭 탄젠트 함수입니다.
망각게이트 뒤에는 출력게이트와 메모리셀 출력에 전달합니다.
LSTM 네트워크를 펼치면 이렇게 됩니다.
Xt가 입력되면, 이전 셀 t-1에서 나온 hidden state인 ht-1이 있습니다.
xt-1 정보를 전달하는데 사용해야하는 또 다른 노드가 있습니다.
Xt의 정보와 Xt-1의 데이터를 해당 붉은색으로 동그라미 한 부분에 저장됩니다.
그리고, 거기엔 시그모이드 함수가 있습니다.
시그모이드는 기본적으로 어떤 데이터나 정보를 골라야합니다. 그리고, 활성화함수로 사용됩니다.
여기서 0과 1의 출력을 받아 중요한 정보를 잊을지 기억할지 결정합니다.
다음 셀에 사용하기 위해 Ht에 기억을 저장하고있습니다.
cell state 는 무엇일까요?
셀 스테이트는 ht, ht-1, ht... 와같은 노드 또는 라인을 cell state라고 합니다.
게이트는 무엇일까요?
활성화 함수 또는 시그모이드 레이더 함수를 게이드라고 합니다.
LSTM 에서 대부분의 게이트는 시그모이드 형태로 사용됩니다.
2. Step by Step LSTM Walk Through
LSTM 네트워크를 단계별로 살펴보겠습니다.
- Forget gate layer
망각게이트에서는 마지막 셀인 ht-1 에서 온 로컬 컨텍스트를 갖게 됩니다.
시그마 내부에는 가중치가 있다. 두 행력의 내적으로 계산될 식이 있고, 바이어스를 추가함
이 식으로 우리가 있는 셀의 중요하지 않은 정보를 잊어버릴 것임
LSTM의 첫 단계로는 cell state로부터 어떤 정보를 버릴 것인지를 정하는 것으로, sigmoid layer에 의해 결정된다.
그래서 이 단계의 gate를 "forget gate layer"라고 부른다. 이 단계에서는 ht−1과 xt를 받아서 0과 1 사이의 값을 Ct−1에 보내준다.
그 값이 1이면 "모든 정보를 보존해라"가 되고, 0이면 "죄다 갖다버려라"가 된다.
아까 얘기했던 이전 단어들을 바탕으로 다음 단어를 예측하는 언어 모델 문제로 돌아가보겠다.
여기서 cell state는 현재 주어의 성별 정보를 가지고 있을 수도 있어서 그 성별에 맞는 대명사가 사용되도록 준비하고 있을 수도 있을 것이다.
그런데 새로운 주어가 왔을 때, 우리는 기존 주어의 성별 정보를 생각하고 싶지 않을 것이다.
- Input Gate
Ct는 cell state 라고 하고,
it는 Input state 입니다.
It(input state)는 시그모이드를 사용하고,
Ct(cell state)는 하이퍼볼릭 탄젠트 함수를 사용합니다.
다음 단계는 앞으로 들어오는 새로운 정보 중 어떤 것을 cell state에 저장할 것인지를 정한다.
먼저, "input gate layer"라고 불리는 sigmoid layer가 어떤 값을 업데이트할 지 정한다.
그 다음에 tanh layer가 새로운 후보 값들인 C~t 라는 vector를 만들고, cell state에 더할 준비를 한다.
이렇게 두 단계에서 나온 정보를 합쳐서 state를 업데이트할 재료를 만들게 된다.
다시 언어 모델의 예제에서, 기존 주어의 성별을 잊어버리기로 했고, 그 대신 새로운 주어의 성별 정보를 cell state에 더하고 싶을 것이다.
- The Current state
그 다음에는 Current State가 있습니다.
여기서 글로벌 컨텍스트를 유지할 것입니다.
ht는 로컬 턴텍스트 정보를 갖고,
Ct에는 글로벌 컨텍스트를 갖습니다.
- Output Layer
출력 레이어에는 로컬 컨텍스트 정보가 있습니다.
로컬 컨텍스트는 해당 셀의 인풋값인 Xt에서 처리된 모든 정보를 의미합니다.
이전부터 입력되고 정리하여 분석된 값은 Ct에 저장될 것입니다.
LSTM (Long Short Term Memory) 요약
I. RNN 장기 의존성 문제 개선, LSTM
가. LSTM의 개념
개념도 | |
개념 | 순환신경망의 장기 의존성 문제 해결하기 위해 셀 스테이트 기반 신경망 모델 |
나. 순환신경망의 장기 의존성 문제
- RNN은 매번 Step마다 위 과정을 반복, 역전파 시 더 많은 곱셈 연산에 따른 경사 감소로 뒤 노드까지 영향 불가
- Step t에서의 hidden layer : ht(ht-1Whh)Whh
II. LSTM의 구조 및 Layer 별 역할
가. LSTM의 구조
- LSTM 핵심 아이디어: 셀 스테이트 (Cell State)
- LSTM에 들어있는 4개 상호작용 레이어가 있는 반복 모듈
나. LSTM의 Layer 별 역할
구분구성요소Cell State | – Input, Forget, Output 게이트의 정보 반영 |
Forget Gate | – 반영 Data를 결정하는 게이트 |
Input Gate | – 새로운 정보가 Cell State에 저장 여부 |
Update Gate | – Forget, Input Gate 출력 시 Cell State 갱신 |
Output Gate | – 출력 값 결정 단계 |
III. LSTM의 동작 절차
절차개념도설명Drop정보 선택 과정 |
– Forget Gate Layer – 시그모이드 레이어로 만들어짐 |
|
저장 정보 선택 과정 |
– Input Gate Layer – 업데이트 Data 결정 – Cell State에 저장 |
|
출력 정보 선택 과정 |
– Output Gate Layer – 출력 Data 결정 – 다음 노드로 전파 |
참고 사이트
- https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr
- https://colah.github.io/posts/2015-08-Understanding-LSTMs/
- http://blog.skby.net/lstm-long-short-term-memory/
'공부정리 > Deep learnig & Machine learning' 카테고리의 다른 글
[DeepLearning] Attention (0) | 2023.01.17 |
---|---|
[Deeplearning] RNN Model (0) | 2023.01.16 |
[Deeplearning] 이미지 데이터 증강(Augmentation) - Pytorch transforms 정리 (0) | 2023.01.11 |
[Deeplearning] 작물 잎 사진으로 질병 분류하기 (2) - Pytorch (0) | 2023.01.10 |
[Deeplearning] 작물 잎 사진으로 질병 분류하기 (1) 베이스라인 설계- Pytorch (0) | 2023.01.10 |