2장 - 트랜스포머 모델과 기법

🏷️ "cme295" "transformer" "llm" "book"

2장. 트랜스포머 모델과 기법

놀랍게도 2017년에 소개된 이 트랜스포머 아키텍처는 세월이 흘러도 여전히 유효하다. 몇 가지 구성 요소가 약간 변화했을 뿐, 오늘날의 모델들은 거의 대부분 초기 트랜스포머 아키텍처에 기반하고 있다. — Afshine Amidi


2.1 위치 임베딩

트랜스포머에서 셀프 어텐션은 모든 토큰이 다른 모든 토큰과 직접 상호작용하는 구조다. RNN처럼 토큰을 하나씩 순차적으로 처리하는 것이 아니므로, 어떤 토큰이 다른 토큰보다 앞에 있다는 위치 정보가 자연스럽게 사라진다. 따라서 트랜스포머는 위치 정보를 별도로 주입해야 한다.

학습된 위치 임베딩 (Learned Position Embeddings)

원래 트랜스포머 논문의 저자들은 각 위치에 전용 임베딩을 할당하는 방식을 시도했다. 위치 1에는 위치 1의 임베딩, 위치 2에는 위치 2의 임베딩을 두고, 이를 해당 위치의 토큰 임베딩에 더한다.

예를 들어 "A cute teddy bear is reading"이라는 문장에서, 위치 1에 해당하는 "A"의 최종 입력은 다음과 같다:

입력 = 토큰_임베딩("A") + 위치_임베딩(1)

이 방식에서 위치 임베딩은 경사 하강법을 통해 학습되는 가중치다. 위치 1부터 최대 위치(예: 512)까지 학습 가능한 임베딩을 준비하고, 훈련 과정에서 자연스럽게 학습시킨다.

장점: - 경사 하강법이 데이터로부터 최적의 위치 표현을 학습한다.

단점: - 훈련 세트에 존재하는 최대 위치까지만 학습할 수 있다. 최대 시퀀스 길이가 512인 데이터로 훈련했다면, 추론 시 512를 초과하는 위치에 대해서는 학습된 임베딩이 없다. - 훈련 데이터의 분포에 편향될 수 있다. 특정 위치에 항상 특정 패턴이 나타나면, 그 편향이 임베딩에 그대로 반영된다.

사인파 위치 임베딩 (Sinusoidal Position Embeddings)

학습된 임베딩의 한계를 극복하기 위해, 원래 트랜스포머 논문의 저자들은 사인(sin)과 코사인(cos) 함수를 이용한 사전 결정된 공식도 제안했다. 이 방법에서는 각 위치 \(m\)에 대해 크기 \(d_{\text{model}}\)의 벡터를 생성하며, 각 차원 \(i\)의 값을 다음 공식으로 계산한다:

\[PE_{(m, 2i)} = \sin(\omega_i \cdot m)\]

\[PE_{(m, 2i+1)} = \cos(\omega_i \cdot m)\]

여기서 \(\omega_i\)는 다음과 같이 정의된다:

\[\omega_i = 10000^{-2i/d_{\text{model}}}\]

이 공식이 왜 합리적인지 살펴보자. 핵심은 가까운 토큰이 먼 토큰보다 더 유사해야 한다는 직관을 수학적으로 구현하는 것이다.

위치 \(m\)과 위치 \(n\)의 임베딩 간 내적을 계산하면, 삼각함수 항등식을 활용할 수 있다:

\[\cos(\omega_i(m - n)) = \cos(\omega_i m)\cos(\omega_i n) + \sin(\omega_i m)\sin(\omega_i n)\]

우변은 위치 \(m\) 임베딩의 \(i\)번째 성분과 위치 \(n\) 임베딩의 \(i\)번째 성분의 곱들의 합이다. 즉, 내적의 한 항과 정확히 일치한다. 따라서 두 위치 임베딩의 내적은 다음과 같이 표현된다:

\[\langle PE_m, PE_n \rangle = \sum_i \cos(\omega_i(m - n))\]

이 결과에서 두 가지 중요한 성질을 확인할 수 있다:

  1. 상대 거리의 함수: 내적이 \(m\)\(n\) 각각이 아니라 상대 거리 \(m - n\)의 함수다.
  2. 가까울수록 유사: \(m = n\)일 때 \(\cos(0) = 1\)이므로 내적이 최대가 된다. \(|m - n|\)이 커질수록 코사인 값이 감소하므로, 먼 토큰일수록 유사도가 낮아진다.

