RNN(Recurrent Neural Networks)

김지윤·2023년 2월 21일
0

DL

목록 보기
5/6

RNN 이란?

RNN은 반복적인 데이터, 순차적인 데이터를 학습하는 데 특화되어 발전한 인공 신경망의 한 방식입니다.

여기서 순차적인 데이터(Sequential Data)는 앞뒤 순서가 중요한 데이터로 이해할 수 있습니다. 즉, 어떤 순서로 오느냐에 따라서 단위의 의미가 달라지는 데이터인 것이죠. 대표적으로는 ‘언어(Language)’ 가 있습니다. 센서데이터, 손글씨 등 시계열 데이터도 순차적인 데이터에 해당합니다.

이와 반대되는 비순차적 데이터(Non-sequential Data)에는 ‘이미지(Image)’ 가 대표적입니다. 이전에 배운 CNN 모델들은 주로 이미지 데이터를 다뤘습니다. CNN과 같이 입력층에서 출력층 방향으로만 학습이 진행되는 구조를 피드 포워드 신경망(Feed Forward Neural Network) 이라고 합니다.

RNN은 이와 다르게 학습이 한 방향으로 진행되지 않습니다. 입력층 → 출력층 방향 이외에 다음 time step의 hidden layer 방향으로도 학습이 진행됩니다.

  • 피드 포워드 신경망

  • 순환 신경망(RNN)

RNN 그림에서 초록색 네모는 은닉층(Hidden Layer)에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 ‘메모리 셀’을 나타냅니다.

그림에서 세 개의 화살표의 역할을 나눠보면 아래와 같습니다.

  • 입력 벡터가 메모리 셀로 들어가는 것을 나타낸 화살표
  • 메모리 셀로부터 출력벡터가 생성되는 것을 나타낸 화살표
  • 메모리 셀에서 나와 다시 메모리 셀로 입력되는 것을 나타낸 화살표

마지막 화살표가 기존의 피드 포워드 신경망에서는 없었던 학습과정을 보여니다. 이 화살표는 재귀적 학습을 나타냅니다.

RNN의 구조

RNN의 핵심은 재귀적 학습 이라고 할 수 있습니다. RNN에서의 재귀적 학습이란 은닉층에서 (t-1)번째 cell에서 나온 결과값이 t번째 cell에 입력되는 것을 말합니다.

메모리 셀이 출력층 방향 또는 다음 시점의 자신에게 보내는 값을 은닉 상태(hidden state)라고 합니다. 다시 말해, t 시점의 메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태값을 t 시점의 은닉 상태 계산을 위한 입력값으로 사용합니다.

RNN의 전체 구조는 다음과 같습니다.

t1 시점:xt1ht2가입력,ot1이 출력t 시점:xt와 ht1입력, ot이 출력t+1 시점:xt+1와 ht가 입력,ot+1이 출력t−1 \ 시점 : x_{t−1} 와 h_{t−2}가 입력, o_{t−1} 이 \ 출력 \\ t \ 시점:x_{t} 와 \ h_{t−1} 입력, \ o_{t} 이 \ 출력 \\ t+1 \ 시점:x_{t+1} 와 \ h_{t} 가 \ 입력, o_{t+1} 이 \ 출력

각 층에서의 학습 과정은 다음과 같습니다.

은닉층(메모리셀에서 메모리셀로):ht=tanh(Wxxt+Whht1+b)출력층(입력층에서 출력층으로):yt=f(Wyht+b)은닉층(메모리셀에서 \ 메모리셀로): h_{t} = tanh(W_{x} x_{t} + W_{h}h_{t−1} + b) \\ 출력층(입력층에서 \ 출력층으로): y_{t} = f(W_{y}h_{t} + b)

여기서 f는 활성화 함수(비선형)를 의미합니다.

RNN의 특징

  1. 이전 작업을 현재 작업과 연결할 수 있습니다. 즉, 노드들 간의 맥락을 파악할 수 있게 됩니다.
  2. 필요에 따라 다양하고 유연하게 구조를 만들 수 있습니다.

ex) 사진 설명 붙이기: 야구하는 남자 사진 → ‘그는 야구공을 던진다.’

ex) 감성 분석: He is happy → positive

ex) 번역 : 그녀는 예뻤다. → She was pretty.

RNN의 한계

RNN의 치명적인 단점은 BPTT과정에서 발생합니다. BPTT란 Back Propagation Trhough Time의 약자로 출력값에서 다시 입력값으로 돌아가면서 가중치를 업데이트하는 역전파 과정을 의미합니다.

RNN에서 사용하는 활성화 함수인 하이퍼볼릭탄젠트에 대해 위키1에서 학습한 적이 있습니다.

tanh(x)=exexex+extanh(x) = \cfrac{e^x - e^{-x}}{e^x + e^{-x}}

노란색 함수가 tanh 함수를 미분한 함수로서, 최댓값이 1이고 (-4, 4)이외의 범위에서는 거의 0에 가까운 값을 나타내는 것을 볼 수 있습니다.

BPTT과정에서 이 활성화함수가 계속해서 곱해지면서 문제가 발생합니다.

recurrent가 10회 반복된다고 할 때, 1보다 작은 값이 10번 곱해지면서 가중치가 0에 가까워지게 됩니다. 예를 들어, 이 값이 0.8 일 때 10제곱이 된다면 약 0.1이 됩니다. 이렇게 되면 시퀀스 앞쪽에 있는 은닉 상태에는 역전파 정보가 거의 전달되지 않게 됩니다. 이런 문제를 기울기 소실(Vanishing Gradient)이라고 합니다.

profile
코기의 슬기로운 코딩생활

0개의 댓글