(개인적으로 학습의 목적으로 정리한 글로 틀린 내용이 있을 수 있습니다)
Attention이 생긴이유
1) 연속된 정보(Sequence data)들관의 상관관계를 처리하기 위해 RNN(Recurrent Neural Network)이 처음으로 고안되었다.
2) 하지만 RNN은 vanishing gradient의 문제점 때문에 데이터가 길어지면 길어질수록 결과가 부정확해졌고, LSTM(Long Short Term Memory)는 이를 보완하기 위해 구조를 개선하여 나왔다.
3) Seq2Seq 모델은 내부적으로 encoder와 decoder라는 2개의 LSTM/RNN 모델 계층들을 사용하여 sequence를 입력값으로 받고 결과값도 sequence로 반환하여준다.
4) 하지만 Seq2Seq 모델또한 Vanishing Gradient문제가 남아있고, 하나의 고정된 벡터에 모든 정보를 압축하려고 하니까 정보 손실이 발생한다. 이를 보완하기 위해 Attention Mechanism이 사용되고 있다.
Seq2Seq 모델을 간단하게 짚고 넘어가기!
Seq2Seq 모델은 encoder과 decoder로 이루어지는데, encoder와 decoder는 하나 혹은 여러개의 RNN/LSTM의 계층을 가집니다. Encoder는 입력값을 압축해서 context vector로 변환합니다. 그리고 decoder는 이 context vector를 기반으로 각각의 timestamp마다 결과값을 추론하며, 얻어진 결과값을 다음 timestamp의 입력값으로 사용합니다. decoder는 이 작업을 <sos>부터 시작하여 <eos>까지 반복합니다. 추론의 결과값이 <eos>가 나오면 작업을 끝냅니다.
Attention의 기본적인 아이디어
Attention의 기본 아이디어는 decoder에서 출력단어를 예측하는 매 timestamp마다 encoder에서 전체 입력문장을 다시 참고하는 것이다. 이 때 모든 입력값들을 동일한 비중으로 참고하는 것이아니라, decoder에서 현재 timestamp를 넘겨주면 encoder에서 softmax함수를 사용하여 decoder의 추론에 도움이 되는 정도를 수치화하여 전달하여 주고 이 정보를 decoder는 사용하게 됩니다. 결과적으로 deocder는 출력단어를 더 정확하게 예측할 확률이 높아집니다.
Hard vs Soft Attention
Attention은 크게 Hard와 Soft로 나누어지는데 가장 큰 차이점은 hidden state의 weight를 계산하는 function이 differentiable한가이다. Encoder의 hidden state를 differentiate하여 cost를 구하고 이를 사용하여 모델을 학습시키는 Soft Attention과 달리 Hard Attention은 randomness가 포함되어있기때문에 differentiable하지 않다. 따라서 주로 Reinforced Learning을 사용하여 모델을 학습시킨다.
Global vs Local Attention
만약 decoder에서 추론을 할때 모든 input을 보고 결정한다면 Global Attention이다.
반대로 deocder에서 추론을 할때 input의 특정 부분만을 보고 결정한다면 Local Attention이다
Self Attention
Self Attention은 decoder의 state를 신경쓰지않고 input들 사이에서 각 timestamp때 어떤 input들에 더 높은 비중을 줘야될지를 결정한다. decoder없이 오로지 input들만으로 attention score를 계산하기때문에 구현이 쉽고 계산이 빠르며 decoder의 이전 state가 필요하지 않기때문에 한번에 다 계산해버릴 수 있다.
Reference:
Attention: https://wikidocs.net/22893
Seq2Seq: https://wikidocs.net/24996
Soft vs Hard Attention: https://stackoverflow.com/questions/35549588/soft-attention-vs-hard-attention
Self Attention: https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a
'머신러닝' 카테고리의 다른 글
Entropy and Information Gain (0) | 2020.04.06 |
---|---|
Decision Tree Learning - 의사결정나무 (0) | 2020.04.05 |
Deep Learning을 사용한 Object Detection 설명 (0) | 2020.03.30 |
Apache Beam, Apache Airflow, Apache Atlas 설명 (0) | 2020.03.30 |