🤖 Data Study/ML-DL

어텐션 메커니즘(Attention Mechanism)

데이터분석가SIENNA 2024. 8. 6. 20:03

  어텐션 메커니즘(Attention Mechanism)은 주로 시퀀스 데이터 처리에 사용되는 기술로 seq2seq(Sequence-to-sequence) 모델의 성능을 향상시키기 위해 도입된 기법이다.

seq2seq의 인코더와 디코더 구조

 

  seq2seq 모델은 위 그림의 예시와 같이 인코더(Encoder)와 디코더(Decoder)로 구성된 신경망 구조로, 입력 시퀀스를 인코더를 통해 고정된 길이의 벡터로 인코딩하여 문맥 벡터(Context Vector)를 생성하고, 디코더가 이를 다시 시퀀스로 변환하여 출력하는 딥러닝 모델이다. seq2seq는 기계번역 같은 많은 자연어처리 문제에서 유용하지만, 고정된 길이에 전체 입력 시퀀스를 압축하기 때문에 정보 손실이 발생한다. 또한 기울기 소실 문제가 발생하여 훈련이 불안정해진다. 이러한 seq2seq의 한계점들을 보완하기 위해 어텐션 메커니즘이 제안되었다. 어텐션 메커니즘은 디코더가 인코더의 전체 입력 시퀀스에서 중요한 부분에 집중할 수 있도록 하는 방법으로, 어텐션 함수(Attention Function)를 통해 입력 시퀀스의 각 단어에 대한 가중치를 계산한다.

어텐션 메커니즘(Attention Mechanism)

 

  위와 같이 입력 시퀀스 “I am a student”를 번역하고자 할 때, 입력 시퀀스는 각 단어별로 임베딩되고 LSTM 인코더를 통해 히든 상태 가 생성된다. 디코더의 현재 상태 와 인코더의 각 히든 상태 사이의 dot product 연산을 통해 어텐션 스코어(attention score)를 계산한다. 
  어텐션 스코어는 현재 디코더의 시점에서 단어를 예측하기 위해 인코더의 모든 은닉 상태 각각이 디코더의 현 시점의 은닉상태와 얼마나 유사한지 판단하는 스코어 값이다. 이 값을 소프트맥스(Softmax) 함수에 적용하면 각 점수가 0과 1 사이의 값으로 정규화된 어텐션 가중치(Attention Weight)를 얻을 수 있다. 이 가중치는 각 입력 부분의 중요성을 나타내기 때문에 해당 시점에서 예측할 단어와 관련 있는 입력 단어 부분을 집중해서 보게 된다.

  디코더는 이를 모든 시점의 인코더 셀의 은닉 상태인 값(Value) 벡터와의 가중합 연산을 통해 문맥 벡터를 생성한다. 그 결과 “je”가 생성되고, 다음 디코더 단계로 이동하여 다시 어텐션 메커니즘을 사용하여 “suis”를 생성한다. seq2seq의 문맥 벡터는 인코더의 마지막 은닉 상태(hidden state)를 지칭하는 반면, 어텐션 메커니즘에서의 문맥 벡터는 디코더의 현재 시점에서 가장 관련 있는 입력 정보를 반영한다. 이는 전체 입력 문장을 다시 한 번 참고하여 출력 단어를 예측하는데 사용함으로써 seq2seq의 한계점을 개선해 입력 시퀀스의 중요 정보를 보존할 수 있다. 이러한 어텐션 함수의 종류에 따라 Dot-Product Attention, Scaled Dot-Product Attention, Additive Attention, Multi-head Attention 등 다양한 어텐션 기법이 개발되었다.

 

 


  • Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
  • Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. In Advances in neural information processing systems, 3104-3112
  • 유원준, 안상준. (2024). PyTorch로 시작하는 딥 러닝 입문. Wikidocs. https://wikidocs.net/book/2788
 

Pytorch로 시작하는 딥 러닝 입문

이 책은 딥 러닝 프레임워크 PyTorch를 사용하여 딥 러닝에 입문하는 것을 목표로 합니다. 이 책은 파이썬은 어느정도 할 줄 안다고 가정합니다. 이 이상의 …

wikidocs.net