[DeepLearning] LSTM 공부하기

Soyeon You·2023년 7월 23일
0

Study

목록 보기
1/4

LSTM(장단기 메모리)

가장 단순한 형태의 RNN인 Vanilla RNN(Simple RNN)의 한계를 극복하기 위한 다양한 RNN의 변형이 생겨났는데, 그 중 하나가 LSTM이다.

바닐라 RNN의 한계

그럼, 바닐라 RNN은 어떤 한계가 있어서 극복하려하는걸까?

첫번째는 시퀀스가 길어질 수록 앞의 정보가 뒤로 충분히 전달되지 못한다는 점이다.
바닐라 RNN은 현재 시점의 출력이 이전 시점의 계산 결과에 의존하기 때문에
시점이 길어지면 초반 시점의 정보가 손실되어 가는 것이다.

예를 들어, 이런 문장이 있다고 하자.

"모스크바에 여행을 왔는데 건물도 예쁘고 먹을 것도 맛있어. 다음에 꼭 같이 오자. 여기는 겨울이 정말 예쁘대! 그래서 우리의 다음 여행지는 (___)"

그리고 빈칸에 들어갈 단어을 예측해본다면
초반에 나온 정보인 모스크바를 문장의 마지막인 빈칸까지 기억하지 못해서(전달되지 못해서) 엉뚱한 장소를 예측할 수 있다.

이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 한다.
장기 의존성 문제는 중요한 단어가 시퀀스 초반에 나올 경우에 치명적이다. 그럼 이젠 이 한계를 해결하기 위한 LSTM을 알아보자.

바닐라 RNN

LSTM


그림에서 보이듯이 바닐라 RNN과 다르게 은닉층의 메모리 셀에 추가된 것들이 좀 많다.
이것들은 불필요한 기억을 지우고 기억해야할 것을 정하기 위한 입력 게이트, 망각 게이트, 출력 게이트이다.
따라서 바닐라 RNN보다 은닉 상태를 계산하는 식이 더 복잡해졌고 셀 상태(cell state) 값이 추가됐다고 볼 수 있다.

참고로 시그모이드 함수를 사용해서 각 게이트의 역할을 조절한다.
ex. 0과 1사이의 값으로 얼만큼 새로운 정보를 셀 상태에 추가할지 결정


(1) 입력 게이트

입력 게이트는 현재 정보를 기억하기 위한 게이트이다.

왜 필요할까?
입력 게이트는 현재 입력값에 대해 어떤 정보를 저장할지 결정하는 게이트이다.
이 게이트를 통해 새로운 정보를 기억할지 말지 결정한다.

어떨 때 필요할까?
새로운 입력값이 들어올 때, 어떤 정보를 유지하고 어떤 정보를 새로운 값으로 업데이트를 할 지 결정할 때 사용된다.

쓰면 뭐가 좋을까?
장기적인 패턴과 의존성을 더 잘 기억하고 학습할 수 있다.
즉 LSTM이 새로운 정보를 선택적으로 기억하고 기존 정보를 유지하는 데 도움을 준다.

(2) 삭제 게이트(망각 게이트)

삭제 게이트는 기억을 삭제하기 위한 게이트이다.

왜 필요할까?
삭제 게이트는 이전 시점에서 어떤 정보를 삭제할지 결정하는 게이트이다.
이 게이트를 통해 불필요한 정보를 삭제하고 중요한 정보만 유지한다.

어떨 때 필요할까?
이전 시점의 정보 중에서 현재 시점에 불필요한 정보를 삭제하고 싶을 때 사용된다.

쓰면 뭐가 좋을까?
메모리 사용을 최적화해서 모델의 효율성을 향상시킨다.
즉 LSTM이 중요한 정보만 유지하고 불필요한 건 제거한다.

(3) 셀 상태

셀 상태는 이전 시점에서 받은 정보를 저장하고 이후 시점에서 유용한 정보를 유지하는 역할을 한다.

왜 필요할까?
LSTM은 RNN의 단점인 기울기 소실 문제를 완화하고, 장기 의존성 문제를 해결하도록 개선된 구조이다.
이를 위해 셀 상태를 추가하여 중요한 정보는 유지하고 필요한 정보는 업데이트해서 장기 패턴을 기억할 수 있다.

기울기 소실 문제를 어떻게 완화할까?
RNN은 모든 시점에서 같은 가중치를 반복 사용한다.
LSTM은 각 시점마다 입력과 이전 시점의 은닉 상태를 셀 상태에서 고려함으로써 기울기를 업데이트한다.

어떨 때 필요할까?
긴 시퀀스 데이터나 시계열 데이터에서 중요하다. 더 장기적인 패턴을 학습하기 위함!

쓰면 뭐가 좋을까?
셀 상태를 사용하는 LSTM은 기울기 소실 문제를 완화하고, 장기 패턴을 더 잘 학습할 수 있다.

어떻게 구할까?
셀 상태 (C_t) = 삭제 게이트 (f_t) 이전 셀 상태 (C_t-1) + 입력 게이트 (i_t) 새로운 정보 (g_t)


LSTM을 예시를 들어 쉽게 이해해보자

컵에 음료를 넣고 빼는 상황이다. *물 = 정보, 컵 = 셀 상태

  1. 처음에는 빈 컵이다. 컵에는 아무런 정보도 없다. 이게 LSTM의 초기 상태
  2. 새로운 음료를 받았을 때, 컵은 이 음료를 넣을지 말지를 결정한다.
    이 음료가 필요하다면 컵에 넣을 것이고 별로 필요 없다면 아무것도 넣지 않을 것이다. 이게 LSTM의 (입력 게이트)
  3. 컵이 담고 있는 음료가 있을 때, 이 음료가 필요없다고 생각하면 그 음료를 버릴 거고 계속 필요하다면 그대로 유지할 것이다. 이게 LSTM의 (삭제 게이트)
  4. 마지막으로, 컵에 담긴 음료 중에서 다음 컵에게 전달할 음료를 선택한다.
    이렇게 전달받은 음료로 특허를 내거나 판매를 하거나 다양한 활동을 할 수 있다. 이게 LSTM의 (출력 게이트)

0개의 댓글