본문 바로가기
딥러닝

LSTM의 Cell State 특징 및 원리

by 데이널 2024. 4. 22.

이전 글에서 LSTM의 배경과 구조에 대해 알아보았습니다. 이번 글에서는 LSTM의 핵심 아이디어인 Cell State의 특징 및 원리에 대해서 알아보도록 하겠습니다. 

 

 

Cell State 기능 및 원리

Cell state를 쉽게 설명하기 위해 비유하자면 일종의 컨베이어 벨트와 같다습니다. 정보가 계속 전달되는 Chain으로 이뤄진 컨베이어 벨트이죠. 전체 Chain을 따라 가다보면, 몇몇은 작은 선형 상호작용이 일어나기도 합니다. 이러한 방식은 원래의 정보는 변하지 않으며서, 그냥 흘러가기가 매우 쉬운 방식이라는 이점이 있습니다. 이는 시계열 데이터의 약점인 오래된 데이터에 대한 '기억 상실'인 정보 전달을 할 수 없는 문제를 개선해 줍니다. 

 

Cell Sate 기능 및 원리
Cell State


그림에서 볼 수 있듯이 Long Term에 대해 '기울기 소실'의 주범인 활성화 함수를 거치지 않고 정보 전달하게 되어 있습니다. 어떠한 matrix 변환 없이 입력 정보를 다음 time step으로 전달하는 방식이라는 것이죠. 이 방법은 + 연산만 존재하여 backpropagation 시 정보손실이 거의 발생하지 않습니다.

 

그렇다면 이러한 세심한 정보 전달을 어떻게 가능하게 할까요? LSTM은 Gate라고 불리는 '구조물'에 의해 세세하게 얼마나 전달할지를 조절합니다. 이는 결국 Gate에 의해 Cell State에 정보를 제거 또는 추가하는 기능을 담당하고 있습니다. 


요약하면, Cell Sate는 컨베이어 벨트라고 했습니다. 이는 정보를 물 흐르듯 전달하는 방식이죠. 여기서 중요한게 물을 얼마나 보낼가 인데요. 그 정보 전달의 조절은 3개의 Gate에 의해 선택적으로 보내게 됩니다. 참고로 Gate는 Sigmoid Neural Network Layer과 Pointwise Multipliction Operation으로 구성됩니다. 

 

 

Sigmoid Layer

0과 1 사이의 숫자를 출력하며, 각 구성 요소 중 어느 정도가 통과되어야 하는지 설명합니다. 이는 문(Gate)을 여닫는 것과 비슷합니다. 

  • 0 : 이전 cell state 값을 0으로 만들어, 미래 결과에 영향을 주지 않음
  • 1 : 이전 cell state 값을 그대로 보내, 미래 결과에 영향을 줌

 

Gate의 역할

앞에서 Gate는 문을 여닫는 것과 비슷하다고 했습니다. Gate는 어떤 시점의 정보를 얼마나 전달할지에 대한 역할을 합니다. 

  • Input Vector(vinput) : 𝑡1 벡터와 𝑥𝑡 벡터
  • 𝑊𝑔 : 값을 선형으로 변경해 주는 weight(가중치) = Linear Transformation
  • 𝜎 : 시그모이드 함수로 0~1 사이의 값으로 매핑 = Mapping transformation output into 0~1 range
  • 𝑔𝑡 : 게이트 결괏값으로 0~1 사이의 원소값들 = Vector with 0~1 elements

다음 Cell state의 수식은 Ct^=gtCt 가 됩니다. 이는 𝐶𝑡 의 Gating Information, 즉 현재 정보를 다음에 얼마나 영향을 줄지에 대해 나타낸 것입니다. 이렇게 해서 어떤 정보는 제거되고 어떤 정보는 유지할지에 대해 계산하게 됩니다. 이런 Gate의 기능을 수식으로 나타내면 아래와 같습니다. 

Gate의 수식
Gate의 수식

 

 

LSTM 처리 절차

 

이제 간단하게 LSTM의 처리 절차에 대해 요약해 보겠습니다. 더 상세한 3개의 Gate에 대한 기능은 다른 글에서 설명하도록 하겠습니다. 

 

LSTM의 처리 절차
LSTM의 처리 절차


 

1. 𝐶𝑡1 에서 불필요한 정보를 지운다.

  • 이 부분은 정보를 지운다고 해서 '잊다'의 의미를 사용하여 Forget Gate라고 합니다. 

2. 𝐶𝑡1 에 새로운 Input 𝑡1𝑥𝑡 를 보고 중요한 정보를 넣는다.

  • 이전 시점의 히든 state의 상태와 현재 시점의 값의 상태를 입력해 준다고 해서 Input Gate라고 합니다. 

3. 위 과정을 통해 𝐶𝑡 (Cell state 현재값)를 만든다.

  • Forget Gate와 Input Gate를 통해 Cell state를 현행화(update)한다고 해서 Update cell state라고 합니다. 

4. 𝐶𝑡 를 적절히 가공해 해당 해당 t(현 시점)에서 𝑡 를 만든다.

  • 최종적인 결과를 낸다고 해서 Output Gate라고 합니다. 

5. 𝐶𝑡𝑡 를 다음 stept+1 로 전달한다.