임베딩을 시각화하면, 낮은 차원(\(i\)가 작을 때)에서는 \(\omega_i\)가 커서 값이 빠르게 진동하고(고주파), 높은 차원(\(i\)가 클 때)에서는 \(\omega_i\)가 작아서 값이 천천히 변한다(저주파). 이는 마치 이진수 체계와 유사하다. 하위 비트는 빠르게 변하고, 상위 비트는 느리게 변한다.

장점: - 학습된 임베딩과 비슷한 성능을 보인다. - 훈련 시 보지 못한 시퀀스 길이에도 확장할 수 있다.


2.2 어텐션 층에 직접 개입하는 위치 표현

사인파 임베딩은 입력 단계에서 토큰 임베딩에 더해진다. 그러나 실제로 토큰 간 유사도가 계산되는 곳은 멀티헤드 어텐션 층이다. 입력에 위치 정보를 더하는 것은 어텐션 층에 간접적으로만 영향을 미친다. 그래서 후속 연구들은 어텐션 공식에 직접 위치 정보를 주입하는 방향으로 발전했다.

셀프 어텐션 공식을 떠올려 보자:

\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\]

소프트맥스 내부에 위치 관련 항을 추가하면, 토큰 간 유사도 계산에 직접 위치 정보를 반영할 수 있다.

T5 상대 위치 편향 (T5 Relative Position Bias)

T5 모델은 소프트맥스 내부에 학습 가능한 편향(bias) 항 \(b\)를 추가한다:

\[\text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}} + b(m, n)\right)\]

여기서 \(b(m, n)\)은 위치 \(m\)\(n\) 사이의 상대 거리 \(m - n\)을 여러 버킷으로 양자화한 뒤, 각 버킷에 대한 편향값을 학습하는 방식이다. 소프트맥스가 정규화를 수행하므로, 편향을 더해도 확률 합이 1이 되는 성질은 유지된다. 멀리 떨어진 토큰에 대해서는 더 부정적인(음수) 편향을, 가까운 토큰에 대해서는 덜 부정적인 편향을 학습할 수 있다.

ALiBi (Attention with Linear Biases)

"Train Short, Test Long" 논문에서 제안된 ALiBi 방식은 T5와 유사하게 소프트맥스 내부에 편향을 추가하되, 학습하는 대신 결정론적 공식을 사용한다. 위치 \(m\)\(n\) 사이의 상대 거리에 비례하는 선형 페널티를 부여한다. 학습 파라미터가 없으므로 단순하지만, 표현력이 제한적이라는 한계가 있다.

RoPE (Rotary Position Embeddings)

현재 대부분의 대규모 언어 모델이 채택하고 있는 방법이다. RoPE의 핵심 아이디어는 쿼리와 키 벡터를 위치에 따른 각도만큼 회전시키는 것이다.

회전 행렬의 기초

2차원 공간에서 벡터 \(\mathbf{v}\)를 각도 \(\theta\)만큼 회전시키려면 회전 행렬을 곱한다:

\[R(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}\]

벡터 \(\mathbf{v} = r(\cos\phi, \sin\phi)^\top\)에 회전 행렬을 적용하면:

\[R(\theta)\mathbf{v} = r\begin{pmatrix}\cos(\theta + \phi) \\ \sin(\theta + \phi)\end{pmatrix}\]

즉, 원래 각도 \(\phi\)\(\theta\)를 더한 방향으로 벡터가 회전한다.

RoPE의 적용

위치 \(m\)에 있는 쿼리 벡터 \(\mathbf{q}\)를 각도 \(m\theta\)만큼 회전시키고, 위치 \(n\)에 있는 키 벡터 \(\mathbf{k}\)를 각도 \(n\theta\)만큼 회전시킨다:

\[\mathbf{q}'_m = R(m\theta)\mathbf{q}_m, \quad \mathbf{k}'_n = R(n\theta)\mathbf{k}_n\]

이 두 벡터의 내적을 계산하면, 회전 행렬의 직교 성질에 의해 상대 거리 \(m - n\)에 해당하는 회전 행렬만 남는다:

