Attention Mechanism

https://www.youtube.com/watch?v=6aouXD8WMVQ

  • 어텐션 메커니즘의 정의 : 인간의 시각적 집중 현상을 구현하기 위한 신경망적 기법
  • 가중치와 어텐션의 공통점과 차이점 : 해당 값을 얼마나 가중 시킬 것인가를 나타내지만, 어텐션은 가중치와 달리 전체 또는 특정영역의 입력값을 반영하여 그 중 어떤 부분(형태 객체 등)에 집중해야 하는지 나타내는 것을 목표로 함
  • 의의 : 확률과 에너지를 기반으로한 접근, 긴 거리에서의 의존성 문제를 해결

https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/10/06/attention/

  • 특정 벡터에 주목하게 만들어 모델의 성능을 높이는 기법
  • 입력 시퀀스와 지금까지 생성한 결과를 통해 무엇에 집중할 것인지 학습
  • 디코더가 출력을 생성 할 때 각 단계별로 입력 시퀀스의 각기 다른 부분을 집중하게 함

  • \alpha의 합은 1로 normalized 된. 즉, softmax 값을 사용 (확률)
  • \alpha _{ ij }=\frac { exp\left( { e }_{ ij } \right)  }{ \sum _{ k=1 }^{ { T }_{ x } }{ exp\left( { e }_{ ik } \right)  }  }
  • T_x : 디코더 입력 단어의 수
  • e_ij : 이전 스텝의 히든 스테이트 벡터 s_i-1와 인코더의 j번째 벡터 h_j가 얼마나 유사한지를 나타내는 스칼라 스코어
  • { e }_{ ij }=a\left( { s }_{ i-1 },{ h }_{ j } \right)
  • 이 아이디어는 초기 기계번역 모델에 도입되었으며, 계산 과정은 위의 링크에 상세 설명

http://docs.likejazz.com/attention/

  • Pemute 레이어는 transpose와 유사한 역할, 어텐션 벡터에 softmax를 적용 후 다시 Permute 했음
  • merge는 입력값과의 element-wise multiplication
  • 주목 할 컨셉
    • APPLY_ATTENTION_BEFORE_LSTM or AFTER_LSTM
    • SINGLE_ATTENTION_VECTOR = False or True

  • How to Visualize Your RNN with Attention in Keras
  • Attention은 매우 좋은 성능을 보여주며, 특히 쉽게 시각화가 가능하다는 장점. 이 때문에 최근의 딥러닝 NLP 연구는 주로 Attention을 중심으로 이뤄지고 있으며 Scaled Dot-Product Attention, Self Attention, Multi-Headed Attention, Multi-Dimensional Attention, Re-Attention등 다양한 변형variants이 등장하고 있는 상황.