4. Attention Mechanism
(1) Attention Mechanism 소개
□ 기존 Seq2Seq 모델의 한계를 극복하고자 어텐션 메커니즘이 도입됨. 어텐션 메커니즘은 seq2seq 모델에 어텐션 구조를 추가해 정확도를 높임
■ 기존 Seq2Seq 모델은 고정 길이의 컨텍스트 벡터를 사용해서 입력 시퀀스가 길어질수록 정보의 소실이 발생해 성능이 떨어짐
■ 어텐션 메커니즘은 입력 문장의 단어별로 가중치를 서로 다르게 부여하여 문맥상 중요한 단어와 그렇지 않은 단어를 구분함
■ 디코더에서 인코더의 마지막 은닉 상태 뿐만 아니라 매 시점마다 입력 시퀀스 전체를 고려해서 예측
■ 현재 예측해야하는 단어와 연관된 단어에 대한 은닉 상태를 함께 고려
■ 입력과 출력의 길이가 다른 경우에도 모델이 더 유연하게 동작
(2) Attention Function
□ Attention Fucntion에는 key, value, query라는 세 가지 요소가 존재
■ Key의 경우 입력 시퀀스의 모든 요소에 대한 정보를 담은 벡터, 즉 인코더의 은닉 벡터로 각 요소의 중요도를 계산하는데 활용
■ Value의 경우 key와 마찬가지로 입력 시퀀스의 각 요소에 대한 정보를 담고 있고 키와 관련된 값을 내타내며, 각 키에대한 가중 평균을 구할 때 사용
■ Query는 출력 시퀀스의 현재 시점에 대한 정보를 담은 벡터로 현재 시점의 디코더 모듈의 은닉 상태를 의미함

□ Attention Function은 key와 query의 유사도를 측정하고 그 값으로 각 단어의 가중치를 계산함. 이렇게 계산한 가중치와 value 벡터를 곱해 출력층 연산을 위한 새로운 벡터를 생성

그림 1 어텐션 메커니즘의 전체적인 구조
(3) Attention Mechanism의 구조
□ 어텐션 메커니즘에서는 score function을 이용해서 매 시점의 인코더의 은닉 상태 과 디코더의 은닉 상태 을 이용해서 둘 사이의 유사도를 구함. 두 은닉상태의 유사도가 높다는 것은 더 눈여겨봐야할 정보라는 것을 뜻

■ 스코어 함수의 종류에 따라 어텐션 메커니즘의 종류가 달라짐. 대표적인 스코어 함수로는 Dot-product Attention(내적 어텐션)이 있음. 이 경우에는 내적 연산을 수행하기 위해 를 전치시킨 벡터를 와 곱하여 어텐션 스코어를 계산함.
■ e는 와 인코더의 모든 은닉 상태를 이용하여 구한 어텐션 스코어의 벡터이고 앞선 설명에서 key에 해당하는 벡터가 이고, query에 해당하는 벡터가 임
□ Attention Distribution(어텐션 분포)은 어텐션 스코어의 벡터인 e를 소프트맥스 함수에 넣어 구한 확률 분포임
■
■ 어텐션 분포를 통해 현재 시점에서 인코더의 어떤 토큰이 디코더의 출력에 중요한지 파악할 수 있음

□ 어텐션 값 a을 구하기 위해 어텐션 분포 를 인코더의 각 시점의 은닉 상태와 곱하고 이 값들의 총합을 구하면 어텐션 값 a가 나옴
■ 문장의 토큰의 개수가 4개인 경우 입력 순서대로 각 시점을 ~라 할 경우 일 때의 어탠션 분포 과 그 시점의 인코더의 은닉 벡터 을 곱해서 어텐션 값의 일부를 구할 수 있음. 이 과정을 문장의 토큰의 개수 혹은 문장의 길이 만큼 반복하여 그 총합 를 구할 수 있음

□ 어텐션 값을 구하면 어텐션 값과 현재 예측을 해야하는 시점의 디코더의 은닉 상태를 concatenate하여 새로운 벡터 를 생성함. 에 가중치를 곱하고 하이퍼볼릭 탄젠트 층에 넣어 최종 은닉 상태 를 구함. 에 소프트맥스 함수를 적용하여 최종 예측 벡터를 구하고 가장 확률이 높은 단어를 예측값으로 출력
(4) 다양한 스코어 함수의 종류
□ 어텐션 메커니즘은 스코어 함수의 종류에 따라 구분이 가능.
■ Scaled Dot-Product Attention은 가장 기본적인 스코어 함수에 정규화를 적용시킨 함수로 차원들의 개별적인 영향력을 감소시키는 역할을 함
■ Multi-head Attention은 Scaled Dot-Product Attention 구조를 병렬적으로 배치한 후 그 값들을 합치는 방식
■ Additive Attention 또는 Bahdanau Attention은 인코더의 은닉 상태 와 디코더의 은닉 상태 를 서로 다른 가중치를 통해 곱한 후 그 합을 하이퍼볼릭 탄젠트 층에 넣은 값을 구함. 하이퍼볼릭 탄젠트 층의 출력값에 다시 가중치를 곱하여 어텐션 스코어를 구함
'인공지능 > 딥러닝' 카테고리의 다른 글
Pytorch - Tutorials(파이토치 모델 학습 코드 설명) (1) | 2024.04.09 |
---|---|
Transformer (2) | 2024.03.17 |
인공 신경망 종류 (3) Seq2Seq (0) | 2024.03.17 |
인공 신경망의 종류 (2) LSTM (0) | 2024.03.17 |
인공 신경망의 종류 (1) RNN (0) | 2024.03.17 |