[비전공자도 이해하는 트랜스포머] 2. Self-Attention

필승! 강화도에서 해병대 장교로 국방의 의무를 다하고, 현재는 대학원에서 인공지능을 공부하고 있는 규씨입니다.


단순히 읽고 이해하는 것만으로는 기억에 오래 남지 않는다는 것을 깨닫고, 공부한 내용을 정리하고 공유하면서 더 오래 기억하기 위해 블로그를 시작하게 되었습니다.


읽으시면서 틀리거나 제가 잘못 이해한 부분 지적해 주시면 정말 감사하겠습니다.  함께 배우고 성장하는 공간이 되기를 바랍니다. 감사합니다!


트랜스포머의 전체적인 구조가 궁금하신 분은 아래 링크를 참고하시면 되겠습니다.

2024.06.07 - [논문 리뷰] - Attention Is All You Need

 

Attention Is All You Need

필승! 강화도에서 해병대 장교로 국방의 의무를 다하고,현재는 대학원에서 인공지능을 공부하고 있는 규씨입니다.단순히 읽고 이해하는 것만으로는 기억에 오래 남지 않는다는 것을 깨닫고,공

acting-rationally.tistory.com

 

추가로 전에 작성했던 글도 참고하시면 도움이 될것 같습니다.

 

1. Scaled Dot-Product Attention

2024.06.08 - [딥러닝] - [비전공자도 이해하는 트랜스포머] 1. Scaled Dot-Product Attention

 

[비전공자도 이해하는 트랜스포머] 2. Scaled Dot-Product Attention

필승! 강화도에서 해병대 장교로 국방의 의무를 다하고, 현재는 대학원에서 인공지능을 공부하고 있는 규씨입니다.단순히 읽고 이해하는 것만으로는 기억에 오래 남지 않는다는 것을 깨닫고,

acting-rationally.tistory.com


□ 셀프어텐션(Self-Attention)
주로 자연어 처리(NLP)에서 사용하는 메커니즘으로 입력 데이터의 각 요소가 다른 모든 요소들과의 관련성을 평가하고, 이를 기반으로 가중치를 계산하여 입력 데이터의 각 요소를 새롭게 표현하는 방법입니다. 아래의 그림을 보면 "it"이 "animal"을 가리킨다는 사실을 사람은 쉽게 파악할 수 있지만, 컴퓨터는 그렇지 못합니다. 이를 해결하기 위해 Scaled Dot-Product Attention을 이용하여 각 단어 간의 연관성을 파악하는 것을 셀프 어텐션이라고 합니다. 

Scaled Dot-Product Attention에 대한 자세한 내용은 이전 포스팅을 참고해 주세요! 위의 링크를 클릭하시면 확인할 수 있습니다.

 

 

□ 예시로 보는 셀프어텐션

Acting Machines 이라는 입력이 있고, 임베딩, 포지셔널 인코딩을 실시하여 아래와 같은 Q, K, V 값이 있다고 가정합니다. 이 예시에서 d=3입니다.

 

 

□ "Acting" 단어를 Query로 하는 셀프어텐션
1. q1*k1 q1*k2 값을 계산합니다.

 

2. 계산값의 안정화를 위해 1/sqrt(3)을 곱해줍니다.

 

3. 소프트맥스 함수를 취합니다.

 

4. 결과값을 Value 벡터와 곱해줍니다.

 

○ 의미
Weights: "Acting" 단어는 자기 자신과의 관계에서 0.9999, "Machines" 단어와의 관계에서 0.0001의 가중치를 가집니다.
Outputs: [1.0002,2.9998,4]는 "Acting" 단어가 문맥에서 다른 단어들과의 관계를 통해 업데이트된 새로운 표현입니다.
이 벡터는 "Acting" 단어의 정보가 "Machines" 단어의 정보보다 훨씬 더 많이 반영되었음을 보여줍니다.

결론적으로 "Acting" 단어는 자기 자신과의 관계가 매우 높고 "Machines" 단어와의 관계는 거의 없다는 것을 의미합니다.

 

 

□ "Machines" 단어를 Query로 하는 셀프 어텐션
1. q2*k1 q2*k2 값을 계산합니다.

 

2. 계산값의 안정화를 위해 1/sqrt(3)을 곱해줍니다.

 

3. 소프트맥스 함수를 취합니다.

 

4. 결과값을 Value 벡터와 곱해줍니다.

 

○ 의미
Weights: "Machines" 단어는 자기 자신과의 관계에서 0.2315, "Acting" 단어와의 관계에서 0.7685의 가중치를 가집니다.
Outputs: [1.463, 2.537, 4]는 "Machines" 단어가 문맥에서 다른 단어들과의 관계를 통해 업데이트된 새로운 표현입니다.
이 벡터는 "Acting" 단어의 정보가 "Machines" 단어의 정보보다 훨씬 더 많이 반영되었음을 보여줍니다.

결론적으로 "Machines" 단어는 자기 자신과의 관계가 상대적으로 낮고 "Acting" 단어와의 관계는 상대적으로 높음을 의미합니다.


지금까지 Scaled Dot-Product Attention의 상위 개념인 Self-Attention에 대해 알아보았습니다. 처음에는 이해하기 어려울 수 있지만 반복해서 읽고 적용해보면 분명히 도움이 될 것입니다. 궁금한 점이나 잘못된 부분이 있다면 언제든지 댓글로 알려주세요. 함께 배우고 성장하는 공간이 되기를 바랍니다. 읽어주셔서 감사합니다!