\[\mathbf{q}'^{\top}_m \mathbf{k}'_n = \mathbf{q}^\top_m R((n - m)\theta) \mathbf{k}_n\]

이것이 RoPE의 핵심 성질이다. 어텐션 가중치가 두 위치의 상대 거리 \((n - m)\)의 함수가 된다.

실제 구현에서는 차원이 2보다 크므로, \(d_{\text{model}}\) 차원의 벡터를 2차원 블록으로 나누어 각 블록에 독립적인 회전을 적용한다. 각 블록 \(i\)의 회전 각도 \(\theta_i\)는 사인파 임베딩의 \(\omega_i\)와 유사한 형태를 가진다:

\[\theta_i = 10000^{-2i/d_{\text{model}}}\]

장기 감쇠 (Long-term Decay)

RoPE의 또 다른 중요한 성질은 어텐션 가중치의 상한이 장기 감쇠를 보인다는 것이다. 즉, \(|m - n|\)이 커질수록 어텐션 가중치의 상한이 점차 작아진다. 약간의 진동이 있지만, 전체적인 추세는 먼 토큰에 대한 어텐션이 감소하는 방향이다. 이는 RoPE 논문의 부록에서 수학적으로 증명되어 있다.

2-cme295-position-embeddings.png

위치 임베딩 방법 비교

방법

주입 위치

학습 여부

상대 거리 반영

시퀀스 길이 확장

학습된 임베딩

입력

학습

간접적

어려움

사인파 임베딩

입력

고정

간접적

가능

T5 편향

어텐션 층

학습

직접적

버킷 범위 내

ALiBi

어텐션 층

고정 (선형)

직접적

가능

RoPE

어텐션 층 (Q, K 회전)

고정

직접적

가능

현재 대부분의 대규모 언어 모델은 RoPE를 사용한다.


2.3 층 정규화

트랜스포머 아키텍처에서 각 서브 층(어텐션 층 또는 FFN) 주변에는 "Add & Norm"이라는 블록이 존재한다. 이는 잔차 연결(residual connection)과 층 정규화(layer normalization)를 결합한 것이다.

층 정규화의 원리

신경망의 중간 층을 통과하면서, 활성화(activation) 벡터의 각 성분 값이 극단적으로 커지거나 작아질 수 있다. 이를 **내부 공변량 이동(internal covariate shift)**이라 부르며, 학습을 불안정하게 만드는 원인이 된다.

층 정규화는 벡터 \(\mathbf{x}\)의 성분들을 정규화된 범위로 조정한다:

\[\text{LayerNorm}(\mathbf{x}) = \gamma \cdot \frac{\mathbf{x} - \mu}{\sigma} + \beta\]

여기서: - \(\mu = \frac{1}{d}\sum_{i=1}^{d} x_i\) (성분들의 평균) - \(\sigma = \sqrt{\frac{1}{d}\sum_{i=1}^{d}(x_i - \mu)^2}\) (성분들의 표준편차) - \(\gamma\): 학습 가능한 스케일링 파라미터 - \(\beta\): 학습 가능한 시프트 파라미터

층 정규화 vs. 배치 정규화: 배치 정규화(batch normalization)는 배치 차원에 걸쳐 같은 차원의 값들을 정규화하는 반면, 층 정규화는 하나의 벡터 내에서 모든 차원의 값들을 정규화한다. 트랜스포머 기반 모델에서는 층 정규화가 선호되는데, 배치 정규화는 배치 크기에 의존하여 훈련과 추론 시 차이가 발생할 수 있기 때문이다.

Post-Norm vs. Pre-Norm

원래 트랜스포머 논문에서는 Post-Norm 방식을 사용했다:

출력 = LayerNorm(x + SubLayer(x))

서브 층의 출력에 잔차 연결을 한 뒤 정규화를 적용한다.

현대 모델들은 Pre-Norm 방식으로 전환했다:

출력 = x + SubLayer(LayerNorm(x))

입력을 먼저 정규화한 뒤 서브 층에 통과시키고, 그 결과에 잔차 연결을 수행한다. Pre-Norm이 훈련 안정성에서 더 우수한 것으로 나타났다.

RMS Norm (Root Mean Square Normalization)

현대 트랜스포머 모델 대부분은 층 정규화 대신 RMS Norm을 사용한다:

