이 글은 아래 사이트의 페이지를 정리한 글입니다.
d2l.ai/chapter_recurrent-modern/bi-rnn.html#definition
1. Bidirectional RNN의 등장배경
- 지금까지의 시퀀스 데이터의 학습에서의 목표는 '지금까지 주어진 것을 보고 다음을 예측'하는 것이었고, 그 분야로는 시계열 또는 언어 모델이 있었습니다. 하지만, 시퀀스의 과거의 값들 뿐만 아니라 이후의 값들에 의해서도 값이 결정된다면 어떨까요? 아래 세 문장으로 예를 하나 들어보겠습니다.
i) I am _____.
ii) I am _____ hungry.
iii) I am ______ hungry, and I can eat half a pig.
- 우리는 주어진 정보의 양에 따라 빈칸을 'happy'로 그리고 'not'이나 'very'와 같은 서로 아주 다른 단어들로 채울 수 있습니다. 즉, 구(phrase)의 끝의 정보를 알 수있다면 그것은 어떤 단어를 선택하느냐에 상당히 중요한 정보를 전달합니다.
- 하지만, LSTM과 GRU와 같은 과거의 모델들은 예측하고자 하는 단어 뒤에 있는 정보를 이용할 수 없기 때문에 이러한 문제에서는 성능이 좋지 않았습니다. 예를 들어, 개체명인식을 잘 하기 위해서는 주어로 등장한 "Green"이 녹색을 뜻하는지, 사람이름 (Mr. Green)을 의미하는지를 알기위해서는 해당 단어 뒤에 단어들이 쓰였는가가 중요합니다. 하지만 LSTM과 GRU으로는 'Green' 한 단어만 보고 예측을 해야하는 상황이 벌어지게 됩니다.
- 이런 기존 모델의 한계점을 개선하기 위하여 시퀀스의 이전부분 뿐만 아니라 이후 부분까지 결합하여 예측하는 Bidirectional RNN 모델이 제안되었으며, 1997년 Schuster & Paliwal의 논문에 게재되었습니다.
2. Bidirectional RNN의 구조
- Bidirectional RNN의 구조는 비교적 단순합니다. 2개의 RNN이 함께 쌓여있고, 최종 output은 두 RNN의 은닉상태를 통해 계산됩니다.
- 2개의 RNN은 다음과 같습니다. 첫번째 토큰부터 시작하는 forward mode의 RNN에, 맨 마지막에서 시작해서 끝에서 앞으로 가는 backward mode의 RNN unit을 함께 쌓습니다.
- Bidirectional RNN에서의 각 time step의 final output은 아래와 같이 forward h(t)와 backward h(t)를 동시에 결합하여 출력합니다.
'AI > 딥러닝 기초(Deep learning)' 카테고리의 다른 글
[NLP] Attention Mechanism(어텐션) (0) | 2021.05.12 |
---|---|
[NLP] Sequence to Seqence(Seq2Seq) (0) | 2021.05.12 |
[딥러닝] GRU(Gated Recurrent Unit) (1) | 2021.05.10 |
[딥러닝][NLP] LSTM(Long Short Term Memory Networks) (1) | 2021.05.07 |
[딥러닝][NLP] RNN(Recurrent Neural Network) (0) | 2021.05.07 |
댓글