순환 신경망 (RNN)은 인공 신경망의 한 종류로 유닛간의 연결이 순환적 구조로 구성.
내부의 메모리를 이용하여 시퀀스 형태의 입력을 처리.
대표적으로 LSTM 또는 GRU.
재귀 신경망 (Recursive Neural Network)와는 별개의 개념.
일반적인 신경망은 은닉층에서의 활성화 함수의 출력값은 출력층 방향으로 향함. 이를 Feed Forward NN이라 함.
RNN은 활성화 함수의 출력값이 출력층 방향 뿐만 아니라 은닉층 노드로도 향함.
: 시점의 입력 벡터
: 시점의 출력 벡터
(편향 는 편의상 생략)
메모리 셀 (RNN 셀) : 활성화 함수를 통한 노드
시점에서의 메모리 셀은 시점의 출력값을 사용하는 재귀적 특성을 지님.
은닉 상태 : 각 메모리 셀의 출력값
RNN은 입력과 출력의 크기를 다르게 사용 가능.
이는 주로 자연어 처리에서 사용.
: 시점의 은닉 상태
: 입력 벡터의 가중치
: 출력 벡터의 가중치
: 시점의 은닉 상태의 가중치
은닉층
출력층
은닉 상태 는 출력층 와 다음 은닉층 에 사용.
은닉층이 2개 이상으로 이루어진 순환 신경망.
양방향 순환 신경망 (Bidirectional Recurrent Neural Network)은 은닉 상태를 이전 시점 뿐만 아니라 다음 시점과도 연결한 순환 신경망.
Deep한 순환 신경망도 구성 가능.
RNN은 비교적 짧은 시퀀스에서 좋은 성능을 보임.
반면 타임 스텝이 커진다면 초기의 정보들이 끝까지 유지되지 못하고 유실됨.
즉, 장기 의존성 문제.
이는 gradient vanishing 문제와 직결.
타임 스텝이 커질수록 시점의 loss 값이 전달되지 못하면서 gradient가 유실됨.
이런 문제를 해결하기 위해 LSTM, GRU 모델 탄생.
Reference
1) 순환 신경망(Recurrent Neural Network, RNN)
[바람돌이/딥러닝] RNN(Recurrent Neural Network) - 순환 신경망 이론 및 개념