\[\text{RMSNorm}(\mathbf{x}) = \gamma \cdot \frac{\mathbf{x}}{\text{RMS}(\mathbf{x})}\]

여기서:

\[\text{RMS}(\mathbf{x}) = \sqrt{\frac{1}{d}\sum_{i=1}^{d}x_i^2}\]

RMS Norm은 층 정규화에서 평균 빼기(\(\mu\))와 시프트 파라미터(\(\beta\))를 제거한 것이다. 스케일링 파라미터 \(\gamma\)만 학습한다.

비교 항목

Layer Norm

RMS Norm

평균 빼기

있음

없음

학습 파라미터

\(\gamma\), \(\beta\)

\(\gamma\)

수렴 성질

우수

비슷

계산 비용

상대적 높음

더 빠름

RMS Norm이 더 적은 파라미터로 비슷한 수렴 성질을 달성하므로, 계산 효율이 더 높다.


2.4 희소 어텐션과 효율성

표준 셀프 어텐션에서 각 토큰은 시퀀스 내 모든 토큰과 상호작용한다. 시퀀스 길이가 \(n\)이면, 어텐션 행렬의 크기는 \(n \times n\)이므로 계산 복잡도가 \(O(n^2)\)이다. 시퀀스 길이가 길어질수록 이 비용은 급격히 증가한다.

슬라이딩 윈도우 어텐션 (Sliding Window Attention)

2020년에 발표된 Longformer 논문은 전체 어텐션 대신 각 토큰이 인접한 이웃 토큰들만 참조하도록 어텐션 윈도우를 제한하는 방식을 제안했다. 이를 슬라이딩 윈도우 어텐션 또는 로컬 어텐션이라 한다.

실제 구현에서는 전체 \(n \times n\) 소프트맥스를 계산하지 않고, 타일링(tiling) 등의 기법을 사용하여 윈도우 내부의 연산만 효율적으로 수행한다.

로컬 어텐션과 글로벌 어텐션의 결합

현대 모델에서는 일부 층에서는 로컬(슬라이딩 윈도우) 어텐션을, 다른 층에서는 글로벌(전체) 어텐션을 사용하고, 이 두 종류의 층을 교차 배치한다. 모델에 따라 조합 방식이 다르며, 정해진 하나의 레시피는 없다. 윈도우 크기는 수천 토큰에 달할 수 있으므로 상당히 넓은 범위를 커버한다.

수용 영역 (Receptive Field)

Mistral 모델은 모든 층에서 슬라이딩 윈도우 어텐션을 사용하는 아키텍처의 예시다. 층이 쌓일수록 간접적으로 참조할 수 있는 범위가 넓어진다. 이는 컴퓨터 비전의 합성곱 신경망에서 **수용 영역(receptive field)**이 층을 쌓을수록 커지는 것과 동일한 원리다.

예를 들어 윈도우 크기가 \(w\)이고 \(L\)개의 층이 있다면, 마지막 층의 토큰 하나가 간접적으로 참조할 수 있는 범위는 최대 \(L \times w\) 토큰에 달한다.


2.5 그룹 쿼리 어텐션 (Grouped Query Attention)

표준 멀티헤드 어텐션에서 각 헤드는 독자적인 쿼리, 키, 값 투영 행렬을 가진다. 그룹 쿼리 어텐션은 키와 값의 투영 행렬을 여러 헤드가 공유하도록 한다.

키와 값을 공유하는 이유

디코더에서 새 토큰을 생성할 때마다, 그 토큰의 쿼리를 이전 모든 토큰의 키 및 값과 비교해야 한다. 매번 모든 키와 값을 재계산하는 것은 비효율적이므로, 이전에 계산한 키와 값을 저장하는 KV 캐시를 사용한다. 키와 값의 투영 행렬을 공유하면 이 캐시의 메모리 사용량을 줄일 수 있다.

쿼리는 공유하지 않는 이유가 있다. 쿼리는 "어떤 토큰이 나와 유사한가"를 묻는 역할을 하므로, 다양한 관점에서 질문을 던질 수 있도록 다양성을 유지하는 것이 유리하다.

세 가지 변형

방법

쿼리 투영 수

키/값 투영 수

설명

MHA (Multi-Head Attention)

