ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Simplified version of attention 설명
    ML/DeepLearning 2025. 2. 4. 17:46

    출처: Build a large language model from scratch, chapter 3 : coding attention mechanism

     

    # 3.0 3장에서 다룰 구조

    - 아래 메커니즘을 해당 챕터에서 다룸


    # 3.1 attention의 등장배경
    - encoder, decoder개념의 등장 배경

    1) 아래 번역해야할 문장이 있다고 하자. 직독직해하면 문제가 생기므로, 각 언어의 어순을 고려해서 해석해줘야한다. 



    2) 이를 위해서 encoder, decoder개념이 등장했고 이를 활용한 것이 RNN이다. RNN의 상세 로직을 알필요는 없으며, endoer decoder setup에 대해서만 알면 된다. 



    - encoder, decoder 로직:   encoder, decoder내부에서 각 hidden state가 update된다. Encoder에서는 각 단어 별로 각 스템에서 hidden state를 업데이트하며, 마지막 hidden state에서 전체 문장의 의미를 담으로고 한다. decoder의 경우에 이 encoder의 마지막  hidden state의 내용을 기반으로 다음 단어를 예측해서 뱉으려고 한다. 

    - 한계: decoding할때 encoder의 이전 hidden state에 직접적으로 접근할 수 없다. 긴 문장의 경우 loss of context가 발생하게 된다. 


    # 3.2 attention 알고리즘의 등장

    - Bahdananu attention 의 등장 : encoder에서의 정보를 참조할 수 있게 되었음.



    - 참고 : Neural Machine Translation by Jointly Learning to Align and Translate(2014) 
    vs. Attention is All You Need (2017)

    RNN기반 모델에서 어텐션 알고리즘 처음으로 사용
    vs. RNN을 사용하지 않음, self attention, multi head attention으로 RNN, LSTM을 대체할 만한 Transformer모델 소개,



    # 3.3. self attention 구현 (w/o trainable weights)
    - "self"의 의미 : 기존 attention은 input sequence와 output sequence의 관계에 집중했다면 self attention 에서는 single input squence내에 different position끼리의 relationship에 주목




    - self attention의 목적: Embedding vector를  context vector로 치환. 그런데 input sequence내에 다른 단어를 참조한

    예 ) Your journey starts with one step이라는 문장에서 journey의 embedding vector(0.5,0.8,0.6) 을 더 문맥이 풍부하게 담긴 context vector로 변환하고 싶음. 

    아래의 과정을 거침.




    - 먼저 journey에 대해서 적용해보면 아래와 같음



    1) Context vector : weighted embedding vector를 만들고 싶음.  weight는 attention weight을 사용하는데, 여기서는 weight 을 최적화시키지 않은 simple attention부터 다룬다.


    2) attention score를 어떻게 구하는가? Input sequence의 정보를 사용하기 위해서, 자기 자신과의 내적을 통해 계산함. 내적을 사용하여 similiary 계산.


    3) attention weight는 무엇인가? Attention score 를 normalization 한 것. Soft max funciton을 사용함.
    0~1사이의 값으로 만들어주고, sum이 1이며, positive 한 값이어서 가중치 의미를 잘 반영한다는 장점이 있음.

    ## 3.3.2 문장의 단어별로 확장시키면 아래와 같음.





    정리하자면, 문장 내 다른 단어와 자기자신을 내적해서 attention score를 구하게 되고, 이 attention score를 input embedded vector에 weight적용하면 context vector가 됨.
    뒤에 이어지는 부분은  attention score부분을 좀더 정밀하게 구할 수 있게 trainable weight을 사용하는 부분임.

     

    - self attention with trainable weight : QK^TV -> XX^TX fancy 한걸로 weight써서 바꾸는거
    - causal attetnion : 학습을 위한 장치. attention weight matrix를 우삼각 부분을 마스킹 처리함. 그 이유는 다음껄 예측하기 위해서는 정답지라서 삭제 
      - dropout : Overfitting방지 
      - multi- head attention: 왜 좋냐면 , 각 attention마다 포커스 하는게 다를 수 있어서. 

    'ML > DeepLearning' 카테고리의 다른 글

    train과 valid에서 모니터링할 metric  (0) 2025.04.07
    mixed precision  (0) 2025.04.07
    cpu , 메모리, gpu  (0) 2025.04.03
    GNN  (0) 2023.03.10
    wide and deep learning  (0) 2022.11.10

    댓글

Designed by Tistory.