attention 구조는 NLP를 어떻게 바꾸었는가

1. backpropagation

 

attention의 가중치(attention distribution, attention모듈에는 가중치가 없는데? 근데 이놈들은 결국 encoder의 가중치랑 decoder의 가중치에 영향을 받겠지)를 잘 학습하도록 backpropagation에 의한 gradient가 attention module로도 흘러들어감

 

 

gradient vanishing 문제를 어느정도 완화시켰다.

 

직관적으로 attention구조가 없다면 gradient는 위 그림에서 먼 단어까지 가는데 굉장히 멀어서 잘 안흘러가겠다는 것을 느낄 수 있는데<아래쪽으로만 가겠지>

 

attention구조에 의해 마치 빠른 길<위쪽 지름길>로도 gradient가 흘러들어가는 모습이다..

 

 

2. 다양한 attention mechanism

 

attention 구조는 효과가 입증된만큼 추후 여러가지 attention 방식이 제시되었다.

 

Luong과 Bahdanau는 score를 계산하는 방식에 있어서 여러가지를 제안했다.

 

 

여기서 두번째 general score는 일반화된 dot product라고 생각하면 좋다.

 

기본적인 dot product가 내적, 유사도를 계산해주는데 내적이 정확한 유사도는 아니다. 유사도에 비례한다고 생각할 수 있다.

 

가운데 행렬을 넣어 두 벡터에 대한 하나의 스칼라값을 구한 것은 weighted dot product 형태로 볼 수 있다.

 

두 벡터의 내적에 특별한 가중합이 붙은 것이라고 생각한다면, 유사도에 비례한다고 생각할 수 있다.

 

심지어 행렬 W는 학습이 가능한 행렬이다. 최적으로 학습시키면서 더욱 두 벡터의 유사도에 집중할 수 있도록 만든다.

 

 

세번째 concat score는 두 벡터를 concat시켜서 하나의 NN에 넣어 hidden vector를 구하고 output layer에 집어넣어 하나의 스칼라값을 뱉도록 만든다.

 

이것이 두 벡터의 유사도라고 생각하도록 하나의 신경망을 만들어 학습을 시키는 것이다.

 

 

마지막 output layer의 선형변환이 행렬이 아니고 벡터라는 점이 조금 특이한데

 

결과가 scalar가 되기를 원하니까, hidden vector와 내적해야 scalar가 나오기때문에 그렇다.

 

W,v는 학습이 가능한 가중치이다. backpropagation 과정에서 학습이 될듯?

 

 

3. attention은 무엇을 이루었는가

 

attention은 decoder가 encoder input의 특정 단어들에 더욱 집중하게 만들어 많은 NLP에서 성능 향상을 만들어냈다.

 

attention은 기존의 RNN에서 마지막 hidden vector만 가지고 예측을 수행하여 생기는 문제점인 bottleneck 문제를 해결했다.

 

-----------------------------------------------------------------------------------------------------------------------

*Bottleneck문제란?

 

RNN은 모든 모듈이 동일한 parameter를 공유하기때문에 hidden vector의 차원이 모두 동일하다.

 

기존에는 첫 input부터 정보를 압축하면서 쌓아나가 마지막 hidden vector를 가지고 예측을 수행했는데

 

긴 sequence일수록 동일한 차원에 정보를 압축하려다보니 당연히 첫 input일수록 정보 손실이 일어날 수 밖에 없었다.

------------------------------------------------------------------------------------------------------------------------

 

attention은 gradient vanishing을 일부 개선했다.

 

attention module로 gradient를 흐르게할수있어서 먼 input에 빠르게 gradient가 도달할 수 있게 하였다.

 

attention은 흥미로운 해석 가능성을 제공한다.

 

attention distribution으로부터 각 단어를 예측할시 어떠한 단어에 더 집중했는지 패턴을 파악할 수 있게 보여준다.

 

네트워크가 어떤 단어에 조정(alignment)하면서 번역해야하는지 스스로 배운다는점에서 흥미롭다.

 

 

기계가 생각없이 순서대로 하는것같지만

 

attention에 의해 중요한 pattern을 생각하면서 했다는 점, 집중하는 순서가 필요에 따라 뒤바뀐다는 점 (a)

 

한번에 여러 단어에도 집중할 수 있다는 점(c)을 위 그림에서 알 수 있다.

TAGS.

Comments