스탠퍼드 CS229 2026年春 강의 14: 트랜스포머와 인-컨텍스트 학습
TL;DR
이 강의에서는 대형 언어 모델이 텍스트를 토큰으로 변환하고, 트랜스포머를 사용하여 토큰 시퀀스를 자기회귀 방식으로 모델링하며, 우도를 최대화하여 훈련하고, 온도 스케일링과 top‑k 샘플링과 같은 기법을 사용하여 텍스트를 생성하는 방법을 설명하며, 자기어텐션이 시퀀스 길이에 대해 2차적으로 증가한다는 점을 언급합니다.
토큰화
토큰화는 원시 텍스트를 트랜스포머가 처리할 수 있는 정수 ID 시퀀스로 변환합니다. 강사는 토큰화를 가장 작은 입력 단위를 선택하는 과정이라고 설명하며, 순수 문자 또는 단어 토큰화는 비효율적이라고 지적합니다. 서브워드 토큰화(예: 바이트-페어 인코딩)는 단어를 재사용 가능한 조각으로 분할하여, "internationalize"와 "internationalization"과 같은 관련 단어에 대한 이해를 모델이 공유할 수 있게 합니다. 결과 어휘는 사전 정의된 서브워드 목록이며, 각 토큰에는 ID가 부여됩니다. 강사는 Qin 3.5와 같은 오픈소스 모델이 어휘에 약 250개의 토큰을 가지고 있다고 언급합니다(강사의 발언에 따름). 또한, Cloud Code에서 사용되는 것과 같은 일부 독점 토크나이저가 더 세분화되어, 동일한 텍스트에 대한 토큰 수가 약 1,000개에서 1,500개로 증가했다고 말합니다.
자기회귀 확률 모델
언어 모델은 체인 규칙을 사용하여 토큰 시퀀스에 대한 확률 분포를 정의합니다: p(x₁…x_T) = ∏ₜ p(x_t | x₁…x_{t‑1}). 각 조건부 분포는 어휘에 대한 로짓 벡터를 출력하는 신경망으로 모델링되며, 이는 소프트맥스를 통해 확률로 변환됩니다. 공동 분포를 직접 모델링하려면 V^T}가 필요하여 계산 불가능하므로, 자기회귀 분해는 각 단계에서 V에 대한 소프트맥스로 줄여 관리가 가능하게 합니다.
트랜스포머 아키텍처
트랜스포머는 preceding 토큰에만 의존하는 토큰 t의 시퀀스를 계산하며, 모델은 인과적(자기회귀)입니다. 훈련 중, 손실은 관측된 시퀀스의 음의 로그 우도로, −log softmax(f_θ(x₀…x_{t‑1}))[x_t]의 합으로 계산됩니다. 생성 시, 모델은 이러한 조건부 분포에서 토큰을 하나씩 샘플링하며, 온도 스케일링은 분포를 날카롭게 하거나 부드럽게 만들고, top‑k 샘플링은 고려 대상을 k개 가장 확률이 높은 토큰으로 제한합니다.
어텐션 메커니즘
단일 헤드 어텐션 레이어는 토큰 임베딩(벡터 시퀀스)을 입력으로 받아 새로운 벡터 시퀀스를 출력합니다. 각 위치 t에 대해, 쿼리 Q_t = h_t W_Q, 키 K_t = h_t W_K, 값 V_t = h_t W_V(모든 행 벡터)를 계산합니다. 어텐션 점수는 모든 소스 위치 s에 대한 내적 Q_t·K_sᵀ이며, 스케일링하고 소프트맥스를 통과시켜 가중치 α_{t,s}를 얻습니다. 위치 t에서의 출력은 가중 합 ∑s α{t,s} V_s입니다. 인과성을 강제하기 위해, 소프트맥스 전에 미래 위치 점수를 −∞로 마스킹하여, s>t인 경우 α_{t,s}=0이 되도록 합니다.
멀티-헤드 어텐션 및 마스킹
여러 어텐션 헤드가 병렬로 작동하며, 각각 자체 투영 행렬(W_Q, W_K, W_V)을 가집니다. 이들의 출력은 연결되고 선형 투영되어 최종 레이어 출력을 생성합니다. 강사는 헤드 수가 모델 크기에 따라 보통 십에서 백 단위라고 언급합니다. 마스킹은 각 헤드 내에서 적용되어 자기회귀 속성을 보존합니다: 소프트맥스 전에 미래 토큰에 해당하는 점수는 −∞로 대체되며, 소프트맥스 후에는 0이 되어 모델이 미래 토큰에 주목하는 것을 방지합니다.
MLP 및 잔차 연결
각 어텐션 레이어 이후, 각 위치의 벡터는 두 개의 선형 층과 비선형성(예: GeLU)으로 구성된 다층 퍼셉트론(MLP)을 통과합니다. MLP는 모든 위치에서 독립적으로 동일하게 적용됩니다. 잔차 연결은 레이어의 입력을 출력에 더한 다음 레이어 정규화를 수행합니다(강사는 사전 정규화 또는 사후 정규화 변형을 언급합니다). 이 패턴—어텐션 → add & norm → MLP → add & norm—은 여러 트랜스포머 레이어에 걸쳐 반복됩니다.
훈련 및 생성
훈련은 모든 시간 단계에 대한 음의 로그 우도를 합산하여 최소화하며, SGD 또는 Adam과 같은 최적화기(블랙박스 최적화기로 언급)를 사용합니다. 생성은 문장 시작 토큰(또는 주어진 프롬프트)에서 시작하여, 소프트맥스 분포에서 다음 토큰을 반복적으로 샘플링합니다. 온도 t는 소프트맥스 전에 로짓을 스케일링합니다: t<1이면 분포가 날카로워져(높은 확률 토큰 선호), t>1이면 분포가 부드러워져(다양성 증가). top‑k 샘플링은 가장 큰 k개의 로짓만 유지하고, 재정규화한 후 해당 부분에서 샘플링합니다.
계산 효율성
강사는 나은 구현이 아닌 자기어텐션이 모든 쌍 내적 계산을 필요로 하여 O(T²·d_h)의 시간과 메모리가 발생한다고 강조합니다. 여기서 T는 시퀀스 길이이고 d_h는 헤드 차원입니다. 이 2차 의존성은 긴 컨텍스트(예: 수백만 토큰)에 대해 금지될 정도가 됩니다. 플래시 어텐션과 같은 기법은 어텐션 행렬의 일부를 실시간으로 재계산하여 메모리 사용량을 줄이는 것을 목표로 합니다. 강사는 대체 어텐션 변형이 T에 대한 의존성을 개선할 수 있지만 표현력의 트레이드오프가 있을 수 있다고 언급합니다.
Based solely on the provided transcript; no external facts were added.