- 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
- 등등.ㄱ
- Type
각각에 대해 궁금하면 나중에 좀더 자세히 설명하도록 하겠습니당~
'AI' 카테고리의 다른 글
Stable Diffusion + Controlnet 을 통한 Logo 이미지 생성 (1) | 2024.04.19 |
---|---|
Stable Diffusion의 기본적인 이해와 설치! (1) | 2024.04.12 |
AutoEncoder란? (0) | 2024.01.16 |