본문 바로가기
딥러닝 with Python

[개념정리] Self attention / 셀프 어텐션

by CodeCrafter 2024. 2. 13.
반응형

 

[개념정리] 어텐션(Attention)이란

 

[개념정리] 어텐션(Attention)이란

1. 어텐션(Attention)이란 - 어텐션 메커니즘의 기본 아이디어는 입력 시퀀스(Input sequence)에서 각 단어에 대한 '중요도'를 계산하여, 그 중요도에 기반해 출력 시퀀스(Output Sequence)를 생성하는 것입니

jaylala.tistory.com

 

 이전 포스팅에서 알아봤던 것처럼, 어텐션(Attention)이란 개념을 통해 기존의 RNN 계열 모델들에서 Encdoer의 hidden states가 Decoder로 충분히 전달되지 않는 문제를 해결 할 수 있었습니다.

 

그 이후, RNN 계열의 모델 없이 Attention만을 가지고 언어 모델을 만든 것이 바로 Transformer 입니다. 

 * RNN 계열의 모델 사용을 하지 않으려고 했던 가장 큰 이유는 연산량 때문입니다. 즉 RNN 보다 더 간단한 계산 Mechanism을 가지고 모델을 만들고자 했었던 것입니다.

 

이를 통해 나온 모델이 Transformer 이고, 이 Transformer에서 사용한 개념이 Self Attention 입니다.

(기존 Attention이 input과 output의 연관성에 주목해주었다면, Self Attention은 Input 된 값들의 구성요소들간의 연관성에 주목한다고 볼 수 있습니다)

 

[이번 포스팅은 https://codingopera.tistory.com/43     을 참조하였습니다]

 

4-1. Transformer(Self Attention) [초등학생도 이해하는 자연어처리]

안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Master.M'입니다. 현재 저는 '초등학생도 이해하는 자연어 처리'라는 주제로 자연어 처리(NLP)에 대해 포스팅을 하고 있습니다. 제목처럼 진

codingopera.tistory.com

1. Self Attention(셀프 어텐션)

- 한 시퀀스 내에서 각 위치가 시퀀스 내 다른 위치들과 어떻게 관련되어 있는 지를 모델링하는 방법을 말합니다.

- 아래 그림처럼, 한 시퀀스 내에서 구성 요소들간의 관계를 나타내는데요. 아래 문장에서 it 의 경우, Animal이라는 단어와 가장 높은 연관성을 띄고 있음을 확인하는 이와 같은 작업을 의미합니다.

 

-  셀프 어텐션의 작동 과정은 아래와 같습니다.

 

 a) 입력 준비 : 입력 시퀀스의 각 요소를 쿼리(Query), 키(Key), 벨류(Value) 벡터로 만듭니다. 즉, 입력 벡터가 있다면, 이 벡터에 Weight를 곱하고 Bias를 더해주는 선형 변환(LInear Projection)을 취해주는 것입니다. 이때, Weight와 Bias는 Learnable Parameter입니다. 

b) 유사도 계산 : 시퀀스 내의 각 Query에 대해, 다른 모든 요소들의 Key와 유사도를 계산합니다. 유사도를 구하기 위해 내적(Dot product)을 합니다. Query와 Key(Transposed 된)의 내적 값을 Attention score라고 합니다. 그런데, Query와 Key의 차원이 커지면 내적 값인 Attention Score도 커지기 때문에 모델이 학습할 때 불안정하게 될 수 있습니다. 이를 해결하기 위해, Squared Root of dk로 해당 Query와 Key의 내적값을 나누어 줍니다. 

 

c) 유사도 정규화 : 이렇게 구해진 값을 Softmax 함수에 넣어서 Attention distribution을 구해줍니다.

 

d) 가중치 부여 및 합산 : 각 Value 벡터에 c)에서 도출된 Attention distribution을 곱해주어 최종적으로 Attention value를 얻게 됩니다.

 

이와 관련된 예시는 아래와 같습니다. 

 

예를 들어 I am a student라는 문장이 있고, 첫번째 단어인 I의 임베딩 벡터가 [1,1,1,1]라고 한다면 I에 대한 Attention score는 1.5가 됩니다.

 

 

이와 같은 작업을 am / a / student에 대해서 해준다면 다음과 같은 예시가 나올 수 있습니다.

 

 

 

- Self Attetnion에서는 단어 하나하나에 대해 순차적으로 처리하는 것이 아닌 아래와 같이 병렬로 처리를 하고 있습니다. 

 

반응형

댓글