Bi-directional RNN (양방향 RNN)

- 시간 스텝 t에서의 출력값이 이전시간 스텝 외에, 이후의 시간 스텝에서 들어오는 입력값에도 영향을 받는다.
- 활용: 영어 문제의 빈칸 채우기는, 이전 단어도 중요하지만, 빈칸 이후 단어도 매우 중요
- 문장 분류: 문장 앞에 것만 고려하지 않고 문장 뒤에도 이해에 대해서도 고려한 모델링
Deep Bi-directional RNN

- 매 시간 스텝마다 여러 개의 Layer한 시간 스텝마다 Deep 하게 Hidden Neuron을 쌓아올린 구조
하지만 이런 Bi-directional RNN이 Language Model 수행을 잘 할 수있을까요?
→ NO
Train할 때는 과거의 데이터와 미래의 데이터가 주어진 채로 추론하는 것을 학습하지만,
Test할 때는 과거의 데이터만을 갖고 다음 단어가 어떤 것이 나올 것인가 추론을 해야하기 때문에,
성능이 좋지 않게 나온다.
따라서, Train과 Test 학습 구조는 비슷해야한다.
RNN은 문제가 없을까?
- Vanishing Gradient Problem이 존재한다.
- RNN은 긴 시퀀스를 처리하는데 한계가 존재한다.
- 또한 실제로는 가까이 있지 않은 단어들이 밀접한 관련이 있을 수도 있다.
- The man who wore a wig on his head went inside
- 다음 문장에서는, man went inside가 제일 중요한 의미를 갖고 있다.
- 하지만, RNN에서는 wig와 inside에 더욱 집중하는 문제가 발생한다
- man과 went insde는 물리적으로 거리가 멀리 떨어져 있어 모델링 구조에서도 멀리 떨어져 man에 대한 Weight가 갈수록 줄어드는 문제점이 발생한다. 비교적 가까운 wig가 man보다 더 높은 가중치가 went inside 노드에 입력되게 된다.
- 또 다른 예: “I grew up in France. but I really enjoyed living Germany. Because My friend was German. …. I can speak French 와 같이 멀리 떨어져 있어도 밀접한 관련이 있을 수도 있다.
이에 대한 해결책으로 Truncated BPTT (잘라진 Backpropagation Through Time)