이번 포스팅은 최근까지 NLP 모델 발전의 흐름을 정리하는 글이다.
목차는 아래와 같으며 이번 포스팅에서는 ELMo까지 다루고, 추후 이후의 내용들을 차근차근 정리한다.
- Transfer Learning과 Language Modeling
- ELMo(Embedding from Language Models)
- GPT(Generative Pre-Training Transformer)
- BERT(Bidirectional Encoder Representations from Transformers)
- Transformer-XL(Transformer Extra Long)
- XLNet, BART
- ALBERT(A Lite BERT for Self-supervised Learning of Language Representations)
- T5(Text-to-Text Transfer Transformer)
- Switch Transformer
- ERNIE
1. Transfer Learning과 Language Modeling
1.1 Transfer Learning (전이 학습)
전이 학습이란?
어떤 문제를 해결하기 위해 학습된 모델의 weight를, 다른 문제를 해결하는 데 재사용하는 ML 기법이다.

기존 학습은 A 작업을 하려면 A 데이터로 처음부터 학습하고, B 작업을 하려면 마찬가지로 B데이터로 처음부터 학습하는 독립적인 형태이다.
반면 전이 학습은 큰 데이터로 A 작업을 학습한 모델을 가져와서, 그 지식(모델의 가중치)을 바탕으로 B 작업을 학습한다.
이러한 방법은 특정 task의 데이터가 비교적 적어도 높은 성능을 낼 수 있으며, 기존의 가중치에서부터 시작하므로 수렴 속도도 빠르다는 장점이 있다.
1.2 Language Modeling (언어 모델링)
언어 모델링이란?
단어 시퀀스가 주어졌을 때, 해당 시퀀스의 확률을 할당하거나 다음에 등장할 단어의 확률을 예측하는 작업.
즉, 언어의 패턴과 규칙을 학습해서 사람처럼 말할 수 있게 만드는 과정이다.
NLP에서는 이 언어 모델이 pretrained model이 되는 것이다.
그리고 이 모델을 다른 task에 적용하기 위해, 기존 가중치에서 이어서 학습시키는 것을 fine-tuning이라고 한다.
이러한 효율성으로 인해 2018년(ELMo, BERT 등장)부터는 기존의 바닥부터 시작하는 학습 대신 전이 학습을 하는 시대로 바뀌었다.
2. ELMo(Embedding from Language Models)
ELMo는 NLP의 흐름을 정적 임베딩(Word2Vec)에서 동적 임베딩(Contextualized Embedding)으로 바꾼 모델이며, 문맥(context)을 반영한 임베딩을 pretrained model로 구현한 첫 번째 사례이다.
즉, 언어 모델을 이용하여 임베딩을 한 것이다.
- 기존 Word2Vec이나 Glove 같은 임베딩 방법은 사전에 있는 단어 하나당 하나의 벡터만 존재하는 정적 임베딩.
- 반면 ELMo는 문장 내 주변 단어에 따라 임베딩 벡터가 변하는 동적 임베딩. → 문맥 반영
- I ate an apple → 과일
- Apple released a new iPhone → 기업
ELMo는 크게 세 가지 요소로 구성되어 있다.
- Charactor-level CNN
- Bidirectional LSTM
- ELMo Layer
2.1 Charactor-level CNN
- ELMo는 단어(Word)가 아닌 문자(Charactor) 단위로 입력을 받는다(e.g. 밥 → [ㅂ, ㅏ, ㅂ] → [235, 176, 165](유니코드)).
- 입력받은 단어의 시작과 끝에 해당하는 special token <BOW>, <EOW>에 해당하는 유니코드를 앞뒤로 붙이고, 각 유니코드 아이디에 해당하는 행 벡터를 참조하여 붙인다.
- 만들어진 벡터에 (n x emb_dim) 사이즈의 필터로 conv 해서 피처맵을 만들고 max-pooling 해서 하나의 값을 뽑아냄. 이 작업을 반복해서 사용자가 원하는 크기만큼의 벡터로 만든다. (여기서 n은 n-gram의 n을 의미함)
ELMo의 original 코드는 서로 다른 사이즈의 7개의 필터로 2048차원의 벡터를 만든다.
2.2 Bidirectional LSTM

Charactor-level CNN을 통과해서 만들어진 벡터(E1, E2, ..., EN)들은 Bidirectional LSTM을 통과하는데, pretrain 시에 bi-LSTM은 주어진 입력 다음에 올 단어들을 예측한다.
pretrain 시, 양방향으로 LSTM을 통과한 hidden vector들은 softmax를 통과해 확률값으로 변환되고, 다음 단어를 예측한다.
이때, ELMo는 순방향과 역방향의 벡터를 합치거나 더하지 않는다.
왜냐하면 둘은 다른 방향으로 진행하니 서로를 cheating할 수 있기 때문에 독립적으로 행동한다.

2.3 ELMo Layer
ELMo Layer가 입력으로 받는 것은 L=2인 Bi-LSTM 모델을 기준으로, 각 토큰 $k$마다 나오는 3개의 벡터이다.
- h_{k,0}: Token Embedding Layer. 문맥 정보 없음.
- h_{k,1}: 1st Bi-LSTM Layer. 문법 정보
- h_{k,2}: 2nd Bi-LSTM Layer. 의미 정보.
수식은 아래와 같다.

여기서 감마와 s는 학습 가능한 파라미터이며 내가 수행할 task에 맞춰서 결정되는 값이다.
- s: softmax-normalized weights이고 각 층의 정보가 현재 문제에 얼마나 중요한지를 나타낸다.
- 감마: 전체 ELMo 벡터의 크기를 조절한다.
요약:
- 같은 단어도 문맥에 따라 다른 벡터를 가지므로 다의어 문제를 해결
- LSTM의 얕고 깊은 층의 정보를 모두 활용하여 문법과 의미를 모두 포함 가능
- 기존 모델을 다 고치지 않고 ELMo 벡터를 입력에 붙여주기만 해도 성능 향상
'AI > NLP' 카테고리의 다른 글
| [12/03] 아이펠 리서치 15기 TIL | InstructGPT | RLHF(Reinforcement Learning from Human Feedback) (0) | 2025.12.06 |
|---|---|
| [12/02] 아이펠 리서치 15기 TIL | Hugging Face Transformers (0) | 2025.12.04 |
| [11/24] 아이펠 리서치 15기 TIL | Seq2Seq 영-한 번역기 만들기 (0) | 2025.11.27 |
| [11/19] 아이펠 리서치 15기 TIL | WEAT score (1) | 2025.11.27 |
| [11/17] 아이펠 리서치 15기 TIL | vocab_size에 따른 ML 모델의 성능 비교 (뉴스 카테고리 다중 분류) (0) | 2025.11.27 |