데이크루 5기

GPT4가 알려주는 Transformer_4(기초부터 심화까지)

2023.04.03 19:10 1,355 조회

Transformer_1 : https://dacon.io/competitions/official/236091/talkboard/408068?page=1&dtype=recent

Transformer_2 : https://dacon.io/competitions/official/236091/talkboard/408069?page=1&dtype=recent

Transformer_3 : https://dacon.io/competitions/official/236091/talkboard/408071?page=1&dtype=recent


지금까지

Self-Attention, 쿼리-키-밸류, embedding, positional encoding

에 대해서 알아보았습니다.


이번 시간은

Multi-Head Attention

에 대해서 알아볼까요?




이 전에 우리는

Transformer의 핵심 개념인 Self-Attention 에 대해서 배웠습니다.


Self-AttentionMulti-Head Attention은 비슷한 메커니즘이지만, 둘 사이에는 몇 가지 차이점이 있습니다.



Self-Attention:


 - Self-Attention은 입력 시퀀스 내의 모든 단어 간의 관계를 학습하기 위해 쿼리(Query), 키(Key), 밸류(Value) 행렬을 사용하여 어텐션을 계산합니다.

 - 이 메커니즘은 하나의 표현 공간(representation space)에서 어텐션을 수행합니다.

 - 결과적으로, Self-Attention은 입력 시퀀스의 정보를 하나의 관점에서만 학습하게 됩니다.



Multi-Head Attention:

 - Multi-Head Attention은 Self-Attention을 여러 개의 "헤드(head)"로 분할하여 동시에 수행합니다.

 - 각 헤드는 독립적인 가중치 행렬을 사용하여 쿼리(Query), 키(Key), 밸류(Value) 행렬을 계산하므로, 각 헤드는 서로 다른 표현 공간에서 어텐션을 수행합니다.

 - 이로 인해, Multi-Head Attention은 입력 시퀀스의 정보를 여러 관점에서 동시에 학습할 수 있습니다.






요약하면,

Self-Attention은 하나의 표현 공간에서 어텐션을 수행하는 반면,

Multi-Head Attention은 여러 헤드를 사용하여 다양한 표현 공간에서 동시에 어텐션을 수행합니다.

이 차이로 인해 Multi-Head Attention은 입력 시퀀스의 정보를 더 다양한 관점에서 학습할 수 있으며,

이는 더욱 복잡한 패턴을 인식하는 데 도움이 됩니다.





지금까지 배운 내용들을 유기적으로 연결 시켜 볼까요?



임베딩(Embedding): 입력 문장의 단어를 고정된 크기의 벡터로 변환합니다. 

이렇게 변환된 벡터는 Transformer의 첫 번째 레이어로 전달됩니다.


위치 인코딩(Positional Encoding): Transformer 모델은 순차적인 정보를 고려하지 않기 때문에, 

위치 정보를 제공해주는 위치 인코딩을 임베딩 벡터에 더합니다. 

이를 통해 모델이 단어의 순서를 인식할 수 있습니다.


쿼리-키-밸류(Query-Key-Value): 셀프 어텐션을 수행하기 위해 입력 벡터로부터 쿼리, 키, 밸류 행렬을 생성합니다.

 이 행렬들은 각 단어 간의 관계를 계산하는 데 사용됩니다.


Self-Attention: 쿼리-키-밸류 메커니즘을 이용하여 입력 시퀀스의 단어 간 관계를 계산하고,

 이를 통해 문장 내 단어들의 상호 작용을 모델링합니다.


Multi-Head Attention: Self-Attention 메커니즘을 여러 개의 독립적인 헤드로 나누어 병렬로 수행합니다.

 이를 통해 모델이 다양한 표현 공간에서의 관계를 동시에 학습할 수 있습니다.


이러한 과정들이 순차적으로 진행되면서, Transformer 모델은 입력 문장의 의미와 구조를 고려한 인코딩을 수행합니다.



다음 시간엔

Multi-Head Attention을

코드를 보며 이해해 봅시다!