hyeonzzz's Tech Blog

[딥러닝 파이토치 교과서] 7장. 시계열 분석 -(2) 본문

Deep Learning/Pytorch

[딥러닝 파이토치 교과서] 7장. 시계열 분석 -(2)

hyeonzzz 2024. 5. 14. 18:31

7.6 게이트 순환 신경망(GRU)

 

GRU(Gated Recurrent Unit) : 게이트 메커니즘이 적용된 RNN 프레임워크의 한 종류. LSTM보다 구조가 간단하다

 

7.6.1 GRU 구조

  • GRU는 LSTM에서 사용하는 망각 게이트와 입력 게이트를 하나로 합친 것이다
  • 별도의 업데이트 게이트로 구성되어 있다
  • 하나의 게이트 컨트롤러가 망각 게이트와 입력 게이트를 모두 제어한다.
  • 게이트 컨트롤러가 1이면 망각 게이트는 열리고 입력 게이튼는 닫힌다
  • 게이트 컨트롤러가 0이면 망각 게이트는 닫히고 입력 게이튼는 열린다
  • 즉, 이전 기억이 저장될 때마다 단계별 입력은 삭제된다
  • GRU는 출력 게이트가 없어 전체 상태 벡터가 매 단계마다 출력되며, 이전 상태의 어느 부분이 출력될지 제어하는 새로운 게이트 컨트롤러가 별도로 존재한다.

 

1. 망각 게이트(reset gate)

: 과거 정보를 적당히 초기화(reset)시키려는 목적

  • 시그모이드 함수를 출력으로 이용하여 (0,1) 값을 이전 은닉층에 곱한다
  • 이전 시점의 은닉층 값에 현시점의 정보에 대한 가중치를 곱한 것이다

 

2. 업데이트 게이트(update gate)

: 과거와 현재 정보의 최신화 비율을 결정하는 역할

  • 시그모이드로 출력된 결과(zt)는 현시점의 정보량을 결정하고 1에서 뺀 값(1-zt)을 직전 시점의 은닉층 정보와 곱한다.

 

3. 후보군(candidate)

: 현시점의 정보에 대한 후보군을 계산

  • 과거 은닉층의 정보를 그대로 이용하지 않고 망각 게이트의 결과를 이용하여 후보군을 계산한다

 

4. 은닉층 계산

: 업데이트 게이트 결과와 후보군 결과를 결합하여 현시점의 은닉층을 계산한다

  • (시그모이드 함수)의 결과는 현시점에서 결과에 대한 정보량을 결정한다
  • (1-시그모이드 함수)의 결과는 과거의 정보량을 결정한다

 

GRU 내부 구조

 

※ LSTM vs GRU

 

7.7 양방향 RNN

  • RNN은 이전 시점의 데이터들을 참고해서 정답을 예측하지만 실제 문제에서는 과거 시점이 아닌 미래 시점의 데이터에 힌트가 있는 경우도 많다.
  • 따라서 이전 시점의 데이터뿐만 아니라, 이후 시점의 데이터도 함께 활용하여 출력 값을 예측하고자 하는 것이 양방향 RNN이다.

 

7.7.1 양방향 RNN 구조

  • 양방향 RNN은 하나의 출력 값을 예측하는 데 메모리 셀 두 개를 사용한다.
  • 첫 번째 메모리 셀은 이전 시점의 은닉 상태를 전달받아 현재의 은닉 상태(forward states)를 계산한다. (초록색 메모리 셀)
  • 두 번째 메모리 셀은 다음 시점의 은닉 상태를 전달받아 현재의 은닉 상태(backward states)를 계산한다. (노란색 메모리 셀)
  • 2개 값을 모두 출력층에서 출력 값을 예측하는 데 사용한다.

양방향 RNN에 대한 개념은 RNN뿐만 아니라 LSTM이나 GRU에도 적용된다.

 

 

LSTM과  양방향 LSTM의 차이

  • 입력 데이터가 전방향과 역방향 학습에 모두 전달되며 그 결과들도 모두 출력에 반영된다
  • 즉, 한 번 학습하는 데 2개의 계층이 필요하다
  • 따라서 은닉 상태, 셀 상태에 2를 곱하고 출력층에도 2를 곱해야 한다