Attention은 입력 데이터 중에서 가장 중요한 정보를 선택적으로 집중하여 학습하는 메커니즘입니다.
기존 RNN, CNN과 다르게 모든 입력을 동시에 고려하며, 유의미한 관계를 학습할 수 있습니다.

Weighted Sum은 Attention에서 핵심적인 개념입니다. 이를 통해 특정 정보에 집중하고, 불필요한 정보를 줄입니다.

쿼리(Query)와 키(Key) 간의 내적(dot product)을 수행하여, 쿼리와 얼마나 연관된 값(Value)인지 측정합니다.
쿼리(Query)와 키(Key)의 내적(dot product)을 통해 유사도를 계산합니다.
그러나 내적 결과는 다음과 같은 문제를 가집니다.
이 문제를 해결하기 위해 softmax 함수를 사용합니다.



Transformer 모델은 CNN이나 RNN과 달리 순차적인 정보 처리를 하지 않는다. 따라서 문장 내에서 단어의 순서 정보를 모델이 인식할 수 있도록 Positional Encoding(위치 인코딩)을 추가해야 한다.
Transformer는 입력 문장을 한 번에 병렬 처리하기 때문에 단어의 위치 정보가 사라짐.
단어의 순서를 모델이 학습할 수 있도록 추가적인 위치 정보(encoding)를 부여해야 함.
입력된 단어 임베딩 벡터에 Positional Encoding 벡터를 더하는 방식으로 적용.
대표적으로 Sine(사인)과 Cosine(코사인) 함수 기반의 위치 인코딩이 사용됨.
Positional Encoding의 각 차원값은 특정 주기의 사인/코사인 함수로 정의됨.

사인/코사인 함수를 사용하여 각 위치마다 고유한 인코딩 값을 생성.
멀리 떨어진 단어와 가까운 단어의 위치 관계를 유지.
인코딩 값끼리 유사한 패턴을 가지므로 내삽(Interpolation) 가능.
Self-Attention은 입력 문장의 각 단어가 문장 내 다른 단어들과 얼마나 관련이 있는지를 계산하는 메커니즘이다.
Transformer의 핵심 아이디어이며, RNN 없이 문맥 정보를 효과적으로 학습하는 데 도움을 준다.
RNN은 순차적으로 정보를 처리하여 병렬 연산이 어렵고 긴 문장에서 기억 손실(장기 의존성 문제)이 발생.
CNN은 지역적인 패턴만 학습하여 멀리 떨어진 단어 간 관계를 인식하기 어려움.
Self-Attention을 사용하면 모든 단어가 서로를 참고하여 문맥을 반영할 수 있음.
Self-Attention은 주어진 입력 벡터
𝑋
X에 대해 Query(Q), Key(K), Value(V) 세 가지 벡터를 생성하여, 단어들 간의 유사도를 계산한 후 새로운 가중치로 값을 변환한다.

Transformer는 Encoder-Decoder 구조를 가지며, 입력 문장을 인코딩한 후 이를 기반으로 출력 문장을 생성한다.
이를 통해 문장 번역, 문장 생성, 요약, 질의응답 등 다양한 NLP 작업을 수행할 수 있다.


1️⃣ 입력 문장 처리
단어를 임베딩(Embedding) 벡터로 변환
Positional Encoding 추가하여 위치 정보 보완
2️⃣ Self-Attention 적용
문장 내에서 각 단어가 다른 단어들과 얼마나 관련 있는지 계산
각 단어의 문맥을 반영한 새로운 벡터 생성
3️⃣ Feed Forward Network (FFN)
비선형 변환을 거쳐 더 깊은 표현 학습
4️⃣ N번 반복 (Multi-Layer Encoder)
여러 개의 Encoder Layer를 쌓아 깊이 있는 표현 학습
1️⃣ 이전까지 예측된 단어를 입력으로 받음
2️⃣ Masked Self-Attention 적용
아직 예측되지 않은 단어는 가려서(Mask) 사용하지 않도록 함
3️⃣ Encoder-Decoder Attention
Encoder의 출력과 함께 Attention을 수행하여 적절한 단어를 예측
4️⃣ FFN 적용 후 단어 예측
Softmax 함수를 사용해 가장 확률이 높은 단어를 선택
Masking은 Transformer에서 예측되지 않은 단어가 예측 과정에 영향을 주지 않도록 차단하는 기법이다.
🔹 Padding Mask (패딩 마스크)
🔹 Look-Ahead Mask (미래 단어 마스킹)
🛑 왜 필요한가?
Transformer는 한 번에 모든 단어를 처리하지만, 번역 등의 작업에서는 단어를 순차적으로 예측해야 하기 때문에 미래 단어를 사용하면 안 됨!
Transformer의 구조에서 Encoder 또는 Decoder를 일부만 사용하여 다양한 모델이 탄생함.
🔹 BERT (Encoder-Only)
🔹 GPT (Decoder-Only)
📌 예제: "나는 사과를 좋아한다." → "I like apples."
1️⃣ Encoder 처리
2️⃣ Decoder 예측 과정
🔥 Look-Ahead Masking이 적용되어 아직 예측되지 않은 단어는 보지 않도록 한다.