코딩 및 기타

attention이란

정지홍 2026. 1. 2. 14:08

1) 어텐션이란

“지금 이 토큰이, 문장(또는 이미지) 안의 다른 위치들 중 ‘누구를 얼마나 참고할지’를 정해서, 참고한 만큼 정보를 섞어 새 표현을 만드는 방식”이다.

핵심은 두 가지이다:

  1. 참고 비율(가중치)을 계산하고
  2. 그 비율대로 정보를 섞어서 업데이트한다

2) 왜 이런 게 필요한가?

언어를 이해할 때 우리는 항상 “참조”를 한다.

  • “철수가 영희에게 사과를 줬다. 그녀는 기뻤다.”
    → ‘그녀’는 영희를 봐야 함.
  • “나는 어제 산 책을 오늘 읽었다.”
    → “어제”는 시간 정보, “책”은 대상 정보. 어디를 봐야 할지가 다름.
  • “not … because …” 같은 구조에서는 멀리 떨어진 단어끼리도 강하게 연결됨.

어텐션은 이 “참조”를 모든 위치 쌍에 대해 동시에 가능하게 만든다.


3) Self-Attention은 “토큰들이 서로 대화하는 회의”

문장을 토큰(단어 조각)들의 모임이라고 해보자.

Self-Attention은 매 레이어마다 이런 회의를 연다고 보면 된다.

  • 각 토큰이 “나 지금 뭐가 필요해”라고 말하고(Q)
  • 다른 토큰들은 “나 이런 정보 가지고 있어”라고 명함을 내고(K)
  • 실제로 전달되는 내용은 “내가 가진 정보 본체”로 전달된다(V)

그리고 각 토큰은 회의에서

  • 누구 말이 중요했는지(가중치) 정하고
  • 그 사람들 말(정보)을 적당히 섞어서
  • 자기 상태(표현)를 업데이트한다.

즉, 토큰 표현이 “혼자” 의미를 가지는 게 아니라, 맥락 속에서 다시 재작성되는 과정이 Self-Attention.


4) Q, K, V를 “도서관”으로 비유해본다

어텐션을 도서관 검색으로 보면:

  • Query(Q): 내가 찾는 질문(예: “it가 누구지?”)
  • Key(K): 각 책(토큰)의 색인/태그(예: “animal”, “street”, “tired”)
  • Value(V): 책 내용(실제 정보)

과정은:

  1. 내가 질문(Q)을 던짐
  2. 모든 책의 색인(K)과 “얼마나 맞는지”를 점수로 매김
  3. 점수를 확률처럼 바꿔서(=중요도 비율)
  4. 그 비율만큼 책 내용(V)을 섞어서 “요약본”을 만든다
  5. 그 요약본으로 내 이해(현재 토큰 표현)를 업데이트

중요 포인트:
K는 “찾기 위한 기준”, V는 “가져올 실제 내용”이라서 분리된다.
이게 어텐션이 유연해지는 핵심이다.
(같은 토큰이라도 “찾는 기준”과 “전달하는 정보”는 다르게 학습될 수 있음)


5) 어텐션 가중치(누구를 얼마나 볼지)는 “소프트한 집중”

어텐션은 보통 “딱 한 곳만 본다”가 아니라

  • 대부분은 조금씩 보되
  • 중요한 몇 곳에 더 많이 집중한다

그래서 “하드한 선택”이 아니라 가중치로 섞는 소프트한 선택이 된다.

이게 좋은 이유:

  • 미분 가능(학습이 쉬움)
  • 애매한 경우도 분산해서 참고 가능
  • 여러 단서들을 동시에 조합 가능

6) Self-Attention이 토큰을 어떻게 “맥락화(contextualize)”하나

단어는 맥락에 따라 의미가 바뀌나?

  • “bank” = 강둑 / 은행
  • “apple” = 과일 / 회사

Self-Attention은 “bank” 토큰이 주변 토큰(“money”, “river” 등)을 참고해서

  • 강둑 의미 쪽 특징을 더 섞거나
  • 은행 의미 쪽 특징을 더 섞어서

같은 표면 형태라도, 문맥에 맞는 표현으로 ‘재인코딩’해버린다.

즉, “임베딩(단어 고정 벡터)”이 아니라
레이어를 거치며 문맥 기반 표현으로 나타내는것.


7) Multi-Head는 “한 사람이 아니라 여러 전문가가 동시에 읽는 것”

