순환 신경망이라고 부르는 RNN에 대한 내용을 정리해보겠습니다.
RNN
RNN은 Recurrent Neural Network의 줄임말로, 순환하는 신경망이라고 직역할 수 있습니다.
(Recursive Neural Network, 재귀 신경망과는 다른 신경망입니다.)
RNN은 음성이나 문자처럼 순차적으로 나타나는 Sequence data(시계열 데이터)에 적합한 모델로 알려져있습니다.
구조를 보면서 왜 그런지 생각해봅시다.
RNN의 기본 구조

RNN의 기본 구조입니다.
시계열 데이터 (x0,x1,…,xt,…) 가 RNN 계층에 입력되고, (h0,h1,…,ht,…) 가 출력되는 것을 표현하고 있습니다.
그림을 보면 출력이 두개로 분기 돼 하나는 그대로 출력, 하나는 자기 자신에 입력되는 것을 알 수 있습니다. 즉, 순환하고 있습니다.
위의 그림을 쭉 펼쳐서 좀 더 친숙한 그림으로 보겠습니다.

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

출력 계산
[그림 2]의 예시를 수식으로 한번 나타내보겠습니다.
즉, ht를 현재 state, ht−1을 직전 state으로 생각하고 현재 상태의 출력을 계산하는 수식을 한번 봅시다.
활성화 함수는 하이퍼볼릭탄젠트(tanh)를 사용한다고 가정하겠습니다.
ht=tanh(ht−1Wh+xtWx+b)
수식을 보면 가중치가 두개임을 확인할 수 있습니다.
1. 입력 x를 출력h로 변환하기 위한 가중치
2. Wx와 RNN의 직전 stateht−1을 다음 state {h_t}로 변환하기 위한 가중치 Wh 입니다.
이처럼 RNN은 h라는 '상태'를 가지고 있으며 위의 수식과 같은 형태로 '상태'가 갱신된다. 라고도 해석할 수 있습니다.
그래서 RNN을 '상태를 가진다.' '메모리가 있다.' 라고도 표현합니다.
이렇게 state ht를 계산하고, Output yt는 아래와 같이 y의 가중치를 곱해서 계산됩니다.

RNN의 문제
RNN은 과거의 정보를 기억할 수 있지만, 관련 정보와 그 정보를 사용하는 지점 사이 거리가 멀어질 경우 성능이 저하됩니다. 역전파시에 기울기 소실 또는 폭발이 일어나기 때문입니다.
RNN은 Long-Term Dependencies가 없다고 합니다. (장기 의존 관계를 학습하기 어렵다.)
다음 시간에는 이런 RNN의 문제를 해결할 수 있는 LSTM에 대해 알아보겠습니다.
읽어주셔서 감사합니다.^^
[참고자료]
[1] https://www.youtube.com/watch?v=-SHPG_KMUkQ
[2] 밑바닥부터 시작하는 딥러닝 2 (사이토 고키)
'머신러닝, 딥러닝 ML, DL > 이론' 카테고리의 다른 글
[Deep Learning] seq2seq (Encoder - Decoder) (0) | 2021.08.18 |
---|---|
[Deep Learning] LSTM 개념 정리 (2) | 2021.08.13 |
[Deep Learning] 10. CNN, 풀링 계층 (Pooling Layer) (0) | 2021.08.12 |
[Deep Learning] 9. CNN, 합성곱 계층, 패딩, 스트라이드 (2) | 2021.08.11 |
[Deep Learning] 8. 합성곱 신경망, CNN의 구조 (0) | 2021.08.11 |