자연어처리

[자연어처리, CS224N] Lec8 : Self-Attention and Transformer

ima9ine4 2024. 4. 30. 15:26
728x90

두둥 .. 진짜 transformer 시작! 내일이 시험인데 블공이 맞나..? 싶지만 일단 하겠음

목차
1. From recurrence(RNN) to attention based NLP models - RNN에서 attention 기반의 NLP 모델까지
2. The Transformer model
3. Great results with Transformers
4. Drawbacks and variants of Transformers

우리는 지난 시간에 Multi-layer RNN for machine translation에 대해 배웠다. 하지만 Source Sentence의 마지막 인코딩만을 디코더의 입력으로 넣어준다는 점에서 문제가 생긴다. Source sentence의 마지막 인코딩은 Source Sentence의 모든 정보를 담고 있지 않다. 그런 입력으로부터 나온 출력은 다음 layer의 입력으로 들어가면서 병목현상이 발생한다. 또한 recurrent하기 때문에 병렬화 연산이 불가능하다. 이 문제의 근본적인 원인은 RNN의 구조이다. 

그래서 우리는 이를 해결하기 위해 Attention에 대해 알아볼 것이다. 

Attention의 핵심 아이디어는 디코더에서 출력 단어를 예측하는 매 시점마다, weighted sum으로 디코더와 인코더의 direct connection을 만들어주는 것이다.

cf ) weighted sum(가중합)이란 각각의 수에 어떤 가중치 값을 곱한 후 이 곱셈 결과들을 다시 합한 것을 의미한다. 예를 들어서 물건의 가격이 담긴 벡터가 있고, 각각의 물건을 몇 개씩 구입했는지 수량이 담긴 벡터가 있다고 하자. 같은 인덱스에 해당하는 가격과 수량을 모두 곱하면 총 금액이 될 것이다.

어텐션 함수에서는 query, key, value라는 개념이 등장한다. 어텐션은 주어진 쿼리에 대해서 모든 키와의 유사도를 각각 구한다. 그리고 구해낸 이 유사도를 키와 맵핑되어 있는 각각의 값(Value)에 더해서 리턴한다. 이 결과 값이 Attention value가 된다.



나는 여기서 등장하는 쿼리, 키, 밸류 개념에 대한 설명이 너무 부족하다고 느껴졌다.. 좀 더 자세히 정리하고 넘어가자!
Query, Key, Value란 RNN의 hidden state 값들을 용도에 따라 구분한 것이다.

  • Query
    • 쿼리는 현재 보고 있는 단어의 representation으로, 다른 단어를 평가하는 기준이 된다.
    • 현재 단어와 유사한 단어는 무엇인가?
  • Key
    • Key vector는 단어에 대한 lable이다. 
    • 현재 단어와 관련된 가장 중요한 단어는 무엇인가?
  • Value
    • Key와 연관된 값, Key에 대한 정보
    • 현재 단어와 관련된 값들은 무엇인가?

응그래도 모르겠다.. 정리하자면 우리는 하나의 Query에 대해서 Key를 통해 어떤 것에 집중할지 결정한다. 주어진 쿼리와 키 사이의 유사도에 따라 각각의 밸류에 가중치가 부여된다.


우리가 배우고 있었던 Seq2Seq에 어텐션 모델을 사용하면 어떻게 될까? 그림을 보면 디코더의 매 스텝마다 해당 스텝의  hidden state와 모든 스텝의 encoder의 encoding을 dot product하여 similiarity를 계산한다. 그러면 그 결과로는 attention score가 나오는데, 이 어텐션 스코어는 해당 스텝의 인코딩과, 모든 decoder의 hidden state가 반영되어 있는 것이다. 매 토큰 마다의 attention score는 softmax함수를 통해 확률분포(probablility distribution)으로 바꾼다. 이 확률과 encoder의 hidden state를 가중합(weighted sum) 해서 나오는 것이 attention output이다. attention output은 디코더의 hidden state와 concat하여 최종적으로 해당 step의 word가 결과로 나온다.

순서로 보기 좋게 정리하면 아래와 같다.

  1. Computing the attention scores
    decoder의 hidden state를 encoder의 모든 hidden state와 각각 dot product하여 유사도를 계산하여 attention score를 구하기
  2. Taking softmax to get attention distribution
    attention score에 soft max를 취해서 확률 분포를 만든다.
  3. Using attention distribution to take weighted sum of values
    encoder hidden state와 attention distribution을 가중합하여 attention output을 도출한다.
  4. attention output과 decoder hidden state를 concatenate하여 최종적으로 해당 스텝의 word를 생성해낸다. 

 

이를 수식으로 표현하면 아래와 같다.(transformer 슬라이드 24)

Attention is great! 어텐션은 기존에 RNN이 가지고 있었던 문제 2가지를 해결한다.(Linear interaction distance, Lack of parallelizability)

  • improve NMT(Neural Machine Translation) performance
  • more human-like model
  • 병목현상 해결: source sentence의 모든 임베딩을 참조하는 구조이다. 인코더와 디코더 사이에 직접적인 연결이 있다.
  • vanishing gradient 문제 해결: 인코더와 디코더의 connection이 short cut의 역할을 한다
  • some interpretability 해석 가능성을 제공한다.

 


다 블로깅을 하지 못해서 아래 링크를 첨부합니다. 이해하는 데에 엄청 도움이 됐던 유튜브 강의입니다!

https://www.youtube.com/watch?v=h5-WaqU03qg

 

반응형
LIST