모델이 입력 데이터의 모든 부분을 동일하게 처리하지 않고, 특정 부분에 더 집중할 수 있도록 하는 방법
주어진 입력 시퀀스에서 중요한 정보에 "집중"하게 함으로써, 문맥 내에서 각 단어의 상대적 중요도를 학습한다.
기존의 RNN, LSTM 등의 순차 모델들은 입력 시퀀스의 길이가 길어질수록 중요한 정보의 전달이 어려워지는 문제를 겪었는데, 이 문제를 해결하기 위해Attention은 입력 시퀀스의 모든 단어(토큰)에 대해 각 단어가 얼마나 중요한지 계산하고,중요한 단어에 더 많은 가중치를 부여하여문맥을 더 잘 파악할 수 있도록 돕는 역할을 한다.
Attention 메커니즘의 주요 파라미터 (입력 데이터에서 각 단어를 벡터화한 결과)
Query(Q): 현재 처리 중인 단어가 "어떤 단어와 연관될지"에 대한 질문.
Key(K): 각 단어의 "특성"을 나타내는 벡터로, Query가 무엇과 연관되는지를 결정하기 위한 정보.
Value(V): 실제로 출력할 "값"으로, Key와 연관된 정보.
작동 원리
Query와 Key 간 유사도 계산:
Query 벡터와 Key 벡터 간의 유사도를 계산합니다. 이 유사도는 주로 두 벡터의 dot product를 통해 구한다.
이 유사도는 각 단어가 현재 Query와 얼마나 관련이 있는지를 나타내며, 이를 통해 어떤 단어가 더 중요한지 알 수 있다.
소프트맥스(Softmax)로 가중치 정규화:
계산된 유사도를 소프트맥스 함수에 통과시켜 가중치로 변환한다. (소프트맥스 함수를 통과한 결과, 모든 단어에 대한 가중치가 0에서 1 사이의 값으로 변환되고, 그 합이 1이 된다.)
가중치가 클수록 해당 단어가 더 중요한 것으로 간주된다.
가중치 합산:
계산된 가중치를 각 단어의 Value 벡터에 곱한 후, 이들을 모두 더해 최종 출력을 계산한다.
즉, 각 단어의 중요도에 따라 값이 가중합되어 새로운 표현이 만들어집니다.
Attention 메커니즘의 수식
Q: Query 벡터
K: Key 벡터
V: Value 벡터
dk: Key 벡터의 차원 수 (정규화를 위해 사용)
softmax: 계산된 값들을 확률로 변환하는 함수
QK : dot product를 통한 유사도 측정
sqrt(dk) : 값이 너무 커지는걸 방지하기 위해 나눠줌
softmax()V : 소프트맥스를 통해 정규화된 가중치를 각 Value 벡터에 곱해 최종 결과를 산출
💡 피드포워드 신경망 어텐션을 통해 입력 간의 상호작용을 학습한 후, 피드포워드 네트워크는 각 위치에서의 어텐션 결과를 비선형적으로 변환하여 더 복잡한 표현을 학습할 수 있도록 한다.
LLM의 한계 및 완화 방법
한계
오로지 훈련 데이터에 의존하기 때문에 최근의 실세계 정보를 제공하기 어렵다.
이전 대화와 일관된 유용한 응답을 위해 필요한 보충적인 세부 정보와 같은 관련 맥악을 통합하는 데 어려움이 있다.
특정 주제에 대한 지식이 부족해서 제대로 알지 못하는 경우 부정확하거나 비논리적인 콘텐츠를 생성할 수 있다.
완화 방법
검색증강 (Retrieval Augumentation) : 지식 베이스에 접근해 LLM의 오래된 훈련 데이터를 보완하며 외부 컨텍스트를 제공하고 환각의 위험을 줄인다.
체이닝 (chaining) : 검색과 계산과 같은 다양한 동작을 순차적으로 또는 단계적으로 연결하여 하나의 작업 흐름으로 통합한다. (*NLP에서 체이닝 이란, 텍스트 데이터를 검색한 후 해당 텍스트에 대한 계산(예: 단어 빈도 계산, 의미 분석 등)을 하는 파이프라인을 하나의 흐름으로 만드는 것을 말한다.)
프롬프트 공학 : 주요 컨텍스트를 제공해 적절한 응답을 안내하는 프롬프트를 신중하게 만든다.
모니터링, 필터링, 리뷰 : 입/출력에 관한 신규 문제를 지속적이고 효과적으로 감시해 문제를 감지한다.
메모리 : 대화 데이터와 컨텍스트를 꾸준히 유지해 상호 작용 사이에서 대화 문맥을 유지한다.
미세조정 : 애플리케이션 도메인 및 원칙에 더 적절한 데이터로 LLM을 훈련하고 조정한다.
파인튜닝 (Fine-Tuning) : 사전 학습된 모델(Pretrained Model)을 기반으로, 특정한 작업이나 도메인에 맞게 추가 학습을 시킨다.