AI상식 w.GPT

Attention 모듈 설명 (매우 쉽게 설명)

DanGEE 2024. 10. 28. 23:31

 

1. 어텐션 모듈은 아래와 같이 생겼다. 

 

 

- Attention module. 

 

왼쪽에 keys(파란박스)가 5개 있고, qurey(흰박스) 가 1개있다. 

이 query와 keys가 attention scoring function의 입력이다. 따라서, 아래와 같이 수식을 쓸 수 있다. 

attention scoring function

 

attention scoring 함수의 목적은 key들중에서 어느 부분에 "집중"해야하는지 알아내는것이다. 

따라서 함수가 잘 동작했다면, key들 중에서 중요한 부분은 강조되고(값이 크고), 덜 중요한 부분은 값이 낮으면 된다. 

attention scoring function은 대표적으로 2개가 있는데, 아래쪽에서 다시 설명하겠다. 

 

자 이제, 그림을 다시보면, attention scoring function을 지나서, softmax 함수가 출력값에 적용된다. 

scoftmax 함수를 모르면 접은글을 참고하자. 간단하게, 입력값들의 합이 1이되도록 정규화한다. 

 

softmax를 통과한 값을 "Attention weight"라고 한다. (위 그림에서 softmax의 출력 화살표 위에 attention weight라고도 적혀있다. )

이 값을 attention weight인 이유? :

attention scoring function을 통해 key들중 중요한 부분을 값을 크게, 덜 중요한 부분을 값을 작게 한 후, softmax를 적용하여 총 합이 1인 값으로 바꾸고, 난다음엔,

 

최종적으로 그림의 맨 오른쪽 하늘색 박스 values에 계산한 결과값(합은 1)를 곱한뒤 ( 아래 그림 초록색 박스) 전체를 합하게 된다. (빨간색 박스)  이는 ax+b 에서 x를 우리가 weight라고 부르는 것을 생각하면 이해가 쉽다. 

 

 

따라서, attention module의 전체 수식은 아래와 같다. 

이 수식이 의미하는 바는, q,k에 attention scoring 합수의 입력으로, query(q), key(ki)를 사용하고, 이 결과물에 value(=vi) 를 곱한 값들의 합 이다. 

 

 

아마 아주 쉬웠을 것이다. 

여기까지 알아도 되지만, attention scoring 함수를 조금더 살펴보자. 

 

attention scoring 함수 2종을 살펴보자....

적기 귀찮으니까 gpt로 대체한다. ㅎ

 

 

1. scale Dot product attention.

계산 예시는 다음과 같다. 

 

 

2. additive attention

 

 

 

 

추가 : 이 블로그가 참 설명을 잘함 

https://jjuke-brain.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-2017-NIPS-Attention-is-All-You-Need-aka-Transformer-2