장단기 기억 신경망(Long Short-Term Memory(LSTM))란 무엇인가?
RNN의 특별한 종류이다.
긴 시퀀스 훈련 동안 역전파에서 기울기 소멸 또는 폭발 문제를 해결하기 위해 만들어진다.
또한 LSTM은 장기적인 종속성 문제를 피하기 위해 명시적으로 설계되었다고 말할 수 있다.
많은 작업에서 표준 버전의 RNN보다 더 나은 결과를 얻었기 때문에 그것을 연구하는 것은 큰 의의가 있다.
이전 연구를 통해 RNN이 CNN과 마찬가지로 완전히 연결된 네트워크의 변형임을 알 수 있다.
그들은 모두 자신의 독특한 결과를 발표했다.
예를 들어 CNN은 부분 연결(수용 필드)과 가중치 공유의 개념을 제안했다.
RNN은 시간 단계와 '장기 기억'의 개념을 제시했다(사실 장기기억의 효과는 이루지 못하므로 단기기억이라고 부르는 것이 더 정확하다).
LSTM은 진정한 의미의 '장기 기억'을 구현하고 '단기 기억'을 유지한다.
여기에는 게이트(Gate \(\Gamma\))와 셀 상태(Cell state \(c_i\))라는 두 가지 중요한 개념이 있다.
제가 알기로는 단순 RNN 네트워크의 '장기 기억'과 구별하기 위해 'Cell state'라는 새로운 이름을 붙였다.
즉, 단순 RNN에서 달성될 것으로 예상되는 "장기 기억"이 실제로 LSTM에서 구현되어 셀 상태\(c^i\)라는 새로운 이름이 부여된다.
먼저 'Gate'(문)이라는 개념을 이해해야 한다.
Gate의 개념
다음 세 가지 임계값이 Forget Gate, Update Gate 및 Output Gate가 포함된다.
그것들은 현재 입력이 받아들여졌는지, 장기기억인지, 또는 메모리의 입력이 현재 출력되는지 여부를 결정하는 데 사용된다.
이 세 개의 문을 통해 뉴런의 상태를 보호하고 제어한다.
'역치'라고 해서 이해하는 것이 좋을 것 같다.
이 '밸브'를 통해 게이트 조건을 만족하는 부분이 출력되고, 만족하지 못한 부분은 차단된다.
첫 번째는 망각의 문이다. 이전 타임 스텝에서 전송된 정보의 스크리닝을 완료한다.
1.망각 게이트(Forget Gate)
주로 0과 1 사이의 값을 제어하는 'sigmoid' 활성화 함수로 구성된다.
이는 '선택적 기억' 기능을 구현하는 데 도움이 된다.
0을 곱한 숫자는 0이기 때문에 값이 사라지거나 잊혀진다.
그리고 1을 곱한 데이터가 저장된다.
물론 절대적인 0과 1은 아니다.
정확히 말하면 전달된 값을 0과 1 사이로 압축하는 것이다.
0에 가까울수록 폐기되고 1에 가까울수록 예약됨을 의미한다.
따라서 네트워크는 학습 과정을 통해 중요하지 않은 데이터가 잊혀질 수 있는지 또는 중요한 데이터가 저장될 수 있는지 알 수 있다.
마지막으로 필터링된 데이터(행렬)와 이전 시간 단계에서 전달된 장기 기억 데이터(행렬)에 해당 위치 곱셈(아다마르 곱)을 수행한다.
이것은 이전 시간 단계의 셀 상태\(c^{(i-1)}\)의 보유 정도를 결정한다.
수학 공식 요약으로 계속 진행한다.$$
\Gamma_{F}^{(i)}=\sigma\left(w_{h F}^{(i)} h^{(i-1)}+w_{z F}^{(i)} z^{(i)}\right)
$$
2.업데이트 게이트(Update Gate)
그렇다면 현재 시간 스텝의 정보는 장기기억에 가치가 있는 것인가?
이를 위해서는 'Update Gate'를 필요하다.
업데이트 게이트의 수학적 원리는 망각 게이트와 정확히 동일하다.
단지 아다마르 곱 계산의 대상이 다를 뿐이다.
이 과정은 '후보 기억 생성'이라고도 불린다.
그렇다면 '선택에 참여하기' 전에 출력을 활성화하기 위해 tanh 함수를 사용해야 하는 이유는 무엇인가?
'sigmoid' 함수를 사용하여 데이터 범위를 압축(0~1)하는 것과 동시에 0(삭제), 1(출력) 필터를 사용하는 경우이면,
'tanh'는 데이터 크기를 0과 1(절대값) 사이로 압축할 수 있을 뿐만 아니라 더 빠른 수렴 속도를 달성할 수 있다.
tanh의 함수 그래프가 0을 중심으로 하기 때문이다.
tanh함수 활성화 한 정보 값은 소위 '후보 기억\(\widetilde{c}^{(i)}\)'이다.
따라서 이 '업데이트 게이트'는 현재 시간 단계의 정보를 장기간 저장해야 하는지 여부에 대한 판단을 완료했다.
또수학 공식 요약으로 계속 진행한다.$$
\tilde{c}^{(i)}=\tanh \left(w_{h c}^{(i)} h^{(i-1)}+w_{z c}^{(i)} z^{(i)}\right)
$$ $$
\Gamma_{U}^{(i)}=\sigma\left(w_{h U}^{(i)} h^{(i-1)}+w_{z U}^{(i)} z^{(i)}\right)
$$ $$
c^{(i)}=\Gamma_{F}^{(i)} \otimes c^{(i-1)}+\Gamma_{U}^{(i)} \otimes \tilde{c}^{(i)}
$$
지금까지는 이 두 개의 '게이트'를 통해 역사적 정보와 현재 정보의 연관성을 달성했다.
그렇다면 지금까지 수신된 '셀 상태' 정보 중 다음 단계로 전달할 가치가 있는 비율은 얼마나 된가?
3.출력 게이트(Output Gate)
업데이트 게이트에서 tanh와 sigmoid의 조합을 이해할 수 있다면 이 부분은 잘 이해될 것이다.
지금까지 단순 RNN과 유사한 '두 개의 출력' \(h^{(i)}\)와 \(y^{(i)}\)도 구현되었다.
또수학 공식 요약으로 계속 진행한다.$$
\Gamma_{O}^{(i)}=\sigma\left(w_{h O}^{(i)} h^{(i-1)}+w_{z O}^{(i)} z^{(i)}\right)
$$ $$
\begin{aligned}
h^{(i)} &=\Gamma_{O}^{(i)} \otimes \tanh \left(c^{(i)}\right) \\
y^{(i)} &=\operatorname{softmax}\left(h^{(i)}\right)
\end{aligned}
$$
마지막으로 이들을 병합하면 완전한 LSTM 신경 노드 계층이 된다.
LSTM VS 표준 RNN
분명히 LSTM이 망각 게이트만 열고 업데이트 게이트와 출력 게이트를 모두 닫으면 이전의 단순 RNN이 얻어진다.
Comments