Ch.01
트랜스포머 1: 셀프 어텐션으로 한 번에 보기
트랜스포머 모델은 단어 간의 관계를 파악하는 셀프 어텐션(Self-Attention), 학습의 안정성을 책임지는 Add & Norm(잔차 연결과 층 정규화), 그리고 파악된 정보를 깊이 있게 가공하는 피드포워드(Feed Forward) 신경망이라는 세 가지 톱니바퀴로 맞물려 돌아갑니다. 과거의 모델들이 단어를 하나씩 순서대로 읽으며 앞내용을 까먹곤 했다면, 트랜스포머는 문장 전체를 조감도처럼 내려다보며 처리합니다. 이 챕터에서는 초보자도 쉽게 이해할 수 있도록 Query, Key, Value를 통한 어텐션 메커니즘부터, 모델이 지치지 않고 깊게 학습하도록 돕는 Add & Norm과 피드포워드의 직관적인 원리까지 친절하게 알아봅니다.
수식 쉽게 이해하기
, , 에서 는 입력 임베딩, 는 학습되는 변환 행렬입니다. 이 단계는 같은 문장을 '질문용 표상', '매칭용 표상', '내용용 표상'으로 나누는 작업입니다.는 토큰 간 관련도 점수 행렬입니다. 점수가 클수록 두 토큰 관계가 강합니다. 하지만 차원이 커질수록 값이 과도하게 커질 수 있어 로 나눠 안정화합니다.는 각 행 합이 1인 확률형 가중치 행렬입니다. 즉 한 토큰이 다른 토큰들을 얼마만큼 참고할지 비율로 표현합니다.는 가중치 로 Value를 섞어 만든 최종 컨텍스트 표현입니다. 핵심은 단순 평균이 아니라 중요도 기반 가중 평균이라는 점입니다.
셀프 어텐션은 각 토큰이 전체 토큰을 참고해 문맥을 재구성하는 연산입니다.
개념 구조: Q/K/V → 점수 → 정규화 → 가중합
약한 참고중간 참고강한 참고
트랜스포머 1: 셀프 어텐션으로 한 번에 보기
1. 셀프 어텐션(Self-Attention): 문맥을 파악하는 눈
셀프 어텐션은 문장 안의 각 단어가 다른 모든 단어를 동시에 바라보고, 지금 단어를 이해하기 위해 '어떤 단어를 얼마나 참고할지' 가중치를 정하는 과정입니다. 비유하자면 도서관에서 책을 찾는 것과 같습니다. 내가 궁금한 검색어(Query)를 들고, 책들의 키워드(Key)를 확인한 뒤, 가장 관련성 높은 책의 실제 내용(Value)을 골라내는 것이죠. 이를 통해 "배를 타고 강을 건너다 배가 아파서 배를 먹었다"라는 문장에서 각각의 '배'가 주변 단어들과 어떻게 연결되는지 한 번에 파악합니다.
2. Add (잔차 연결, Residual Connection): 정보의 고속도로
어텐션을 통과한 정보는 Add 단계를 거칩니다. 수학적으로는 입력값 를 어텐션 결과에 그대로 더해주는 형태입니다. 비유하자면 '우회도로(지름길)'를 뚫어주는 것과 같습니다. 딥러닝은 층이 깊어질수록 원본 데이터의 정보가 희미해지거나 왜곡되기 쉬운데, 원본 데이터를 징검다리처럼 안전하게 다음 층으로 곧바로 넘겨주어 학습의 방향을 잃지 않게(기울기 소실 방지) 도와주는 든든한 안전망 역할을 합니다.
3. Norm (층 정규화, Layer Normalization): 멘탈 관리와 영점 조절
Add를 거친 데이터는 값이 들쭉날쭉해질 수 있습니다. 그래서 Norm 단계를 통해 데이터의 평균을 0, 분산을 1로 맞추어 줍니다. 수식으로는 의 형태를 띱니다. 학교 시험 점수를 과목별로 '표준 편차'를 내어 공평하게 평가하듯, 신경망 안의 숫자 값들이 폭주하거나 죽어버리지 않도록 '영점 조절'을 해주는 과정입니다. 덕분에 모델은 훈련 내내 안정적인 컨디션을 유지합니다.
4. 피드포워드 신경망 (Feed Forward): 개별 심층 면접
어텐션이 '단어와 단어 사이의 관계'를 모아서 섞는 단체 토론이라면, 피드포워드(FFNN)는 각 단어를 따로따로 불러내어 '개별 심층 면접'을 보는 과정입니다. 여기서 각 단어의 벡터는 다른 단어의 눈치를 보지 않고 오직 자기 자신의 의미를 더 깊고 복잡하게 변환()합니다. 이처럼 [어텐션 Add & Norm 피드포워드 Add & Norm]의 흐름이 바로 트랜스포머를 구성하는 하나의 핵심 블록(Encoder Block)입니다.
왜 중요한지
셀프 어텐션의 중요성: 장거리 의존성 완벽 해결
기존의 RNN은 한 줄로 서서 앞사람의 말을 뒷사람에게 전하는 귓속말 게임과 같아 문장이 길어지면 정보를 잊어버렸습니다. 하지만 셀프 어텐션은 모두가 참여하는 단체 채팅방과 같아서, 100번째 단어를 읽을 때도 1번째 단어를 즉시 참고할 수 있습니다. 수십 장의 법률 문서나 긴 고객 상담 로그를 분석할 때 핵심 문맥을 절대 놓치지 않는 이유가 바로 이 때문입니다.
Add & Norm이 중요한 이유: 깊고 거대한 모델의 탄생 비결
ChatGPT처럼 똑똑한 AI를 만들려면 이 블록을 수십~수백 층으로 아주 깊게 쌓아야 합니다. 하지만 층이 깊어질수록 뒤에서 앞으로 오차를 전달하는 '역전파' 과정에서 신호가 끊기는(기울기 소실) 문제가 발생합니다. Add(잔차 연결)가 고속도로를 뚫어주고, Norm(정규화)이 신호의 크기를 안정적으로 유지해주기 때문에, 우리는 100층이 넘는 초거대 AI 모델도 붕괴 없이 안정적으로 학습시킬 수 있게 되었습니다.
피드포워드가 중요한 이유: 차원을 넘나드는 의미의 확장
단어의 관계를 아는 것만으로는 부족합니다. 피드포워드 신경망은 데이터를 더 높은 차원으로 뻥 튀겼다가(확장) 다시 원래 차원으로 줄이는(압축) '모래시계형 구조'를 가집니다. 이 과정을 거치며 데이터 속에 숨겨진 매우 복잡하고 추상적인 규칙(비선형적 특징)들을 추출해 냅니다. 마치 밀가루와 물(관계성)을 반죽기(피드포워드)에 넣고 강하게 치대어 쫄깃한 면발(깊은 의미)을 뽑아내는 것과 같습니다.
실제 머신러닝 적용 사례의 시너지
구글 번역기나 의료 진단 AI는 이 콤보를 활용합니다. 어텐션으로 "발열은 없음"에서 '없음'이 '발열'을 꾸며준다는 관계를 파악하고, 피드포워드로 이 조합이 '건강함' 또는 '음성 판정'이라는 깊은 의학적 의미를 갖도록 가공합니다. 그리고 Add & Norm 덕분에 수천만 건의 의료 문서를 지치지 않고 안정적으로 학습할 수 있는 것입니다.
어떻게 쓰이는지
실무에서의 전체 조립 과정: 밑작업과 컨베이어 벨트
실무에서는 텍스트를 모델에 넣기 전 '전처리'를 반드시 거칩니다. 문장을 단어 조각(토큰)으로 쪼개고 숫자 벡터(임베딩)로 바꾼 뒤, 단어의 순서를 알려주는 위치 인코딩(Positional Encoding)을 더해줍니다. 어텐션 연산 자체는 단어의 순서를 모르는 '집합'처럼 동작하기 때문에, "내가 문장의 몇 번째 단어다"라는 위치 꼬리표를 강제로 달아주는 것입니다. 이렇게 준비된 데이터는 [멀티헤드 어텐션 Add & Norm 피드포워드 Add & Norm]이라는 하나의 거대한 컨베이어 벨트(인코더 블록)를 통과합니다. 이 똑같은 블록을 12번 쌓으면 BERT-Base 모델이 되고, 96번씩 쌓아 올리면 GPT-3 같은 거대 언어 모델이 완성됩니다.
멀티헤드 어텐션의 활약: 전문가 위원회의 분업
한 명의 천재보다 8명의 전문가 위원회가 낫다는 아이디어입니다. 예를 들어 512차원의 데이터가 들어오면, 8개의 헤드(Head)가 이를 64차원씩 쪼개어 각자의 관점으로 분석합니다. 1번 헤드는 '누가 무엇을 했는지' 문법적 구조를, 2번 헤드는 '긍정인지 부정인지' 감정의 뉘앙스를, 3번 헤드는 '사람 이름이나 지명'을 전담하여 추적하는 식입니다. 각 헤드는 공식으로 자신이 맡은 분야의 가중치를 계산합니다. 분석이 끝나면, 8개의 64차원 조각들을 다시 옆으로 길게 이어 붙여() 본래의 512차원으로 복구합니다. 이를 통해 한 번의 연산으로 문장의 다채롭고 입체적인 의미를 파악하게 됩니다.
피드포워드와 활성화 함수의 결합: 현미경 관찰과 핵심 추출
어텐션이 단어와 단어 '사이'의 관계를 파악했다면, 피드포워드(FFNN)는 단어 '하나하나'의 의미를 독립적으로 깊게 파고듭니다. 실무에서는 보통 입력 차원(예: 512)을 4배(예: 2048)로 크게 부풀리는 확장-압축(모래시계) 구조를 사용합니다. 차원을 넓혀 단어의 아주 미세한 특징까지 현미경으로 관찰한 뒤, 나 같은 비선형 활성화 함수를 통과시킵니다. 이때 불필요한 노이즈나 무의미한 정보는 0으로 걸러내고, 정말 중요한 핵심 특징만 남겨 다시 원래의 512차원으로 압축합니다. 수식으로는 로 표현되며, 이 과정을 통해 모델은 단순한 패턴을 넘어 복잡한 개념을 암기하고 이해하게 됩니다.
코드와 프레임워크에서의 활용: 하이퍼파라미터 튜닝
이 모든 복잡한 수학과 행렬 연산은 PyTorch나 TensorFlow 같은 프레임워크에 `nn.TransformerEncoderLayer`라는 단 한 줄의 코드로 예쁘게 포장되어 있습니다. 실무 개발자들은 밑바닥부터 수식을 짜기보다, 레고 블록을 조립하듯 핵심 하이퍼파라미터를 조절하는 데 집중합니다. 단어의 의미를 얼마나 풍성하게 담을지 결정하는 임베딩 차원 크기(), 전문가 위원회를 몇 명으로 구성할지 정하는 헤드 개수(), 현미경으로 얼마나 확대해서 볼지 결정하는 피드포워드 확장 크기()를 조절하며 자신이 개발 중인 AI 서비스와 사용 가능한 GPU 자원에 맞춰 최적의 성능을 끌어냅니다.
요약
트랜스포머와 셀프 어텐션은 “순서대로 한 번 읽고 끝”이 아니라, 문장 안의 모든 단어가 동시에 서로를 바라보며 전체 문맥을 한 번에 파악하도록 설계된 메커니즘입니다. 기존 모델이 릴레이처럼 토큰을 이어가며 정보를 전달한다면, 셀프 어텐션은 단체 채팅방처럼 문장 전체 토큰이 동시에 참고하는 방식으로, 현재 토큰이 무엇을 얼마나 중요하게 봐야 하는지(어느 단어와의 관계가 강한지)를 조감도처럼 계산합니다.
그 핵심 원리는 입니다. 내가 알고 싶은 질문에 해당하는 와, 각 단어가 지닌 특징을 담은 를 비교해 단어 간 궁합을 점수로 만들고(내적 ), 그 점수가 폭주하지 않도록 로 스케일링한 뒤 소프트맥스를 거쳐 중요도 가중치 를 얻습니다. 그리고 가 정한 비율로 실제 정보인 를 섞어 최종 문맥 표현(컨텍스트)을 만들어, 문장의 앞과 뒤 사이에 긴 거리가 있어도 에 가까운 짧은 경로로 관계를 직접 이어 줍니다.
이렇게 얻은 관계 정보는 멀티헤드 어텐션에서 더 입체적으로 확장됩니다. 문법, 감정, 고유명사처럼 서로 다른 관점의 “전문가”를 여러 헤드로 나눠 병렬로 분석한 다음, 결과를 으로 합쳐 의미를 풍부하게 만들고, 이후 Add & Norm(잔차 연결과 정규화)으로 정보가 사라지지 않게 안정적으로 다음 단계로 넘기며, 피드포워드(FFNN)가 각 토큰의 표현을 더 깊고 복잡한 형태로 변환해 BERT·GPT 같은 거대한 모델의 기반을 완성합니다.
문제 풀이를 위한 설명
정리 — 셀프 어텐션은 문장 내 모든 단어가 서로를 동시에 참고해 문맥을 파악하는 메커니즘입니다. 질의(Q), 키(K), 값(V)을 사용하여 단어 간의 연관성인 를 계산하고, 이를 통해 의 짧은 경로로 장거리 의존성을 해결합니다. 실무에서는 여러 관점에서 텍스트를 분석하기 위해 여러 개의 어텐션을 병렬로 사용하는 멀티헤드 어텐션(Multi-Head Attention)을 기본으로 활용합니다.
- 유형셀프 어텐션의 3요소
- 풀이·예시 (키워드 → 정답)Query(질의), Key(키), Value(값) 행렬. → 개념 선택 시 Q, K, V
- 유형스케일드 닷프로덕트
- 풀이·예시 (키워드 → 정답)어텐션 점수를 로 나누어 스케일링. → 값의 폭주 방지
- 유형경로 길이 (RNN vs 어텐션)
- 풀이·예시 (키워드 → 정답)RNN은 , 셀프 어텐션은 . → 장거리 의존성 문제 해결
- 유형멀티헤드 어텐션
- 풀이·예시 (키워드 → 정답)여러 개의 어텐션 헤드를 병렬로 사용하여 다양한 문맥 특징(문법, 의미 등) 학습. → 풍부한 표현력
- 유형어텐션 행렬 의 의미
- 풀이·예시 (키워드 → 정답)를 거쳐 합이 1이 되는 확률 가중치. → 특정 단어에 집중하는 정도
- 유형Q, K, V 생성 방식
- 풀이·예시 (키워드 → 정답)입력 에 가중치 를 곱해 생성.
| 유형 | 풀이·예시 (키워드 → 정답) |
|---|---|
| 셀프 어텐션의 3요소 | Query(질의), Key(키), Value(값) 행렬. → 개념 선택 시 Q, K, V |
| 스케일드 닷프로덕트 | 어텐션 점수를 로 나누어 스케일링. → 값의 폭주 방지 |
| 경로 길이 (RNN vs 어텐션) | RNN은 , 셀프 어텐션은 . → 장거리 의존성 문제 해결 |
| 멀티헤드 어텐션 | 여러 개의 어텐션 헤드를 병렬로 사용하여 다양한 문맥 특징(문법, 의미 등) 학습. → 풍부한 표현력 |
| 어텐션 행렬 의 의미 | 를 거쳐 합이 1이 되는 확률 가중치. → 특정 단어에 집중하는 정도 |
| Q, K, V 생성 방식 | 입력 에 가중치 를 곱해 생성. |
예시 (개념 이해 문제)
"셀프 어텐션에서 Query(Q)와 Key(K)의 닷프로덕트()가 의미하는 것은 무엇인가?
① 단어의 길이
② 단어 간의 연관성(유사도)
③ 문장의 위치 정보"
Query와 Key의 내적은 두 단어가 문맥적으로 얼마나 관련이 있는지를 나타내는 점수입니다. → 정답 2
예시 (O/X 문제)
"소프트맥스 이후 한 토큰의 어텐션 가중치 합은 보통 1이다. 맞으면 1, 틀리면 0."
softmax는 확률을 만들기 때문에 합이 1이 됩니다. → 정답 1
예시 (시나리오 기반 문제)
"긴 고객 상담 로그에서 앞부분 부정 표현이 뒤 문장을 뒤집을 때 유리한 모델 요소는?
① 셀프 어텐션
② 평균풀링만
③ 단순 규칙기반"
앞의 부정 표현과 뒤 문장의 관계를 멀리까지 직접 참고해야 하므로 셀프 어텐션이 적절합니다. → 정답 1
예시 (투표 결과 계산 문제)
"헤드 투표가 [1,1,0,1,0]일 때 1의 개수는?"
입니다. → 정답 3
예시 (모델 예측 집계 문제)
"세 헤드의 클래스1 예측 개수가 [2,1,2]일 때 총합은?"
입니다. → 정답 5
예시 (모델 구성 계산 문제)
"헤드 수 8, 헤드 차원 8일 때 모델 차원 은?"
입니다. → 정답 64
예시 (앙상블 원리 이해 문제)
"멀티헤드 결합의 핵심 이점은?
① 서로 다른 관계를 여러 관점에서 나눠 학습해 일반화가 좋아진다
② 파라미터가 0이 된다
③ 계산량이 항상 0이다"
여러 관점을 결합해 오류를 줄이고 일반화 성능을 높인다는 점이 핵심입니다. → 정답 1