- 시퀀스투 시퀀스를 보면 다대일로 인코더를 만들어 하나의 벡터형태로 정보를 압축, 다대일 형태의 디코더를 만들어 순서 데이터인 문장을 생성해냄

- 그러나 이런 형태는 두가지 문제가 있음
- 하나의 고정된 크기의 벡터에 모든 정보를 압축하려하니 필연적으로 정보 loss가 발생함
- RNN의 고질적 문제인 기울기 소실을 피할 수 없음
→ 이를 해결하기 위해 나온 방식이 어텐션
기본 아이디어
- 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서 전체 입력 문장을 다시 한번 참고
- 단, 전체 입력 문장을 전부 다 동일한 비율로 참고하는게 아니라 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분을 좀 더 집중해서 봄
Attention구조, 함수

- 키는 딕셔너리 형태에서 값을 찾을 수 있던 어떤 인덱스라고 생각하면됨
- 밸류는 키값과 연결되어있는 값
- 키 - 밸류 개념이 그대로 적용
$$
Attention(Q, K, V) = Attention Value
$$
- 어텐션 함수는 주어진 쿼리에 대해서 모든 키 각각과의 유사도를 각각 구함
- 그리고 이 구해낸 유사도를 키와 맵핑되어있는 각각의 값에 반영해줌
- 그리고 유사도가 반영된 값(value)를 모두 더해서 리턴함 = 어텐션 값