728x90

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은 인코더의 은닉 상태 와 디코더의 은닉 상태 를 서로 다른 가중치를 통해 곱한 후 그 합을 하이퍼볼릭 탄젠트 층에 넣은 값을 구함. 하이퍼볼릭 탄젠트 층의 출력값에 다시 가중치를 곱하여 어텐션 스코어를 구함


1) https://wikidocs.net/24996

+ Recent posts