Search

LSTM

대분류
인공지능/데이터
소분류
ML/DL 정리 노트
유형
딥 러닝
부유형
NLP Pytorch
최종 편집 일시
2024/10/27 15:22
생성 일시
2024/10/07 01:42
14 more properties

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인 경우, "나는", "보았습니다."를 이용해서 "영화를" 예측하는 구조입니다.