\(h\)

\(h\)

표준 방식. 각 헤드마다 독립 투영

GQA (Grouped Query Attention)

\(h\)

\(g\) (\(1 < g < h\))

\(h/g\)개의 헤드가 하나의 키/값 투영을 공유

MQA (Multi-Query Attention)

\(h\)

\(1\)

모든 헤드가 하나의 키/값 투영을 공유

GQA는 MHA와 MQA 사이의 균형점이다. 메모리 절약과 표현력 사이에서 적절한 타협을 제공하며, 최근 대부분의 모델이 GQA를 채택하고 있다. 어떤 방법을 선택할지는 모델의 크기, 입력 시퀀스 길이, 지연 시간과 비용에 대한 요구 사항 등에 따라 결정된다.


2.6 트랜스포머 모델의 세 가지 범주

원래 트랜스포머는 인코더와 디코더를 모두 갖춘 아키텍처였다. 이후 연구자들은 과제의 특성에 따라 인코더만, 디코더만, 또는 둘 다를 사용하는 세 가지 범주의 모델을 발전시켰다.

인코더-디코더 모델

원래 트랜스포머 구조 그대로, 인코더가 입력을 처리하고 디코더가 출력을 생성한다. 대표적인 모델이 T5 (Text-to-Text Transfer Transformer) 계열이다.

T5 계열의 변형:

모델

특징

T5

원본 모델

mT5

다국어(Multilingual) 지원. 다양한 언어의 데이터와 어휘로 훈련

ByT5

토크나이저 없이 바이트 수준에서 동작. 어휘 크기가 \(2^8 = 256\)으로 매우 작음

T5의 훈련 목표는 원래 트랜스포머의 다음 토큰 예측(next token prediction)과 다르다. T5는 스팬 손상(span corruption) 과제를 사용한다:

  1. 입력 문장에서 하나 이상의 연속된 토큰 구간(스팬)을 마스킹한다.
  2. 마스킹된 위치에 **센티널 토큰(sentinel token)**을 삽입한다.
  3. 디코더는 각 센티널 토큰 뒤에 해당 스팬의 원래 토큰을 순서대로 복원한다.

예시:

원문:   "My teddy bear is cute and reading"
인코더: "My teddy bear <S1> and reading"
디코더: "<S1> is cute <S2>"

여기서 <S1>, <S2>는 센티널 토큰이다. 디코더는 연속된 센티널 토큰 사이에 손상된 스팬을 복원한다. 훈련 시에는 교사 강제(teacher forcing)를 사용하여 디코더의 모든 출력을 한번에 재구성한다.

인코더 전용 모델

디코더를 제거하고 인코더만 사용하는 모델이다. 텍스트 생성은 불가능하지만, 분류 과제에 특화된다. 대표 모델은 BERT, DistilBERT, RoBERTa 등이다. 다음 절에서 BERT를 상세히 다룬다.

디코더 전용 모델

인코더를 제거하고 디코더만 사용하는 모델이다. 인코더가 없으므로 크로스 어텐션 모듈도 사라지며, 각 디코더 층은 마스크드 셀프 어텐션과 FFN만으로 구성된다. GPT 계열이 대표적이다.

시간이 지나면서 디코더 전용 모델이 주류가 된 이유는 다음과 같다:

  1. 확장성: 다음 단어 예측이라는 단순한 과제는 데이터 규모 확장에 유리하다. T5의 스팬 손상처럼 별도의 손상 과정이 필요 없다.
  2. 범용성: 사전 훈련된 디코더 모델은 챗봇 등 오늘날의 주요 응용에 자연스럽게 부합한다.
  3. 투자 집중: 디코더 전용 아키텍처에 연산 예산을 집중 투자하는 것이 더 효과적임이 입증되었다.

디코더 전용 모델에 대한 상세한 내용은 이후 강의에서 다룬다.


2.7 BERT 심층 분석

BERT는 Bidirectional Encoder Representations from Transformers의 약자다. 이 이름의 각 부분이 모델의 핵심 특성을 설명한다.

양방향성 (Bidirectional)

BERT는 인코더만 사용하므로, 마스크드 셀프 어텐션이 아닌 완전한 셀프 어텐션을 수행한다. 각 토큰이 시퀀스 내 모든 토큰(자신의 앞과 뒤 모두)을 참조할 수 있다. 이는 디코더의 마스크드 셀프 어텐션이 현재 토큰 이전의 토큰만 참조하는 것(인과적/causal)과 대조된다.

