eubinecto / k4ji_ai

4명의 김씨, 한명의 진씨, 한명의 임씨가 모여서 인공지능을 공부하고 있습니다.
13 stars 0 forks source link

self-attention이란 무엇일까? #42

Open eubinecto opened 3 years ago

eubinecto commented 3 years ago
equation1, 3.2.1.Scaled-dot-product attention, pg.4
image
figure 2. pg. 3.2. attention, pg. 4
image

이 공식에서, 이 그림에서, Q, K, V가 의미하는 것이 무언인지 이해를 못하겠다. transformer의 encoder에 들어가는 입력벡터는 분명 하나인데, 왜 입력이 3개나 되는가?

contents

eubinecto commented 3 years ago

self-attention은 왜 필요한가?

먼저, self-attention이라는 개념이 등장하게된 배경을 생각해보자.

self-attention은, 주어진 입력에 "상황"을 부여하기 위해 사용하는 또 다른 encoder라고 볼 수 있다.

못생긴 그림 설명
image 먼저, encoder-decoder 구조에서 encoder의 목적을 다시 한번 생각해보자. encoder는 주어진 입력 벡터에 어떠한 처리를 통해 "상황"이 담긴 벡터를 출력하는 것이 목표다.
image 예를 들어, 인코더로 RNN기반 모델을 사용하게 되면, t에서의 "상황"을 t=0에서부터 t=1까지에 대한 "기억"으로 인코딩을 할 수가 있다.
https://github.com/eubinecto/k4ji_ai/issues/39#issuecomment-699163305 처음 어텐션 메커니즘을 제안한 논문의 경우, 입력에 RNN(encoder)으로 상황을 부여하고 그 상황을 또 다른 RNN (decoder)이 "align"을 할때, 어텐션을 적용해보자고 제안한 것.
image self-attention은, encoder에 입력 벡터가 들어가기전, 입력 벡터와 입력 벡터 자신 사이의 어텐션을 구해서, encoder의 입력 자체에 "상황"을 인코딩하는 방법이다.

transformer에서 self-attention은 정확히 그 용도로 쓰인다. 단지 encoder로 RNN 구조를 attention 메커니즘만으로 완전하게 대체했다는 것이 다른 것.

transformer architecture transformer architecture- simplified
image image
eubinecto commented 3 years ago

self-attention intuition

self-attention을 시각화 해보면, seq-seq(동일한) 유사한 정도를 나타내는 것이라고 self-attention을 이해할 수 있을 것 같다.

figure 5, pg. 15
image
eubinecto commented 3 years ago

What is Q, K, V? - Information Retrieval analogy

파라미터에 대한 이름을 짓기 위해서, Information Retrieval (검색) 에서의 Query, Key, Value의 개념에 대한 비유를 한 것 같다.

예를 들어, 데이터 베이스에

가 저장되어 있고, 사용자가 이 데이터 베이스만을 검색할 수 있는 검색엔진에서

해당 쿼리를 검색했다면 , 검색엔진은 어떤 것을 계산을 해야하는가? 우선적으로 동일한 query에 대하여, 각 key와 query사이의 유사도를 생각해보아야 한다.

즉,

이런 식으로 각각의 유사도를 먼저 구해야 사용자에게 어떤 정보를 먼저 보여주어야 할지 결정할 수 있다. (ranking을 할 수 있다).

  1. similarity(query, key2) = 400 > 399000원 입니다. < 1등 문서
  2. similarity(query, key3) = 200 > 900000원 입니다. < 2등 문서
  3. similarity(query, key1) = 10 > 2000000원 입니다. < 3등 문서

만약 이런 ranking과 함께, 각 key들의 상대적 유사도를 파악하고 싶다면, 각 유사도 점수를 모든 유사도 점수에 대하여 정규화 하면 된다.

즉,

  1. norm(similarity(query, key2)) = 400 / 610 > 399000원일 확률이 67% 입니다.
  2. norm(similarity(query, key3)) = 200 / 610 > 900000원일 확률이 32% 입니다.
  3. norm(similarity(query, key1)) = 10 / 610 > 2000000원일 확률이 1% 입니다.

그렇다면 query에 대한 답은 어떻게 구해야 할까? 두가지 방법이 있다.

첫번째로는, 그냥 1등 문서를 보여주는 방식이 있고 :

두번째로는, 모든 key와의 상대적 유사도를 알고 있으므로, query에 대한 답을 모든 value의 weighted sum을 통해 보여줄 수 있다.

이 두번째 방법이, self-attention의 방법과 매우 유사한 방법이라고 볼 수 있겠다.

eubinecto commented 3 years ago

What is Q, K, V? - IR analogy와 self-attention의 연결

Rasa algorithm whiteboard - attention 2 설명
image 단, IR analogy와 다른 점은, K, Q, V는 결국엔 항상 동일한 벡터라는 것. (self-attention이기 때문)
image sim(query, key)로 단순히 dot product를 쓰게 될 경우, 사실상 최적화해야하는 weight가 없다.
image 하지만 이를 위해 Q,K, V각각을 선형변환하는 가중치 행렬 (Mq,Mk, Mv)을 추가하면, 학습해야하는 가중치를 introduce할 수 있다.
image 이 구조를 도식화하면 다음과 같이 그려볼 수 있다. Linear 부분이 선형변환. 이러한 구조의 네트워크를 "self-attention block"이라고 부른다.
image 모든 구조가 연속적으로 연결되어 있으므로, 오차역전파법으로 Mq,Mk, Mv 를 최적화 할 수 있다.
eubinecto commented 2 years ago

멋사 강의를 하면서 제작했던 것

https://spangled-ragdoll-9c1.notion.site/WEEK8-Transformer-How-does-Self-attention-work-e02fc6b942f64b2ba82ce7e35afc817d

eubinecto commented 2 years ago

다시 k4ji로 돌아가라!

dasoyou commented 8 months ago

좋은 자료 공개해 주셔서 감사합니다. 결국 Self Attention을 오차역전파로 학습이 가능하다고 설명해 주셨는데, 의도가 지도학습이 맞는 것이겠죠? 그렇다면 Self Attention의 오차역전파를 위한 Label과 Loss에 대한 이야기가 빠져있어서 그 부분에 대해서 한 수 배우고 싶습니다.

오차역전파를 위한 Label과 Loss는 어떻게 되는 것일까요? 감사합니다.