ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [순환신경망] LSTM의 개념
    IT/AI 2022. 10. 20. 23:29

    본 포스팅은 "밑바닥부터 시작하는 딥러닝2" 도서로 공부한 내용을 요약하기 위한 포스팅입니다.


     

      이전 포스팅에서 기초적인 순환신경망 RNN이 가지는 문제점인 장기 의존 관계를 학습하기 어렵다는 점과 그 원인인 기울기 소실과 폭주(Gradient Vanishing & Exploding)에 대해 알아봤습니다.

     

    2022.10.19 - [IT/AI] - [순환신경망] RNN의 문제점 (기울기 소실, 기울기 폭주 = Gradient Vanishing & Exploding)

     

    [순환신경망] RNN의 문제점 (기울기 소실, 기울기 폭주 = Gradient Vanishing & Exploding)

    본 포스팅은 "밑바닥부터 시작하는 딥러닝2" 도서로 공부한 내용을 요약하기 위한 포스팅입니다. RNN이란 ? RNN(Recurrent Neural Network)은 시계열 데이터를 처리하기 위해 고안된 모델로 아래 그림에서

    chonchony.tistory.com

     

      이번 포스팅에서는 RNN의 기울기 소실 문제 즉, 장기 의존 관계 학습에 대한 문제점을 해결하기 위해 고안된 '게이트가 추가된 RNN'의 아키텍처를 알아보겠습니다.

     

      게이트가 추가된 RNN의 대표격은 LSTM(Long Short Term-Memory) 모델과 GRU(Gated-Recurrent Units)가 있습니다.

    이번 포스팅에서는 LSTM에 대해 다뤄보겠습니다.

     


    1. LSTM의 입출력 (인터페이스)

      LSTM의 입출력을 살펴보면 각 계층(시각)에서 입력 값을 받고 은닉 값(Hidden state value)을 다음 계층에 전달하며, 그 값을 출력 값으로 내보낸다 까지는 RNN과 동일합니다.

     

    하지만, LSTM에서는 계층 간 전달되는 c라는 값이 추가된 것을 확인할 수 있습니다.

     

    RNN vs LSTM Insterface

     

      여기서 c를 기억 셀(memory cell)이라 하며, LSTM이 장기 의존 관계를 학습하기 위한 기억 메커니즘이 됩니다.

    기억 셀의 특징은 데이터를 자기 자신으로만 (LSTM 계층 내에서만) 주고 받는다는 것이고, 이 말은 기억 셀 c는 외부에서 보이지 않는다는 것입니다.

     

      본격적으로 들어가기에 앞서 RNN 학습 시 그렸던 계산 그래프를 아래와 같이 단순화한 도법을 사용해서 그리도록 하겠습니다. 

     

    RNN 계산 그래프 단순화 (구조)

     

      그렇다면 LSTM의 구조는 어떨까요 ? 아래와 같이 상당히 복잡해 보이는 구조를 가지고 있습니다.

     

    LSTM의 구조


    2. 게이트 이해하기

        위의 LSTM 구조 그림에서 Gate가 3개 있는 것을 볼 수 있습니다. LSTM의 각 구조를  단계별로 알아보기에 앞서 게이트가 무엇인지 간단하게 설명하겠습니다.

     

      '게이트'는 '문'을 의미하는 단어로, 문을 열거나 닫을 수 있듯이, 데이터의 흐름을 제어하는 역할을 합니다.

    LSTM에서 사용하는 게이트는 '열기/닫기' 뿐 아니라, 어느 정도 열지를 조절할 수 있습니다.

    다시 말해 다음 단계로 흘려보낼 데이터의 양을 제어합니다. 이 때, 게이트의 열림 상태를 제어하기 위해서 전용 가중치 매개변수를 이용하며, 이 가중치 매개변수는 학습 데이터로부터 갱신됩니다.

     

      LSTM의 구조 그림에서 Gate를 나타낸 기호에 σ(시그모이드)를 사용했는데, 기호 그대로 게이트 제어를 위한 매개변수는 시그모이드 함수를 사용합니다. 시그모이드 함수의 출력이 마침 0.0 ~ 1.0 사이의 실수이기 때문입니다.

     

      게이트의 역할을 이해하기 위해서는 아래 그림을 참고 바랍니다.

    게이트의 열림/닫힘 정도에 따라 데이터를 완전히 흘려보낼 수도 차단할 수도, 그리고 어느 정도만 흘려보낼 수도 있습니다.

     

    출처 : https://www.fctvalve.com/libr/what-is-an-actuated-valve

     


    3. Output 게이트 (o)

      Output 게이트는 최종 출력 값 또는 다음 은닉 상태 값인 ht의 출력을 담당하는 게이트입니다.

    아래 그림을 보면, Output 게이트를 거쳐서 나온 값과 tanh(ct)의 값이 곱해져 다음 은닉 상태 값 ht가 결정된다는 것을 알 수 있습니다. 

    Output gate

     

      Output 게이트의 출력 값은 아래 수식으로 계산되며, Output 게이트 전용 가중치가 사용됩니다.

     

    [식 1] Output gate

     

      그리고 최종 출력 ht는 아래와 같이 Output gate의 출력 값 o와 최종 셀 값 tanh(ct)의 곱으로 계산을 수행합니다.

    여기서 말하는 '곱'이란 원소별(Element wise) 곱이며, 아마다르 곱이라고도 합니다. 

     

    [식 2] 최종 ht 계산

    2022.10.18 - [수학] - 행렬 곱셈 vs 아다마르 곱셈 (Hadamard product vs Matrix multiplication)

     

    행렬 곱셈 vs 아다마르 곱셈 (Hadamard product vs Matrix multiplication)

    행렬 곱셈 (Matrix multiplication) 일반적인 행렬 곱셉을 의미한다. 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야하며, 곱셈의 결과 새롭게 만들어진 행렬은 첫째 행렬의 행 갯수와 둘째 행

    chonchony.tistory.com


    4. Forget 게이트 (f)

      Forget 게이트의 역할은 이름 그대로 이전의 기억 (ct-1)의 정보 중 불필요한 정보를 잊게 만들어주는 게이트입니다.

     

    Forget gate

     

    Output 게이트와 마찬가지로 전용 가중치 매개변수를 가지며, 아래 수식으로 계산됩니다.

    [식3] Forget gate

     

      Forget 게이트에서 구해진 값은 이전 셀 값 (ct-1)과 곱해져 ct 값을 생성합니다.

    여기서 구해진 ct 값은 뒤에 한번 더 갱신될 예정입니다.

     

    [식4] ct값 계산 (미완성)


    5. 새로운 기억 셀 (g)

      위의 forget 게이트를 거치면서 이전 시각의 기억 셀로부터 불필요한 정보들을 삭제했습니다.

    여기서 forget 게이트만 존재한다면 어떻게 될까요? 현재 상태로는 기억 셀은 잊는 것밖에 하지 못합니다.

    그래서 기억 셀에 새로 기억해야 할 정보를 추가하기 위한 과정이 필요합니다.

     

    새로운 기억을 추가하기 위한 연산

     

      위의 그림에서 바로 왼쪽의 아직 언급하지 않은 게이트는 다음 절에서 설명 예정입니다. 우선은 단순히 새로운 기억을 위해 추가된 현재 과정만 생각해봅시다.

     

      이전의 게이트들과 마찬가지로 전용 가중치 매개변수를 가지고 있지만, tanh 함수를 사용한다는 점이 다릅니다.

     

    시그모이드 함수의 출력은 0.0 ~ 1.0 사이의 실수이며,
    tanh 함수의 출력은 -1.0 ~ 1.0 사이의 실수입니다.

    여기서 각 함수가 어떤 의도로 사용되었는 지 알아보면
    시그모이드 함수는 데이터를 얼마만큼 통과시킬지를 정하는 비율을 구하는 과정이고,
    tanh 함수는 데이터에 포함된 정보의 강약 정도를 구하는 과정이라고 해석할 수 있습니다.

     

    [식 5] g 계산


    6. Input 게이트 (i)

      마지막으로 설명한 게이트는 input 게이트로, 앞에서 추가한 새로운 기억 셀 g의 정보를 제어하는 역할을 합니다.

    input 게이트 없이 g의 정보를 무비판적으로 수용하는 것이 아니라, 적절히 선택하는 것이 이 게이트의 역할입니다.

    다른 관점에서 보면, input 게이트에 의해 가중된 정보가 기억 셀(ct)에 새로 추가되는 셈입니다.

     

    Input gate

     

      Input 게이트의 계산 과정은 아래처럼 앞의 게이트들과 동일합니다.

     

    [식 6] i 계산

     

      그리고 마침내 Output 게이트에 출력으로 들어가야할 ct가 완성됩니다.

     

    [식 7] ct 계산 (최종)


    7. 정리

      앞에서 나온 LSTM에서 수행하는 계산을 정리하면 아래와 같습니다.

     

    계산식 정리

     


    참고자료 : https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr

     

Designed by Tistory.