GPT 같은 디코더 모델은 진정한 양방향 표현을 생성하지 못하는 반면, BERT의 인코더는 좌우 문맥을 모두 반영한 표현을 만들어낸다. BERT 논문의 저자들은 이 차이를 강조했다.

특수 토큰

BERT는 두 가지 특수 토큰을 사용한다:

입력 표현

BERT의 입력은 세 가지 임베딩의 합으로 구성된다:

입력 = 토큰 임베딩 + 위치 임베딩 + 세그먼트 임베딩

사전 훈련: 다단계 학습

BERT는 두 가지 목적 함수를 동시에 사용하여 사전 훈련된다.

MLM (Masked Language Model)

입력 토큰의 일부를 무작위로 선택하여 다음과 같이 처리한다:

비율

처리 방식

80%

[MASK] 토큰으로 대체

10%

임의의 다른 단어로 대체

10%

원래 단어를 그대로 유지

모델은 선택된 토큰의 원래 단어를 예측해야 한다. 마스킹된 토큰을 예측하려면 좌우 문맥을 모두 이해해야 하므로, 이 과제가 양방향 표현 학습을 촉진한다.

NSP (Next Sentence Prediction)

두 문장 A, B를 입력으로 받아, B가 원래 텍스트에서 A 바로 다음에 오는 문장인지를 예측하는 이진 분류 과제다:

[CLS] 토큰의 출력 임베딩 위에 분류 헤드를 놓아 판단한다. 문장 간의 관계를 이해하는 데 도움이 되는 임베딩을 학습하기 위한 것이다.

사전 훈련의 장점: MLM과 NSP 모두 라벨이 필요 없는 자기 지도(self-supervised) 학습이다. 비라벨 텍스트 데이터만으로 고품질 임베딩을 학습할 수 있다.

BERT의 규모

BERT 논문에서는 원래 트랜스포머 논문과 약간 다른 표기를 사용한다:

BERT 표기

원래 표기

의미

\(L\)

\(N\)

인코더 층 수

\(H\)

\(d_{\text{model}}\)

임베딩 차원

\(A\)

\(h\)

어텐션 헤드 수

두 가지 주요 버전이 있다:

모델

\(L\)

\(H\)

\(A\)

파라미터 수

BERT-Base

12

768

12

~110M

BERT-Large

24

1024

16

~340M

또한 cased/uncased 변형이 있다. Uncased는 모든 텍스트를 소문자로 전환한 뒤 훈련한 것이고, cased는 대소문자 구분을 유지한 것이다. 과제에 따라 적절한 버전을 선택한다.

미세 조정 (Fine-tuning)

사전 훈련이 완료되면, 학습된 가중치를 고정(freeze)하거나 소폭 재훈련하면서 목표 과제에 맞는 분류 층을 추가한다. 사전 훈련에서 학습된 풍부한 임베딩 덕분에, 소량의 라벨 데이터만으로도 우수한 성능을 달성할 수 있다.

감정 분석 (Sentiment Extraction)

[CLS] 토큰의 출력 임베딩을 FFN(피드포워드 네트워크)에 통과시켜 긍정/부정 등의 분류를 수행한다. [CLS] 토큰의 임베딩은 셀프 어텐션을 통해 모든 토큰의 정보를 집약하고 있으므로, 전체 시퀀스를 대표하는 벡터로 사용할 수 있다. 나머지 토큰의 출력 임베딩은 이 과제에서는 사용하지 않는다.

[CLS] 출력 임베딩 → 선형 층 → 은닉 층 → 분류 출력

질의 응답 (Question Answering)

질의 응답에서는 [CLS]만이 아니라 각 토큰의 출력 임베딩을 활용한다. 두 개의 FFN이 각각 답변의 시작 위치와 끝 위치를 예측한다. 모든 토큰 임베딩에 이 FFN을 적용하여, 답변 스팬의 경계를 식별한다.

BERT의 장점과 한계

