- 어텐션 메커니즘의 정의 : 인간의 시각적 집중 현상을 구현하기 위한 신경망적 기법
- 가중치와 어텐션의 공통점과 차이점 : 해당 값을 얼마나 가중 시킬 것인가를 나타내지만, 어텐션은 가중치와 달리 전체 또는 특정영역의 입력값을 반영하여 그 중 어떤 부분(형태 객체 등)에 집중해야 하는지 나타내는 것을 목표로 함
- 의의 : 확률과 에너지를 기반으로한 접근, 긴 거리에서의 의존성 문제를 해결
https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/10/06/attention/
- 특정 벡터에 주목하게 만들어 모델의 성능을 높이는 기법
- 입력 시퀀스와 지금까지 생성한 결과를 통해 무엇에 집중할 것인지 학습
- 디코더가 출력을 생성 할 때 각 단계별로 입력 시퀀스의 각기 다른 부분을 집중하게 함
의 합은 1로 normalized 된. 즉, softmax 값을 사용 (확률)
: 디코더 입력 단어의 수
: 이전 스텝의 히든 스테이트 벡터
와 인코더의 j번째 벡터
가 얼마나 유사한지를 나타내는 스칼라 스코어
- 이 아이디어는 초기 기계번역 모델에 도입되었으며, 계산 과정은 위의 링크에 상세 설명
- Attention LSTM using Keras Attention Mechanism
1 2 3 4 5 6 |
a = Permute((2, 1))(lstm_out) a = Reshape((int(lstm_out_dim), TIME_STEPS))(a) a = Dense(TIME_STEPS, activation='softmax')(a) a_probs = Permute((2, 1), name='attention_vec')(a) attention_mul = merge([lstm_out, a_probs], name='attention_mul', mode='mul') |
- 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이 등장하고 있는 상황.