본문 바로가기

머신러닝/[논문으로 짚어보는 딥러닝의 맥]

Recurrent Neural Network(RNN): LSTM

학습목표

이번 강의에서는 Recurrent Neural Network(RNN), 그 안에서도 Long Short Term Memory(LSTM)에 대해서 다뤄보도록 하겠습니다. LSTM은 최근에 RNN에서 가장 일반적으로 사용되고 있는 구조입니다. RNN의 기본 구조를 보고 어떤 원리의 개념인지 확인하고, LSTM이 장기의존성(Long Term Dependency)에 어떻게 특화되어 있는지 알아봅시다.

핵심 키워드

  • RNN(Recurrent Neural Network)
  • LSTM(Long Short Term Memory)

학습하기

 이번엔 RNN, 그 중에서도 LSTM에 대해서 알아보도록 하겠습니다. LSTM은 현재 RNN 중 거의 기준점으로 사용되고 있죠. Recurrent Neural Network. 여기서 Recurrent가 뭘 의미를 하냐면 아래 사진과 같이, 현재 입력과 더불어 여태까지의 정보를 함께 취합하는 형태를 뜻합니다. 

 보통 저희가 RNN을 사용하는 이유는 시간적으로 Corelational 한 데이터를 처리하기 위함입니다. 'The clouds are in the sky'에서 'sky'를 예측하고자 할 때, 'are in the'만 보고서는 'sky'를 예측할 수 없습니다. 'clouds'가 반드시 필요하죠. 때문에 RNN과 같은 구조가 필요합니다.

 더 나아가서, 문맥이 길어질수록, 더 나아가 하나의 책을 읽는다면, 한참 이전에 읽었던 다른 내용이 현재의 내용 이해에 도움이 될 것이고, 이런 문제를 Long Term Dependency 문제라고 합니다. 그리고 LSTM은 이를 처리하기에 적합한 구조입니다. 아래 그림은 기본적인 RNN의 구조입니다. Xt와 이전의 정보들을 취합하며 다음 셀에 넘기는 구조입니다.

 아래 그림은 LSTM의 구조입니다. X_t번째 정보가 들어오고, 좌측 상단에서 Cell state가, 좌측 하단에서 Hidden state가 흘러들어옵니다. 이후 Forget gate, Input gate, Outputgate를 통해 Long Term Dependency문제를 처리하는거죠. 

 Forget gate의 경우, 입력으로 이전 아웃풋 h_t-1과, 이번 인풋 x_t를 받습니다. 이를 통해 계산한 f_t와 Cell state로 들어온 c_t-1을 곱해줌으로써, Cell state 중 어떤 값을 날려버릴지를 결정하게됩니다. Input gate의 경우도 입력으로 h_t-1과 x_t를 받고, 연산함으로써, 새로 들어온 x_t를 Cell state에 얼마나 올릴지를 결정합니다. 요약하면 이들은, 이전의 Cell state에서 어떤 값은 제거하고, 어떤 값은 추가할지를 계산해줍니다.  

 다음은 이렇게 Forget, Input gate가 계산한 결과를 Update시켜줍니다. 이후 Output gate에서는 여태 얻어진 Cell state를 얼마나 Output으로 출력할지를 계산하게 됩니다. 이렇게 복잡하지만, 실제로는 Input, Output, Cell state만 잘 잡고 가셔도, 사용에는 지장이 없으실겁니다. 이상입니다.