728x90
반응형

RNN(Recurrent Neural Network)

  • 순환하는 신경망
  • Recursive Neural Network(재귀 신경망)도 있지만 주로 트리 구조의 데이터를 처리하기 위한 신경망이다. 순환신경망과는 다름

 

 

순환하는 신경망

  • '순환하다'는 '반복해서 되돌아감'을 의미한다.
  • 시간이 지나 원래 장소로 돌아오는 것, 그리고 이 과정을 반복하는 것이 바로 '순환'이다.
  • 순환하기 위해서는 '닫힌 경로'가 필요하다.
  • '닫힌 경로' 혹은 '순환하는 경로'가 존재해야 데이터가 같은 장소를 반복해 왕래할 수 있다.
    • 데이터가 순환하며 정보가 끊임없이 갱신되게 된다.

순환경로를 포함하는 RNN 경로

[그림1] RNN 경로

  • 순환 경로를 따라 계층 안에서 순활시킬 수 있다.
  • xt를 입력받는데, t는 시각을 뜻한다.
  • 시계열 데이터(x0,x1,...xt,...)가 RNN 계층에 입력됨을 표현한 것이다.
  • 입력에 대응해서 (h0,h1,...ht,...)가 출력된다.

 

순환구조 펼치기

 

RNN계층의 순환 구조 펼치기

[그림2] RNN 구조의 순환구조 펼치기

  • 다수의 RNN 계층 모두가 실제로는 '같은 계층'인 것이 다른 신경망과의 차이

RNN 계층 현 시각 출력 계산 수식

[그림3] RNN 계층 현 시각 출력 계산 수식

  • RNN에는 2개의 가중치 존재
    • 하나는 x를 출력 h로 변환하기 위한 가중치 Wx
    • 하나는 1개의 RNN 출력을 다음 시각의 출력으로 변환하기 위한 가중치 Wb다.
    • 편향 b도 존재
    • ht-1, xt는 행 벡터
    • 행렬곱 계산의 합을tanh함수를 이용해 변환(쌍곡탄젠트(hyperbolic tangent 함수)를 이용
      • 시각 t의 출력 ht가 된다.

 

 

BPTT

  • RNN 계층 가로로 펼친 신경망으로 간주
  • 오차역전파법 - '시간 방향으로 펼친 신경망의 오차역전파법'이란 뜻으로 BPTT

 

순환 구조를 펼친 RNN 계층에서의 오차역전파법

[그림4] 순환 구조를 펼친 RNN  오차역전파법

  • 문제점은 긴 시계열 데이터를 학습할 때 발생한다.
  • 시계열 데이터의 시간 크기가 커지는 것에 비례하여 BPTT가 소비하는 컴퓨팅 자원도 증가하기 때문이다.

 

Truncated BPTT

  • 큰 시계열 데이터를 취급할 때는 흔히 신경망 연결을 적당한 길이로 끊는다.
  • 시간축 방향으로 길어진 신경망을 적당한 지점에서 잘라내어 작은 신경망 여러 개로 만든다는 아이디어다.
  • 이 잘라낸 작은 신경망에서 오차역전파법을 수행 - Truncated BPTT
  • RNN을 학습시킬 때는 순전파가 연결된다는 점을 고려해야 한다.
  • 데이터를 '순서대로(sequential)'입력해야 한다.

 

첫 번째 블록의 순전파와 역전파

  • 이보다 앞선 시각으로부터의 기울기는 끊겼기 때문에 이 블록 내에서만 오차역전파법이 완결된다.

[그림5] 첫 번째 블록의 순전파와 역전파

 

두 번째 블록의 순전파와 역전파

[그림6] 두 번째 블록의 순전파와 역전파

 

Truncated BPTT의 데이터 처리 순서

[그림7] Truncated BPTT의 데이터 처리 순서

 

 

Truncated BPTT의 미니배치 학습

 

미니배치 학습 시 데이터를 제공하는 시작 위치를 각 미니배치(각 샘플)로 옮긴다.

[그림8] 미니배치 학습 시 데이터를 제공하는 시작 위치 각 미니배치로 옮긴다.

 

 

 

출처 : 밑바닥부터 시작하는 딥러닝2

https://www.hanbit.co.kr/store/books/look.php?p_code=B8950212853

 

밑바닥부터 시작하는 딥러닝 2

이 책은 『밑바닥부터 시작하는 딥러닝』에서 다루지 못했던 순환 신경망(RNN)을 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춰 살펴본다. 8장 구성으로 전체를 하나

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기