RNN의 장기 의존성 문제에서 attention과 Transformer가 등장한 배경을 시작으로 GPT·BERT와 후속 개선 모델을 연결해 설명한다. XLNet·RoBERTa·MT-DNN·T5는 더 어렵고 다양한 방식으로 사전학습해 성능을 높였고, quantization·pruning·DistilBERT·ALBERT는 너무 큰 모델을 실제 서비스에 맞게 줄였다. 구조, 학습 데이터, 목적함수, 압축이라는 네 축으로 Transformer 발전을 조망한다.
핵심 포인트- RNN은 토큰을 순차 처리해 먼 단어의 정보가 약해지지만 attention은 모든 단어 쌍의 관계를 직접 가중치로 표현한다.
- Transformer는 RNN 없이 scaled dot-product와 multi-head attention을 쌓아 병렬 학습과 장거리 관계 모델링을 가능하게 했다.
- GPT는 decoder의 단방향 attention으로 생성에, BERT는 encoder의 양방향 attention으로 이해 과제에 강점을 보였다.
- XLNet·RoBERTa·MT-DNN·T5는 더 많은 데이터, 어려운 예측 순서, 동적 masking, 멀티태스크 학습으로 BERT의 미학습 여력을 끌어냈다.
- 서비스 단계에서는 200ms가 넘을 수 있는 BERT inference와 큰 메모리 비용을 줄이기 위해 quantization, pruning, distillation, parameter sharing을 사용한다.
상세 정리- RNN의 한계: 이전 hidden state에 의존해 문장을 순서대로 처리하면 긴 문장의 앞쪽 정보가 vanishing gradient로 약해진다. 번역처럼 먼 단어를 참조해야 하는 생성 과제에서 문제가 커진다.
- Attention 전환: 출력이 입력의 모든 단어를 직접 참조하고 중요도를 가중치로 학습한다. 단어 사이 거리에 관계없이 상관관계를 표현할 수 있다.
- Transformer 구성: scaled dot-product attention은 Query와 Key의 내적을 차원 크기로 조절하고 Value를 가중합한다. 여러 Q·K·V 투영을 쓰는 multi-head attention이 관계의 다양한 측면을 학습한다.
- Encoder와 decoder: encoder는 입력을 문맥 표현으로 바꾸고 decoder는 다음 토큰 확률을 만든다. decoder는 미래 토큰을 보지 않도록 attention을 masking한다.
- GPT와 BERT: GPT는 decoder block의 순방향 문맥으로 직접 문장을 생성한다. BERT는 encoder의 양방향 문맥을 써 분류와 표현 학습에서 더 풍부한 정보를 얻지만 직접 생성에는 맞지 않는다.
- 크기 문제: 큰 Transformer는 학습 데이터와 시간이 많이 필요하고 실행도 느리다. 글은 서비스 latency 목표를 50~100ms로 보지만 당시 BERT 단일 처리가 GPU에서도 200ms를 넘을 수 있다고 지적한다.
- XLNet: 토큰 예측 순서를 permutation으로 샘플링해 단순 양방향 masking보다 다양한 조건 관계를 학습한다. 더 많은 데이터 효과와 구조 효과를 함께 검증했다.
- RoBERTa: BERT 구조를 유지하면서 데이터와 학습량을 늘리고 입력할 때마다 masking을 바꾸며 NSP를 제거하고 batch를 키웠다. BERT가 원래 충분히 학습되지 않았음을 보였다.
- MT-DNN: 문장 분류, 문장쌍 유사도·분류·순위처럼 서로 다른 GLUE 작업을 task-specific layer와 함께 번갈아 학습한다. 단순 MLM보다 어려운 감독 신호로 범용 표현을 강화한다.
- T5: 모든 NLP 문제를 text-to-text 형식으로 통일하고 약 750GB C4 데이터로 학습했다. 과제별 출력 구조를 하나의 생성 인터페이스로 맞추는 장점을 보여준다.
- Quantization: 가중치와 연산 정밀도를 낮춰 메모리와 계산량을 줄인다. 속도 이득을 얻지만 낮은 정밀도가 정확도에 미치는 영향을 측정해야 한다.
- Pruning: attention head나 연결 중 영향이 작은 부분을 제거한다. 큰 Transformer가 실제 과제에 비해 과도하게 매개변수화됐다는 관찰을 활용한다.
- DistilBERT: 큰 BERT의 출력 분포와 내부 표현을 작은 student가 따라 학습하는 knowledge distillation로 크기와 latency를 줄이면서 성능을 보존한다.
- ALBERT: embedding과 hidden dimension을 분리하고 layer 사이 파라미터를 공유해 파라미터 수를 크게 줄인다. 모델 폭과 층을 그대로 늘리는 방식의 중복을 제거한다.
- 전체 흐름: 한쪽은 더 많은 데이터와 어려운 과제로 큰 모델의 잠재력을 끌어내고, 다른 쪽은 같은 능력을 더 작은 계산 예산에 담는다. 연구 성능과 제품 latency를 잇는 두 방향이 동시에 필요하다.
왜 읽나Transformer의 기본 구조부터 BERT 후속 학습법과 모델 압축까지 한 흐름으로 이해하려는 NLP 입문자와 실무자에게 유용하다.