새소식

머신러닝 & 딥러닝

어텐션 메커니즘(Attention Mechanism)

  • -

어텐션(Attention)은 Seq2seq 모델에서 디코더(decoder)가 인코더(encoder)의 정보를 활용할 수 있도록 하는 메커니즘이다. 기존의 Seq2seq 모델은 인코더의 최종 문맥 벡터(context vector)를 고정된 길이의 벡터로 압축하고 이를 디코더에 전달하는데, 이는 입력 시퀀스의 모든 정보를 하나의 벡터에 압축하기 때문에 정보 손실이 발생할 수 있다. 어텐션 메커니즘은 이러한 문제를 해결하기 위해 개발되었다.

 

어텐션은 디코더가 출력 단어를 생성할 때 인코더의 각 입력 단어에 주의(attention)를 기울일 수 있도록 한다. 이는 디코더가 인코더의 어떤 부분에 더 집중해야 하는지를 학습할 수 있게 해준다. 어텐션 메커니즘은 인코더와 디코더 사이에 추가적인 컴포넌트로 도입되며, 다음과 같은 과정으로 작동한다.

 

인코더의 출력 계산

인코더의 각 입력 단어에 대한 임베딩을 인코더의 RNN에 주입하여 인코더의 모든 은닉 상태(hidden state)를 계산한다.
이러한 은닉 상태들은 각각의 단어 위치에 대응한다.


어텐션 가중치(attention weight) 계산

디코더의 현재 단계에서의 은닉 상태를 기반으로 어텐션 가중치를 계산한다.
이 가중치는 인코더의 각 단어 위치에 대한 중요도를 나타낸다. 중요한 단어에 더 높은 가중치가 부여된다.
가장 일반적인 어텐션 메커니즘인 어텐션 스코어(attention score)는 현재 디코더의 은닉 상태와 인코더의 각 은닉 상태 간의 유사도를 계산하는 함수다. 유사도는 내적(dot product), 어텐션 스코어 함수, 신경망 기반 스코어 함수 등으로 계산될 수 있다.

attention score
dot product attention
attention value


가중합 계산

어텐션 가중치와 인코더의 은닉 상태를 가중합하여 어텐션 값(attention value)을 계산한다.
어텐션 값은 인코더의 각 단어 위치에서의 중요한 정보를 포함하고 있다.


디코더의 입력 계산

디코더의 현재 단계에서의 입력은 어텐션 값과 이전 단계에서 생성한 단어 임베딩을 결합한 것이다.
이를 디코더의 RNN에 주입하여 다음 단어를 예측하고, 학습 과정에서 훈련된다.
어텐션 메커니즘을 사용하면 디코더가 인코더의 다양한 부분에 주의를 기울일 수 있으며, 이는 번역이나 요약 등의 작업에서 더 나은 성능을 얻을 수 있도록 도와준다.

'머신러닝 & 딥러닝' 카테고리의 다른 글

트랜스포머(Transformer)  (2) 2023.06.13
Seq2seq(sequence-to-sequence)  (0) 2023.06.13
Isolation Forest  (0) 2023.06.04
[PyTorch] 신경망 모델 구축 방식  (0) 2023.05.06
[Tensorflow] 신경망 모델 구축 방식  (0) 2023.05.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.