사람이 글을 읽을 때도:

  • 문법 관계를 보는 시선
  • 의미 유사성을 보는 시선
  • 지시어/대명사 연결을 보는 시선
  • 문장 구조를 보는 시선
    이런 게 동시에 돌아가.

멀티헤드는 그걸 흉내를 낸다.

  • 헤드 1: 주어-동사 같은 문법 연결 잘 보는 “문법 전문가”
  • 헤드 2: 같은 주제 단어끼리 묶는 “의미 전문가”
  • 헤드 3: 대명사/지시어 연결 보는 “지시 관계 전문가”

각 헤드는 “누구를 볼지”를 서로 다르게 학습하고,
마지막에 결과를 합쳐서 더 풍부한 업데이트를 만든다.

핵심 효과:
한 가지 기준으로만 섞으면 놓치는 관계가 생기는데,
여러 기준을 병렬로 돌려서 관계를 분업한다.


8) 마스크(mask)는 “규칙상 보면 안 되는 건 가림막”

어텐션은 기본적으로 “모든 위치를 볼 수” 있다.
하지만 상황에 따라 규칙이 필요하다.

(1) 패딩 마스크

배치 때문에 들어간 빈 토큰(패딩)은 의미가 없으니
절대 참고하지 않게 가린다.

(2) 미래 가리기(캐주얼 마스크)

언어 모델은 “다음 토큰”을 예측해야 하는데
미래 단어를 보면 정답을 미리 본 것이다. 따라서...
→ i번째 토큰이 i+1, i+2 …를 보지 못하게 막는다.

이게 GPT류에서 “자기회귀(autoreg)”가 성립하는 장치이다.


9) 포지션(순서) 정보가 왜 필요한가?

Self-Attention만 있으면 토큰들은 “순서 없는 모음”처럼 보일 수 있다.

  • “개가 사람을 물었다” vs “사람이 개를 물었다”
    토큰 구성은 거의 같은데 의미는 완전히 다르다.

그래서 모델은 토큰에 위치 정보를 같이 줘서:

  • “이 단어는 3번째다”
  • “저 단어는 7번째다”
  • “둘 사이는 4칸 떨어져 있다”
    같은 정보를 표현에 포함시킨다.

그래야 어텐션이

  • “가까운 단어는 더 자주 함께 묶인다”
  • “특정 거리 패턴(예: 수식어-피수식어)을 학습한다”
    같은 걸 할 수 있다.

10) 레이어를 여러 번 쌓는 이유: “한 번의 회의로는 부족”

한 층의 어텐션은 대략 이런 일을 한다.

  • “현재 기준으로 중요한 곳에서 정보 가져온다”

그런데 진짜 언어 이해는 단계가 필요하다.

  • 1층: 대충 의미 비슷한 단어 연결
  • 2층: 구문 구조, 역할(주어/목적어) 조합
  • 3층: 장거리 의존, 지시어 해결
  • 4층: 문장 전체 의미 요약…

그래서 어텐션 블록을 층층이 쌓아
단순한 연결 → 복합적인 의미 구조로 올라가게 만드는 것.


11) “어텐션은 왜 잘 학습되나?” (개념적 학습 직관)

모델은 학습 중에 계속 이런 피드백을 받는다

  • “정답을 맞추려면, 지금 이 토큰은 저 토큰 정보를 더 봐야 했네”
  • “이 헤드는 문법 연결을 잡는 게 유리하네”
  • “이 상황에선 가까운 토큰보다 멀리 있는 원인절을 봐야 했네”

그 결과:

  • Q/K 변환이 “어떤 걸 관련성으로 볼지”를 배우고
  • V 변환이 “가져올 유용한 내용이 뭔지”를 배우면서
  • 가중치가 점점 ‘그럴듯한 참조’로 정교해진다

즉, 어텐션 자체를 사람이 규칙으로 지정하는 게 아니라
정답을 맞추는 과정에서 관련성 기준이 자동으로 발달하는 구조이다.


12) 마지막으로: 어텐션이 “그냥 참고표”가 아니라 “새 표현 생성기”라는 점

많이들 “어텐션 = 어디를 봤는지 표시하는 히트맵” 정도로 생각하는데,
더 중요한 건 아래이다

어텐션은 “보는 것”이 아니라
보고 섞어서 ‘새로운 표현’을 만든다.

즉, 토큰 벡터 자체가 바뀌고,
그 바뀐 벡터가 다음 레이어에서 또 다른 관계를 만들며,
결국 모델의 추론 능력이 생긴다.