Algorithm

[구글 BERT의 정석] Chapter1: 트랜스포머 입문(2)

Im_light.J 2023. 1. 26. 07:06
728x90

이전 글에서 트랜스포머와 어텐션에 대해 대략적으로 알아보았다.

트랜스포머는 어텐션 구조를 이용해 문장 간의 관계를 파악한다.

그리고, 여기서 Q,K,V를 활용한다.

오늘은 저 행렬들을 어떻게 활용하여 관계를 구하는지 자세히 알아보자

1단계

첫번째 단계는 쿼리 행렬과 키(transpose)의 내적 연산을 수행한다.

행과 열의 이름은 각 단어로 불러보자 그럼 "I" 행 "I"열의 원소는 "I" 벡터와 "I"벡터의 내적이다

마찬가지로 임의의 행 N과 열 M에 대해서 원소는 단어 N 벡터와 M의 내적이라고 할 수 있다.

기하학적으로 내적은 두 벡터의 선형사상을 의미한다.

조금 비약해서 말하면 두 벡터가 비슷한지 정도로 이해하면 좋을 것 같다.

그렇다면 결과로 나온 행렬의 각 원소는 단어와 단어의 유사도의 행렬이라고 할 수 있다.

 

 

2단계

 

다음은 Q와 K의 내적을 K벡터의 차원의 제곱근으로 나누어준다. 이를 통해 안정적인 gradient를 얻을 수 있다

 

 

3단계

마지막으로 softmax함수를 통해 정규화 작업을 진행한다. 소프트맥스는 함수의 특성 상 0~1 사이의 값을 지닌다.

이를 통해 2단계의 결과를 적용하면 각 단어들이 어느정도 %의 유사도를 가지는지 알 수 있다.

이렇게 결과로 나온 행렬은 스코어 행렬이라고 한다.

Score Matrix = $Softmax(\frac{QK^T} {\sqrt d})$

 

 

4단계

 

다음은 어텐션 행렬을 계산하는 것이다. 어텐션 행렬은 각 단어의 벡터값을 갖는다.

앞서 구한 스코어 행렬에 value 행렬을 곱하여 구할 수 있다.

 

 


지금까지 과정을 요약하면 

 

1.쿼리와 키의 내적 

2.1의 결과를 차원의 제곱근으로 나눔

3.소프트맥스 함수 적용

4.어텐션 행렬 계산 

 

샐프 어텐션 메커니즘

 

728x90