데이터 스터디/DL

[논문 읽기] Generating Sequences With Recurrent Neural Networks (LSTM)

케이와이엠 2023. 11. 14. 17:31

LSTM의 개요

 

RNN이, hidden state 하나만을 가지고, 모든 time step의 정보를 저장하고자 했다면, LSTM은 크게 2가지 구조를 통해서 RNN과의 차이점을 가짐

 

① hidden state를 통해 short term memory (단기기억)를 조절하고 cell state를 통해 long term memory(장기 기억) 보존

forget, input, output, 3개의 gate를 통해 , 매 time step의 cell state와 hidden state, input에서 취할 정보의 양 결정

 

LSTM의 구조

LSTM의 구조는 총 4단계로 구분할 수 있음.

Cell state를 도출하기 위해서, 1) forget gate와 2) input gate, new cell content를 정의해야함

 

Step 1. Forget Gate: 과거 정보를 버릴지 말지 결정하는 과정

forget gate

  • 이전 output과 현재 input을 넣어, cell state로 가는 과거 정보값이 나옴
  • 입력 정보(새로운 입력 시퀀스와 이전 hidden state)에 시그모이드(0 또는 1)를 취한 형태,
  • h_(t-1)라는 이전 시점의 hidden state와 x_t인 새로운 입력 시퀀스에 시그모이드를 취한 벡터로 구성됨
  • 즉, Forget Gate는 현재 입력과 이전 출력을 고려해서,
    cell state의 어떤 값을 버릴지/지워버릴지('0'이 출력되면 날려버림) 결정하는 역할

 

Step 2. Input Gate: 현재 정보를 저장할지 결정하는 과정

Input Gate

  • 현재의 cell state값에 얼마나 더할지 말지를 정하는 역할 (tanh는 -1 에서 1 사이의 값이 나옴)
  • input gate는 입력 정보에 시그모이드를 취한 형태, new cell content는 입력 정보에 tanh를 취한 형태 ⇒ 즉 sigmoid 랑 tanh를 곱해서 cell state에 넣어줌

 

forget gate의 경우에는, cell state를 도출하는 과정에서, 이전 시점의 cell state와 만나서, 전 시점으로부터 전달되어온 장기 기억에서, 어느정도를 가져갈 것인지, or 버릴 것인지 양을 결정함

input gate의 경우에는, 새롭게 들어오는 입력정보에서 장기기억으로 어느정도 가져갈 것인지 결정함.

이 두가지 과정 모두 *로 표시된 element wise product 연산과정을 거치게 되어서, 각 벡터를 구성하고 있는 동일한 위치의 구성요소끼리 곱해지는 연산과정을 거침.

 

 

Step 3. cell state: 과거 cell state(Ct-1)를 새로운 state(Ct)로 업데이트 하는 과정

cell state

 

  • Forget Gate를 통해서 얼마나 버릴지, Input Gate에서 얼마나 더할지를 정했으므로,
    > input gate * current state + forget * previous state

 

Step 4. Output Gate (hidden state): 어떤 출력값을 출력할지 결정하는 과정

Output Gate

  • output gate를 통해서 hidden state를 새롭게 도출하는데, output gate의 경우에는, 이전 시점의 hidden state와 새로운 입력 시퀀스가 정보로 들어와서 시그모이드를 취함
  • cell state에 tanh를 취한 벡터와 o_t를 곱해서 ⇒ c_t로 정의된 장기 기억에서 어느정도의 정보를 단기 기억으로 사용할지 결정
  • 최종적으로 얻어진 cell state 값을 얼마나 빼낼지 결정하는 역할
    > output gate * updated state

 

다시 정리하자면,

 

총 3가지 gate를 두어서, 입력 정보의 flow를 결정을 하고, 이를 통해서 장기기억을 보존하는 cell state와 단기 기억을 조절하는 hidden state을 반환함. t번째를 기준으로 살펴보면, t번째의 장기기억을 전달하는 cell state의 경우에는 forget gate와 input gate를 통해서 입력되는 정보의 양을 결정함.

  1. 먼저 forget gate의 경우에는, 이전 시점의 cell state와 만나서 그 전 시점까지 전달되어온 장기기억 {c_(t-1)}과 만나서, 어느정도의 정보를 취하고 or 버릴 것인지 양을 결정하고 / input gate의 경우에는 새로운 입력 정보에서 장기기억으로 가져갈 정보의 양을 결정함
  2. hidden state의 경우에는, output gate를 통해서 연산되고, 앞서 도출된 cell state를 활용함. 이 cell state에 tanh를 취한 벡터와 output gate에 해당하는 벡터가 element wise 연산을 거치게 되면서, 해당하는 time step에서 정의된 장기기억 정보를 어느정도 단기 기억으로 가져갈 것인지 결정함.
  3. 따라서 이 LSTM의 각 time step마다 반환되는 cell state와 hidden state는 서로 독립적으로 연산되는 것이 아닌, hidden state의 경우 cell state에 해당하는 정보에서 파생되어서 새롭게 생성된다고 볼 수 있음.