머신러닝, 딥러닝 ML, DL/이론

[Deep Learning] RNN 개념 정리

킹남지 2021. 8. 12. 22:24
반응형

순환 신경망이라고 부르는 RNN에 대한 내용을 정리해보겠습니다.

 

RNN

RNN은 Recurrent Neural Network의 줄임말로, 순환하는 신경망이라고 직역할 수 있습니다.

(Recursive Neural Network, 재귀 신경망과는 다른 신경망입니다.)

 

RNN은 음성이나 문자처럼 순차적으로 나타나는 Sequence data(시계열 데이터)에 적합한 모델로 알려져있습니다.

구조를 보면서 왜 그런지 생각해봅시다.

 

RNN의 기본 구조

순환 경로를 포함하는 RNN [그림 1]

RNN의 기본 구조입니다.

 

시계열 데이터 $(x_0, x_1, \dots, x_t, \dots)$ 가 RNN 계층에 입력되고,  $(h_0, h_1, \dots, h_t, \dots)$ 가 출력되는 것을 표현하고 있습니다.

 

그림을 보면 출력이 두개로 분기 돼 하나는 그대로 출력, 하나는 자기 자신에 입력되는 것을 알 수 있습니다. 즉, 순환하고 있습니다.

 

위의 그림을 쭉 펼쳐서 좀 더 친숙한 그림으로 보겠습니다.

펼친 모습 [그림 2]

위의 그림에서 알 수 있듯이 시계열 데이터의 길이에 관계없이 입력과 출력을 받아들일 수 있기에, 유연하게 구조를 만들 수 있는 것이 장점입니다. 

 

이렇게 다양한 활용이 가능

 

출력 계산

[그림 2]의 예시를 수식으로 한번 나타내보겠습니다.

즉, $h_t$를 현재 state, $h_{t-1}$을 직전 state으로 생각하고 현재 상태의 출력을 계산하는 수식을 한번 봅시다.

활성화 함수는 하이퍼볼릭탄젠트(tanh)를 사용한다고 가정하겠습니다.

 

$ h_t = tanh(h_{t-1}W_h + x_t W_x + b) $

 

수식을 보면 가중치가 두개임을 확인할 수 있습니다.

1. 입력 $x$를 출력$h$로 변환하기 위한 가중치

2. $W_x$와 RNN의 직전 state$h_{t-1}$을 다음 state {h_t}로 변환하기 위한 가중치 $W_h$ 입니다.

 

이처럼 RNN은 $h$라는 '상태'를 가지고 있으며 위의 수식과 같은 형태로 '상태'가 갱신된다. 라고도 해석할 수 있습니다.

그래서 RNN을 '상태를 가진다.' '메모리가 있다.' 라고도 표현합니다.

 

이렇게 state $h_t$를 계산하고, Output $y_t$는 아래와 같이 y의 가중치를 곱해서 계산됩니다.

기본적인 RNN

RNN의 문제

RNN은 과거의 정보를 기억할 수 있지만, 관련 정보와 그 정보를 사용하는 지점 사이 거리가 멀어질 경우 성능이 저하됩니다. 역전파시에 기울기 소실 또는 폭발이 일어나기 때문입니다.

 

RNN은 Long-Term Dependencies가 없다고 합니다. (장기 의존 관계를 학습하기 어렵다.)

 

다음 시간에는 이런 RNN의 문제를 해결할 수 있는 LSTM에 대해 알아보겠습니다.

읽어주셔서 감사합니다.^^

 

 

[참고자료]

[1] https://www.youtube.com/watch?v=-SHPG_KMUkQ 

[2] 밑바닥부터 시작하는 딥러닝 2 (사이토 고키)

반응형