Transformer Attention이란?

2023. 12. 14. 22:15·AI

  • Attention is all you need로 발표된 논문
    • 기존의 자연어 처리에서 RNN, LSTM, GRU 방식등을 사용하지 않고 Attention이란 개념만을 사용한 것이다
  •  Translation을 예시로 들면
  • How was your day -> Comment se passe ta journee 로 번역을 시도할때
    • 기존의 문제점 ->  Encoder-Decoder 아키텍쳐의 경우에 Decoder에 들어가는 input이 번역하기전 단어들 ,즉 How was your day의 Encoding을 거친 Context vector를 모두 거쳐 "마지막" hidden state만 Decoder의 input으로 들어가는 문제점이 있다. 이게 왜 문제점이냐 하면은  순서대로 가정했을때 How-> comment , How was -> se , How ,was your -> passes 이런식으로 output이 나오게되는데 어순이 다를경우 순서대로 존재하지 않고 원하는 결과의 초점을 맞추기가 어려웠다
    • 즉 각 단어사의의 연관성을 잘 파악하지 못했는데 이걸 Attention 방식을 적용해 해결
  • 그림에서 볼수 있듯이 각 단어는 병렬로 입력으로 들어가게 되고 각 단어가 input으로 들어갈시 Text Vector에 포함된 모든 단어에 대해 각 연관성을 가지는 Matrix를 가지게 되고 가장 의미가 높은것, 낮은것으로 구분 할수 있는 attention matrix를

Attention Workflow

1.기존의 Workflow

  • 각 단어들이 단어마다 Encoder의 hidden state를 output으로 가지게 되면서 hidden score를 계속 순환하게 된다
    • 문제점 : hidden state가 layer를 지나면서 점점 이전의 정보를 잃게 되는 gradient descent 문제점이 발생

2. 개선된 Worflow

  • Alignment score를 계산하기
  • 동작 방식
    • 그림에서 보이는 W-Decoder는 Linear layer 부분으로 , DNN, CNN 등 NN등으로 무엇이든지 된다
    • Decoder의 Hidden State와 Encoder의 Hidden state를 우선 NN을 지나 Input과 같은 형태의 Output를 뽑아낸다.

  • 위에서 NN을 거쳐나온 Matrix 2개의 Weight를 tanh활성화 함수를 통해 하나의 Matrix으로 나타낸다.
  • 각 Encoding 된 출력에 대한 score를 보유하는 최종 정렬 점수 벡터를 얻을수있다.
  • 이제 각 aligment score 행렬에서 Softmax를 취해 실제로 중요한 것(attention할것)과 중요하지 않은 것을 판단할수 있다.
    • softmax는 주로 classification에서 많이 사용하는 활성화함수인데 각 value들을 모두 합한것이 1이 되는 vector로 표현해준다. 
    • 따라서 출력이 0에 가까울수록 낮은 attentio weight를 가지게 된다.
  • 다음으로 encoder의 output에 각 score가 곱해진후 context vector를 가지면서 각 output에 대한 중요성을 확인할수 있게 되는 것이다.
  • 여기서는 Attention이라는 개념을 살펴봤는데 Attention에도 다양한 개념들이있다.
    • Type
      • Generatilized attetnio
      • Self attention
      • Multihead attention
      • 등등.ㄱ

 

각각에 대해 궁금하면 나중에 좀더 자세히 설명하도록 하겠습니당~

 

 

'AI' 카테고리의 다른 글

Stable Diffusion + Controlnet 을 통한 Logo 이미지 생성  (1) 2024.04.19
Stable Diffusion의 기본적인 이해와 설치!  (1) 2024.04.12
AutoEncoder란?  (0) 2024.01.16
'AI' 카테고리의 다른 글
  • Stable Diffusion + Controlnet 을 통한 Logo 이미지 생성
  • Stable Diffusion의 기본적인 이해와 설치!
  • AutoEncoder란?
kiru98
kiru98
다양한 것들을 보고 직접 경험하는것을 중요시 합니다
  • kiru98
    기르기르
    kiru98
  • 전체
    오늘
    어제
    • 분류 전체보기 (30)
      • AI (4)
      • Project (1)
      • MLOps (1)
      • 데이터사이언스 (2)
      • Github (1)
      • Server (17)
      • 알고리즘 (0)
      • DB (4)
      • Golang (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    GAN
    I2I
    eventpublisher
    Prometheus
    docker compose
    redis stream
    MLOps
    db
    spring boot
    PYTHON
    K6
    redis
    spring
    Docker
    java
    springboot
    Grafana
    이미지생성
    StableDiffusion
    AI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kiru98
Transformer Attention이란?
상단으로

티스토리툴바