NLP에서 한 획을 그은 transformer은 왜 등장했는가 + bidirectional RNN의 특징
1. transformer는 왜 등장했는가
자연어를 입력받아 자연어를 생성하는 LSTM기반의 seq2seq의 성능을 개선한 transformer
Attention is all you need, NeurIPS’17에서 발표
LSTM이나 GRU기반의 seq2seq는 추가적인 모듈로 attention을 사용했지만
transformer은 LSTM이나 GRU같은 RNN모듈을 걷어내고 attention 구조만 사용하여 더 이상의 RNN은 사용하지 않았다.
논문의 제목은 이러한 의미를 담고 있다. ‘오직 너에게 필요한것은 attention’
왜 이것이 의미있을까?
이미 배웠지만 RNN은 구조상 매 step마다 이전 input의 정보를 쌓아나가며 일정한 차원에 계속해서 압축해나가기때문에 short term depend 성향이 있다..
장기간 정보를 보존하기 어렵다. (the problem of short term dependency)
모든 hidden vector는 차원이 동일하다
input sequence의 정보가 매 step마다 압축되어 다음 step으로 전달된다.
직관적으로 먼 거리로 갈수록 초반의 정보는 손실되기 쉽다.
gradient도 먼 거리로 흘러가면서 0으로 소실되어지는 vanishing 문제도 발생한다.
the problem of short term dependency를 가지는 RNN을 사용하지않고 오직 attention으로만 예측을 수행했다는 점에서 큰 의미를 가진다.
2. bidirectional RNN
사실 RNN의 short term dependency 문제점을 이미 인식한 많은 연구자들이
초반의 입력이 먼 거리로 전달되기 어렵다면, 역순으로 입력을 학습시키면 어떨까? 생각을 한 것이다.
일반적으로 생각하는 RNN은 정방향인 I go home 순으로 입력
$h_{3}^{f}$는 I의 정보를 완벽하게 담았다고 보기 어렵다.
사람들이 생각한 것은 단순하게 I를 마지막에 입력하여 마지막 hidden vector에 I의 정보를 잘 전달하자는 것이다.
매 step에서 input sequence의 정보를 적절하게 담았다고 생각하는 hidden vector는 두 RNN에서 나온 hidden vector의 concatenation이다.
이러한 RNN을 bidirectional RNN이라고 한다.
forward RNN과 backward RNN을 병렬적으로 학습하여 얻은 두 hidden vector를 합쳐서 사용한다면 각 input sequence의 정보를 잘 담을 수 있을 것이라고 생각한 것이다.
$$h_{t}=[h_{t}^{f}|h_{t}^{b}]$$를 t 시점의 encoding vector로 활용하는 것이지
이런 RNN이 도입된 또 다른 이유를 생각해본다면 일반적인 forward RNN은 현 시점의 input을 hidden vector로 바꿀 때 다음 시점의 input 정보는 전혀 고려하지 않는다는 점이다.
i go home을 번역하기 위해서 i를 번역할 때 i에만 주목한다는 것은 아쉬운 부분이다.
go, home의 정보에 조금이라도 집중할 필요가 있다. 당연하지만 go를 번역할 때 앞에 있는 i에만 집중하고 home의 정보를 받지 못한다는 점도 아쉬운 부분이다.
그래서 역순으로 입력한다면 이 점을 보완할 수 있다고 생각한 것이다.
home go i의 backward RNN은 i를 hidden vector로 바꿀 때 home go의 정보를 받으면서 바꿀 수 있다.
I를 hidden vector로 바꿀때 forward RNN에서 오직 I에만 집중한 경우 만든 hidden vector와
backward RNN에서 I뿐만 아니라 GO,HOME에 집중한 결과도 반영한 hidden vector를 합쳐서 만들겠다
'딥러닝 > NLP' 카테고리의 다른 글
예시와 그림으로 이해하는 self attention의 원리 (0) | 2022.04.28 |
---|---|
NLP의 역사를 바꾼 self-attention의 기본 원리 (0) | 2022.04.27 |
length normalization을 이용한 beam search의 종료조건 (0) | 2022.04.19 |
beam search 기법이란 무엇인가 (0) | 2022.04.18 |
greedy decoding(greedy search)은 왜 최적이 아닐까? (0) | 2022.04.17 |