지난 포스팅에서는 seq2seq과 어텐션을 결합한 seq2seq with attention에 대해 알아보았습니다
오늘은 셀프 어텐션(self-attention)에 대해 알아보겠습니다
seq2seq with attention을 잘 이해했다면 어렵지 않습니다
seq2seq with attention에서는 어텐션 스코어를 계산할 때 인코더에서 넘어온 은닉 상태 벡터들과 디코더의 은닉 상태 벡터간의 내적을 한 뒤 소프트맥스를 취해주었습니다.
여기서 주목할 점은 인코더의 은닉 상태 벡터 $h_{(encoder, i)}$와 디코더의 은닉 상태 벡터 $h_{(decoder, j)}$간의 연산이었다는 것입니다. 즉, 현재 출력하려는 결과와 유사도가 가장 높은 input 정보를 많이 반영하겠다는 것입니다
반면 셀프 어텐션은 입력 시퀀스 안에서 각 데이터의 임베딩 벡터 간에 어텐션 스코어 계산이 이루어집니다. 즉, 셀프 어텐션은 시퀀스 데이터 내 각 토큰간의 관련성을 보겠다는 뜻입니다.
예를 들어, I love apple이라는 문장이 있을 때 각 단어의 임베딩 벡터를 $$\begin{align} e_{I} = [1, 0, 1, 1] \\ e_{love} = [1, 1, 0, 1] \\ e_{apple} = [0, 1, 1, 1] \end{align}$$이라고 할 때 apple의 어텐션 스코어를 계산해보면 apple과 연관이 높은 단어를 구할 수 있습니다. 한 번 계산을 해보겠습니다:
$$\begin{align} e_{I} \cdot e_{apple} = [1, 0, 1, 1] \cdot [0, 1, 1, 1] = 2 \\ e_{love} \cdot e_{apple} = [1, 1, 0, 1] \cdot [0, 1, 1, 1] = 2 \\ e_{apple} \cdot e_{apple} = [0, 1, 1, 1] \cdot [0, 1, 1, 1] = 3 \end{align}$$
마찬가지로 소프트맥스를 취해주면 $e_{apple}$에 대한 $e_{I}$의 가중치는 0.2, $e_{love}$의 가중치는 0.2, $e_{apple}$의 가중치는 0.6입니다
즉, apple은 자기 자신과 가장 관련이 높고(당연하게도), I와 love에 대해서는 같은 정도로 관련돼있다는 것을 알 수 있습니다
이번 포스팅에서는 셀프 어텐션의 개념과 계산 방법에 대해 알아보았습니다
다음 포스팅에서는 트랜스포머 구조 안에서의 어텐션에 대해 알아보겠습니다
감사합니다
'딥러닝 > 트랜스포머' 카테고리의 다른 글
트랜스포머 시리즈 마지막편 트랜스포머의 구조 - 디코더 (0) | 2024.02.06 |
---|---|
트랜스포머 시리즈 4편 트랜스포머의 구조 - 인코더 (0) | 2024.02.05 |
트랜스포머 시리즈 3편 Q, K, V (0) | 2024.02.04 |
트랜스포머 시리즈 1편 Attention 어텐션 (0) | 2024.02.01 |