LSTM
Vanilla RNN
•
ht: 은닉층
•
yt: 출력층
•
Xt: 입력층
•
tanh(): 비선형 활성화 함수
•
일반적인 RNN의 경우 짧은 시퀀스를 처리할 경우 유리하며, 관련 정보와 그 정보를 사용하는 지점 사이 거리가 멀어지는 경우 학습 능력이 현저하게 저하된다.
장단기 메모리 (Long Short Term Memory: LSTM)
•
기울기 소멸 문제(vanishing gradient problem): Vanilla RNN에서 관련 정보와 그 정보를 사용하는 지점 사이 거리가 멀 경우 역전파시 그래디언트가 점차 줄어 학습능력이 크게 저하되는 것
→ 이를 해결하기 위해서 고안된 것이 LSTM
LSTM 구조
•
LSTM의 메모리 셀은 입력값과 이전 상태에 따라 값을 업데이트하고, 새로운 상태를 출력한다.
•
차이점은 셀의 값을 얼마나 기억할지 결정하는 것이 가능한 게이트를 가지고 있어서 필요한 정보만 기억하도록 제어할 수 있다.
•
메모리 셀 안에는 상태 정보를 변경하는 게이트를 가지고 있다.
•
셀(cell) : 시퀸스 데이터 저장
•
게이트(gate) : 셸 상태 조작, 각 게이트는 활성화 함수(시그모이드, 하이퍼볼릭 텐젠트 함수 등)을 사용
LSTM 동작 원리
Cell State (셀 상태)
•
LSTM의 핵심, 모듈 그림에서 수평으로 그어진 윗 선에 해당한다.
•
Cell state는 컨베이어 벨트와 같아서, 작은 linear interaction만을 적용히키면서 전체 체인을 계속 구동시킨다.
•
Cell state에 뭔가를 더하거나 없앨 수 있는데, 이 방법을 Gate라고 한다.
•
아래 그림은 sigmoid layer(0과 1 사이의 숫자를 내보냄)와 pointwise 곱셈을 나타낸 것이다.
Gate
•
Forget Gate (망각 게이트)
◦
과거 정보를 얼마나 잊을지에 대한 단계이다.
◦
결과 값이 1이면 "이전 상태의 모든 정보를 보존"가 되고, 0이면 "이전 상태의 모든 정보를 삭제"가 된다.
•
Input Gate (입력 게이트)
◦
현재 정보를 얼마나 기억할 것인지에 대한 단계이다.
•
State Update (상태 수정)
◦
이전 cell state인 C(t-1)를 업데이트해서 새로운 cell state인 C(t)를 만드는 단계이다.
•
Output Gate (출력 게이트)
◦
다음 state로 내보낼 output(hidden state)을 구하는 단계이다.
Bi-LSTM(Bi-directional long short term memory)
•
RNN이나 LSTM은 입력 순서를 시간 순대로 입력하기 때문에 결과물이 직전 패턴을 기반으로 수렴하는 경향을 보인다는 한계가 있습니다.
•
이 단점을 해결하는 목적으로 양방향 순환신경망(Bi-LSTM)이 제안되었습니다.
예를 들어 "나는 영화를 보았습니다."에서
•
RNN/LSTM인 경우, "나는"을 이용해서 "영화를" 예측해야 합니다.(즉, 예측이 힘듭니다.)
•
Bi-LSTM인 경우, "나는", "보았습니다."를 이용해서 "영화를" 예측하는 구조입니다.