(구름 AI 자연어처리 과정 자료는 저작권에 의해 사용할 수 없게되었다. 따라서 사진 설명이 적을 수도 있음)
저번엔 Attention이 무엇인지에 대해 간단하게 알아봤는데
이번엔 수식 위주로 Attention score을 구하는 과정에대해 조금 더 자세하게 알아보려고 한다.
앞서 Q, K, V 개념에 대해 간단히 다루어보았다.
여기서 다시 그 개념이 활용된다 (여기서 부터 다시 알아보아도 낫밷)
Attention score은 각 단어별로 어떤 input 벡터에 '집중'해야할지를 알려주는 값인데
이 값을 구하는 과정은 다음과 같다.
먼저 임베딩된 각 input 벡터들의 유사도를 판단한다.
이는 Query, Key 벡터의 내적값으로 구할 수 있다.
(임베딩 벡터로 이루어진 행렬 X에 각각 해당 가중치를 내적해주어 Q, K, V값을 계산해낸다.)
그 다음은 해당 곱에 softmax 함수를 취해주어 합이 1이 되게 값을 만드는 것이다.
그렇다면 softmax를 취한 값들을 비교해 중요도를 비교할 수 있다.
여기서 softmax를 취한 값들을 Value 벡터와 곱해주게 된다면
그 값을 attention score로 활용할 수 있다.
그 과정을 그림으로 나타내면 다음과 같다.
(중간에 8로 나눠준 것은 응용 모델인 Scaled Dot-product Attention에 포함된 과정이다. 여기서 d는 dimension을 뜻함)
딱봐도 복잡해 보여서 더 원할히 계산하기 위해 주로 행렬식을 활용하고 있다고 한다.
(여기서 Key 행렬을 전치시킨 이유는 Q행렬과 같은 row 벡터이기 때문에 column으로 바꿔줌)
(Q벡터와 K벡터의 개수는 다를 수 있으나 V벡터는 K벡터에 영향을 받으며 서로 pair하기에 개수가 같다)
또한 milti-head로 성능을 향상시킨 경우가 있는데
세트별로 독자적인 head들이 attention을 병렬로 수행하여 concat 해주면 된다.
조금 더 자세히 설명하자면 각 세트별 attention값을 병렬로 쭉 이어준 후
그 값이 너무 길어지기에 다시 선형결합을 통해 dimension 개수를 줄여준다.
Multi-head attention은 독단적으로 빠르게 할 수 있다는 장점이 있다.
이 과정을 그림으로 본다면 다음과 같다.
마지막으로 중간에 scaled dot-product attention을 살짝 언급했었는데
이는 주로 사용되는 attention이고 기본 attention score를 value값 곱하기 전에 dimension의 제곱근 값으로
나누어 계산해 준다는 특징이 있다.
dimension값이 크다는 것은 내적값이 크다는 것이고 이는 softmax를 취할시
기존에 큰 값이 과도하게 반영되어 예를들어 0.99와 같이 더 심하게 몰리게 된다.
이렇게 되면 모든 정보를 고려해서 조합하지 못하고 하나만 골라야하는 문제가 생기며
또한 차원이 클수록 scale값이 커지므로 이 문제를 방지하기 위해 d의 제곱근으로 나눠주는
scaled dot-product attention이 사용된다.
마지막으로 illustrated-transformer에 있는 multi-headed self attention 과정 설명 그림
끁
'자연어처리 > 개념 정리' 카테고리의 다른 글
BERT 간단 개념 정리 (0) | 2022.09.16 |
---|---|
Transformer 간단 개념 정리 (0) | 2022.09.14 |
Naive Bayes Classifier 간단 개념 정리 (0) | 2022.09.12 |
Tokenization 전처리 간단 개념 정리 2 (0) | 2022.09.10 |
NLP Preprocessing(전처리) 간단 개념 정리 1 (0) | 2022.09.09 |
댓글