본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작

강의 종료

강의장

학습 인증샷

학습후기
ch03-17. Transformer
등장 배경
RNN / LSTM : 긴 문장을 기억하지 못함
CNN : 국소적인 관계는 잘 학습하지만 문맥을 학습하지 못함
-> Transformer는 모든 단어를 병렬로 동시에 보고 각 단어가 다른 단어들과의 관계를 스스로 학습할 수 있게 함.
핵심 구조
[입력 문장] → [인코더 블록] → (중간 표현) → [디코더 블록] → [출력 문장]
Encoder
입력받은 문장을 문맥 정보가 담긴 벡터로 변환
Decoder
인코더의 출력과 현재까지 생성한 단어를 바탕으로 다음 단어 예측
번역 요약 생성등에 사용됨
입력 처리 과정
[토큰] → [임베딩] + [포지셔널 인코딩] → 인코더 입력
Transformer의 장점
병렬 처리
문맥 이해
범용성
구조 단순
이론은 알겠지만 그래서 Transformer가 어떤 의도로 개발되었고 어떻게 작동하는지 아직 모르겠다.
Attention은 왜 사용했지?
-> 기존 RNN은 바로 앞 단어만 보고 한 글자씩 처리하기 때문에 느리고 문맥을 이해 못 했다.
Attention을 통해 모든 단어를 동시에 보고 어떤 단어가 중요한지 학습하게 했다.
Multi-Head Attention은 그냥 Attention이랑 뭐가 다르지?
-> 한 번의 Attention으로는 단면적인 문맥만 학습하는 한계가 있다.
여러 개의 Q, K, V를 만들고 병렬로 Attention을 수행해 다양한 시선으로 문맥을 풍부하게 학습한다
transformer 학습 시나리오 흐름
[입력] → [임베딩 + 위치 정보]
→ [Q, K, V 만들기]
→ [모든 단어와 비교해 attention score 계산]
→ [중요한 단어의 정보를 가중 평균해서 문맥 벡터 생성]
→ [FeedForward로 고차원 의미 변환]
→ [반복하면서 깊은 의미 이해]
Transformer의 학습 과정은 이해했는데 그래서 실제 추론은 어떻게 하는거지?
어떻게 이 구조 하나로 번역, 요약, 대화, 추천을 할수있지?
모델이 문맥을 벡터로 이해한 건 알겠다.
그런데 그 문맥 벡터를 가지고 어떻게 추론하지?
-> 문맥 벡터는 "지금 이 위치에서 어떤 단어가 가장 어울리는가"를 표현한 벡터
이 벡터를 Softmax + 선형 변환을 거쳐서 입력에 대해 가장 적절한 단어를 골라내어 출력한다.
음,,, 아직도 이해를 못 하겠다.
대화의 경우에는 a 질문에 대해 문맥에 맞는 답변을 문맥 벡터를 참조해서 출력한다. 의 경우에는 이해가 되는데
문맥 벡터를 가지고 어떻게 번역을 하는거지?
한국어 문장을 인코딩했다고 치자. 근데 영어 단어는 어디서 나오는 건데? 영어는 입력도 안 했잖아?
Transformer의 공통 구조
[입력 시퀀스] → [문맥 벡터 생성 (via Attention)] → [선형 변환 + Softmax] → [출력 선택 or 생성]
전제: 트랜스포머는 "인코더–디코더" 구조다
구성:
- 인코더: 한국어 문장을 입력받아서 문맥을 요약한 벡터를 만듦
- 디코더: 영어 문장을 하나씩 생성함.
→ 이때 이전에 생성한 영어 단어들과 인코더의 문맥 벡터를 함께 사용함
학습 시 vs 추론 시의 차이
| 학습 시 | 정답 문장(영어)을 미리 알고 있으니까 → 디코더 입력에 같이 넣어줌 |
| 추론 시 | 단어를 하나씩 생성 → 이전 출력만 입력에 넣고, 다음 단어를 예측 |
f(x)=y일때
그러니까 학습시에 x, y를 둘다 input으로 넣으면
Transformer는 Encoder에서 x는 문맥 벡터로 만들고
그 문맥 벡터와 y를 Decoder에 넣어 그 다음에 나올 정답 토큰을 예측하도록 학습한다.
추론할 때
x만 input으로 넣고
Encoder에서 문맥 벡터를 받은 뒤
첫 단어를 생성한다.
그 다음에는 이전에 생성한 단어들을 하나씩 Decoder에 넣으며 다음 단어를 반복해서 예측한다.
Encoder에서 받은 문맥 벡터는 학습시에 만든 문맥 벡터 그대로 사용하는건가?
gpt 질문과 답변
학습할 때 만든 문맥 벡터를 추론할 때 다시 쓰는 건가요,
아니면 추론 때 이어서 학습하거나 업데이트하나요?
➡️ 답은 아주 명확해:
✅ 추론할 때는 학습할 때 만든 문맥 벡터를 쓰지 않고, 새로 만든다.
❌ 추론 도중에는 추가 학습이나 업데이트가 전혀 일어나지 않는다.
??????
✅ 핵심 개념: 트랜스포머의 학습 vs 추론
| 학습(training) | 모델 파라미터(=weight)를 수정하며 지식을 습득하는 과정 |
| 추론(inference) | 학습된 파라미터를 **고정(freeze)**한 상태로 결과만 예측하는 과정 |
따라서:
- 학습 때 문맥 벡터는 단지 파라미터를 업데이트하기 위한 중간 계산 결과
- 추론 때는 **입력 xx**가 들어오면 그걸 기반으로 처음부터 다시 계산
- 그 과정에서 모델은 학습된 weight를 그대로 사용하고,
새로운 문장을 위한 문맥 벡터를 새로 만드는 것
그러면 weight(가중치)는 뭐고 context vector(문맥 벡터)는 뭐지?
가중치 = 기억(지식)
문맥 벡터 = 이해(상황판단)


아하
Transformer도 일종의 딥러닝 모델이고 따라서 여러 층의 뉴런(레이어)으로 구성된 신경망이다.
이 신경망 내부에서 context vector는 ‘중간 계산 결과물’로 사용된다.
모델은 학습된 파라미터(weight)를 기반으로 입력 문장에서 context vector를 실시간으로 생성하고
이 벡터들을 바탕으로 softmax를 통해 최종 출력(단어, 응답 등)을 추론한다.
진짜 마지막 의문
그러면 추론에서 context vector는 어떻게 사용되는거지
context vector는 "지금 이 위치에서 어떤 단어가 가장 어울리는지"를
모델이 판단할 수 있게 해주는 벡터이고,
마지막 출력층에서 softmax를 통해 단어를 선택하는 데 직접 사용된다.
학습에서 context vector를 사용하는 방식과 같구나,,,
'패스트캠퍼스' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 14일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기 (0) | 2025.04.14 |
|---|---|
| 패스트캠퍼스 환급챌린지 13일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기 (0) | 2025.04.13 |
| 패스트캠퍼스 환급챌린지 11일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기 (0) | 2025.04.11 |
| 패스트캠퍼스 환급챌린지 10일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기 (0) | 2025.04.10 |
| 패스트캠퍼스 환급챌린지 9일차 : 30개 프로젝트로 끝내는 추천시스템 구현 초격차 패키지 강의 후기 (0) | 2025.04.09 |