1. 개념
- 순차 데이터를 처리하는데 적합한 신경망\(\)
- machine translation, DNA analysis, voice recognition, motion recognition, sentiment analysis 등에 이용
- hidden layer의 neuron에서 출력된 값이 다시 그 neuron의 입력으로 사용됨
- 학습된 neuron의 상태가 다음 학습에 사용되는 것
- 이전에 수신한 정보를 계속 보유 = 일종의 단기 기억
- 단기 기억은 hidden weight에 저장
- 동일한 입력이어도 이전의 입력에 따라 다른 출력 결과 생성
- RNN의 필요 기능
- 가변 길이의 입력에 대한 처리
- 장기 의존성의 추적
- 순서 정보의 유지
- 시퀸스 전체의 파라미터 공유
2. 구조
- 입력 벡터 : \( x_t \)
- 출력 벡터 : \( y_t = f(W_{hy}h_t) \)
- 은닉 상태 : \( h_t = \tanh(W_{hh}h_{t-1}+W_{xh}x_t) \)
3. 네트워크 전파 방향
- 시간 축으로 풀어서 생각
- 모든 출력의 손실을 합산하여 전체 손실 계산
- 중간에 출력하기를 원한다면 다른 weight을 사용하여 출력 가능
- forward propagation through time
- backward propagation through time
- 계층을 통하는 방식 대신 시간을 거슬러 올라가면서 gradient 역전파
- 아래 그림과 같이 time step 별로 network를 펼친 다음, back-propagation 하는것을 BPTT(Back Propagation Through Time)이라 함
- RNN의 전체 time step 양이 많아지면 계산량 또한 많아지기 때문에, time step을 일정 구간별로 나눠 back-propagation 을 수행하는 Truncated BPTT 방식도 존재
4. 종류
- 1:1 : 단일 입력과 단일 출력을 가지며, 가장 보통의 경우
- 1:N : 단일 입력과 다중 출력을 가지며, image captioning에 주로 사용
- N:1 : 다중 입력과 단일 입력을 가지며, sentiment analysis에 주로 사용
- N:M : 다중 입출력을 가지며, machine translation에 주로 사용
5. 문제점
- gradient vanishing problem
- 멀리 떨어진 데이터의 영향을 받는 경우 context가 필요
- activation function의 교체나 weight를 단위 행렬로 교체, bias를 0으로 초기화 하는 방법을 통해 해결하거나, LSTM이나 GRU의 gated cell을 사용하여 해결
- gradient explosion problem
- gradient를 일정 크기 이상 커지지 못하게 하는 방법을 통해 해결
참고 서적
딥러닝 EXPRESS
참고 링크
https://excelsior-cjh.tistory.com/184