장점: - 비라벨 데이터로 사전 훈련 후, 소량의 라벨 데이터로 미세 조정하여 다양한 분류 과제에 적용할 수 있다. - 양방향 문맥 인식 임베딩을 생성하므로, 감정 분석, 개체명 인식, 질의 응답 등에 널리 활용된다. - 산업계에서 분류 관련 과제에 BERT 계열 모델이 여전히 널리 사용되고 있다.

한계: - 디코더가 없으므로 텍스트 생성이 불가능하다. - 원래 문맥 길이가 512로 제한적이다. - BERT-Base도 110M 파라미터로, 지연 시간이 문제가 될 수 있다. - 두 단계(사전 훈련 + 미세 조정) 학습 과정이 단일 단계 방식보다 복잡하다. - MLM과 NSP 두 목적 함수가 모두 필요한지에 대한 의문이 제기되었다.


2.8 BERT의 후속 모델

DistilBERT: 지식 증류를 통한 경량화

Geoffrey Hinton, Oriol Vinyals, Jeff Dean이 제안한 지식 증류(knowledge distillation)의 핵심 통찰은 다음과 같다:

"소프트 타겟이 거의 모든 지식을 담고 있다."

즉, 모델이 출력하는 확률 분포에는 정답 라벨(하드 타겟)보다 훨씬 많은 정보가 담겨 있다. 증류는 큰 모델(교사)의 출력 분포를 작은 모델(학생)이 모방하도록 학습시키는 기법이다.

학생 모델의 출력 분포 \(S\)가 교사 모델의 출력 분포 \(T\)에 가까워지도록 **KL 발산(Kullback-Leibler divergence)**을 최소화한다:

\[D_{KL}(T \| S) = \sum_i T(i) \log \frac{T(i)}{S(i)}\]

만약 교사의 분포 \(T\)가 하드 라벨(특정 클래스에만 확률 1)이라면, KL 발산은 표준 교차 엔트로피 손실 \(-\log S(y)\)로 환원된다.

DistilBERT는 BERT의 층 수를 절반으로 줄이면서 증류를 적용하여, 원래 성능의 대부분을 유지하면서 크기와 지연 시간을 크게 줄였다. 단 4페이지의 간결한 논문이지만, 실용적 영향은 매우 크다.

RoBERTa: 사전 훈련 전략의 개선

RoBERTa는 BERT의 사전 훈련 과정을 재검토한 모델이다. 주요 발견과 개선 사항은 다음과 같다:

  1. NSP 제거: NSP 목적 함수를 제거해도 성능이 거의 감소하지 않았다. 따라서 MLM만 사용한다.
  2. 동적 마스킹: 같은 텍스트가 여러 에포크에 걸쳐 반복될 때, 매번 마스킹 패턴을 바꾼다. BERT는 마스킹을 고정했던 것과 대조된다.
  3. 데이터 확대: 원래 BERT가 심각하게 과소 훈련(undertrained)되었음을 발견했다. 데이터의 다양성과 규모를 대폭 늘려 벤치마크 성능을 크게 향상시켰다.

핵심 정리

개념

핵심

위치 임베딩

학습 임베딩 → 사인파 → T5 편향 → ALiBi → RoPE. 현대 모델 대부분 RoPE 사용

사인파 임베딩

\(\sin(\omega_i m)\), \(\cos(\omega_i m)\). 내적이 상대 거리 함수. 시퀀스 길이 확장 가능

RoPE

Q, K를 위치별 각도로 회전. 상대 거리 반영 + 장기 감쇠 성질

층 정규화

Post-Norm에서 Pre-Norm으로 전환. Layer Norm에서 RMS Norm으로 전환

희소 어텐션

슬라이딩 윈도우로 \(O(n^2)\) 완화. 로컬/글로벌 층 교차 배치

GQA

K, V 투영을 그룹 공유하여 KV 캐시 메모리 절감. MHA와 MQA의 균형

모델 범주

인코더-디코더(T5), 인코더 전용(BERT), 디코더 전용(GPT). 현대는 디코더 전용 주류

BERT

양방향 인코더. [CLS]+[SEP] 토큰. MLM+NSP 사전 훈련 → 미세 조정

DistilBERT

지식 증류로 BERT 경량화. 층 수 절반, 성능 대부분 유지

RoBERTa

NSP 제거, 동적 마스킹, 데이터 확대로 BERT 개선


다음 장: 3장 - 대규모 언어 모델