-
[NLP 아키텍처 연대기] 통계에서 트랜스포머까지: 언어 이해의 여정AI 2026. 3. 2. 17:58
인간의 언어를 컴퓨터에게 가르치는 과정은 단순히 데이터를 넣는 과정이 아니었습니다. 그것은 '문맥'이라는 추상적인 개념을 어떻게 수치화하고, 어떻게 기억하게 할 것인가에 대한 치열한 고민의 역사였습니다. 그 거대한 흐름을 깊이 있게 파헤쳐 봅니다.

0. N-gram: "경험한 것만 믿는다" (고전적 통계 모델)
신경망이 언어 처리에 도입되기 전, 우리는 통계(Probability)에 의존했습니다. N-gram은 문장 내의 단어 나열을 확률 체인으로 보는 모델입니다.
💡 원리와 메커니즘
N-gram은 전적으로 카운트(Count) 기반입니다. "나는 오늘 학교에 [ ]"라는 문장이 있을 때, 빈칸에 들어갈 단어는 우리가 가진 방대한 데이터(Corpus)에서 "나는 오늘 학교에" 뒤에 가장 많이 등장했던 단어를 찾는 방식입니다.
- 연쇄 법칙(Chain Rule): 문장의 확률은 각 단어가 나타날 조건부 확률의 곱으로 계산됩니다.
-
$$P(w_1, \dots, w_n) = \prod_{i=1}^n P(w_i | w_1, \dots, w_{i-1})$$
⚠️ 치명적인 한계
- 희소 문제(Sparsity Problem): "나는 오늘 학교에 축구공을 가져갔다"라는 문장이 데이터에 한 번도 없었다면, 이 문장이 나타날 확률은 무조건 0이 됩니다. 현실에서는 충분히 가능함에도 불구하고 데이터가 부족하다는 이유로 '불가능' 판정을 내리는 융통성 없는 모델입니다.
- 단기 기억 상실: 바로 앞 $n-1$개의 단어만 참고하기 때문에, 문장이 조금만 길어져도 앞부분의 맥락을 완전히 놓쳐버립니다.
0.5 Feed-forward & Word2Vec: "단어의 의미를 좌표에 담다" (초기 신경망)
2013년, Word2Vec의 등장은 자연어 처리의 패러다임을 '카운트'에서 '예측(Prediction)'으로 바꾸어 놓았습니다.
Feed-forward(순방향)은 데이타가 한방향으로만 흐르는 신경망의 기초구조 입니다.
Word2Vec은 이구조를 이용해 단어를 벡터로 변환한 단층(Shallow)모델입니다.
💡 원리와 메커니즘
N-gram의 0의 저주를 완벽하게 깨부순게 Word2Vec입니다. Word2Vect은 단어를 카운트하지않고 좌표(벡터)로 공간에 배치해서 유사도를 계산할수 있도록합니다.
Word2Vec은 단어를 '의미가 담긴 숫자 리스트(벡터)' 로 변환합니다. 이를 임베딩(Embedding)이라고 합니다.- 희소 벡터에서 밀집 벡터로: 0이 가득한 원-핫 벡터 대신, 모든 칸이 실수값으로 꽉 찬 밀집 벡터를 사용합니다.
- 구조: 입력층과 출력층 사이에 딱 하나의 은닉층만 존재하는 아주 얕은(Shallow) 순방향 신경망(Feed-forward) 구조입니다.
⚠️ 넘지 못한 장벽
- 입력 크기의 고정(Concatenate): NNLM 구조를 계승한 Word2Vec은 정해진 $n$개의 단어를 옆으로 붙여서 입력해야 합니다. 이로 인해 입력 가중치($Weight$)의 크기가 고정되어 버려, 다양한 길이의 문장을 유연하게 받아내지 못했습니다.
- 물리적 문맥의 한계: 여전히 윈도우(Window) 방식이라 바로 옆의 단어들만 훑을 뿐, 문장 전체의 유기적인 관계를 보지는 못했습니다.
1. RNN & LSTM: "흐름을 기억하기 시작하다"
단어를 의미로 바꾸는 데 성공한 인류는 이제 '순서(Sequence)'에 집중했습니다.
💡 RNN (Recurrent Neural Network)
데이터를 옆으로 나열하는 대신, 은닉층의 정보를 자기 자신에게 다시 전달하는 순환(Recurrent) 구조를 선택했습니다. 덕분에 문장 길이에 상관없이 데이터를 처리할 수 있게 되었습니다.
💡 LSTM (Long Short-Term Memory)
RNN은 문장이 길어지면 앞 정보를 잊어버리는 장기 의존성 문제가 있었습니다. 이를 해결하기 위해 Cell State(컨베이어 벨트)를 도입했습니다.
- Forget Gate: 불필요한 과거 정보는 버리고,
- Input Gate: 중요한 현재 정보는 저장하며,
- Output Gate: 어떤 정보를 다음으로 보낼지 결정합니다.
2. seq2seq: "문장을 문장으로 번역하다"
입력 문장의 길이와 출력 문장의 길이가 다른 '번역' 문제를 해결하기 위해 인코더-디코더 구조가 탄생했습니다.
💡 메커니즘
- 인코더(Encoder): Encoder에 Input Sequence x를 넣으면 고정된 크기의 Representation Vector v에 모든 정보를 담아 Decoder에게 전달해 주는 구조입니다. Decoder는 전달받은 v를 기반으로 Output Sequence y를 생성합니다. 추가로 v는 컨텍스트 벡터(context vector) 라고 불리기도 하죠. 즉, 입력 문장을 훑으며 마지막에 하나의 고정된 크기의 벡터(컨텍스트 벡터)를 생성합니다.
- 디코더(Decoder): 이 벡터 하나를 바탕으로 한 단어씩 번역어를 생성합니다.
⚠️ 병목 현상(Bottleneck Problem)
아무리 긴 문장이라도 단 하나의 고정된 벡터에 모든 정보를 쑤셔 넣어야 했습니다. 이는 마치 수백 페이지의 책 내용을 포스트잇 한 장에 요약해서 전달하라는 것과 같았고, 결국 정보 손실이 발생했습니다.
🔍 여기서 잠깐: 우리가 놓치고 있었던 '문맥'의 함정
사실 병목 현상보다 더 근본적인 문제는, 우리가 지금까지 사용한 Word2Vec이나 FastText 같은 워드 임베딩이 '고정 벡터' 방식이었다는 점입니다.
예시) "차"라는 단어의 세 가지 의미
- "시간이 늦었으니 커피 말고 **차(Tea)**나 한 잔 마시자."
- "제주도는 버스로 움직이기 힘들어. **차(Car)**가 있어야 해."
- "축구공을 이쪽으로 차(Kick)."
워드 임베딩 방법들은 학습할 때는 주변 단어를 보지만, 실제 모델의 입력으로 사용할 때는 이 다양한 의미들을 모두 고정된 하나의 벡터로만 표현합니다. 정작 학습할 때는 문맥을 열심히 보더니, 테스트할 때는 현재 단어 한 개만 보는 모양새가 되어버린 것이죠.
똑똑한 여러분은 '그럼 문장이 들어올 때마다 문맥을 실시간으로 고려하는 임베딩(Contextual Embedding)을 만들면 되지 않나?!'라고 생각하실 겁니다. 네, 맞습니다! 이제부터 등장하는 모델들은 바로 이 문맥(Context)을 반영하기 위한 치열한 도전의 결과물입니다.
3. [Deep Dive] seq2seq + Attention: "필요한 부분만 다시 보자"
고정 임베딩의 '다의어' 문제와 Seq2Seq의 '병목 현상'을 동시에 해결하기 위한 혁명적인 아이디어가 등장합니다. 바로 어텐션(Attention)입니다. 디코더가 단어를 생성할 때마다 인코더의 모든 시점을 다시 들여다보고, "지금 이 단어를 만들 때 어떤 단어에 집중해야 할까?"를 실시간으로 계산합니다. 덕분에 똑같은 "차"라도 주변 문맥에 따라 참조하는 정보가 달라지며 정보 손실 또한 획기적으로 줄어들었습니다.
병목 현상'은 완화했으나, 여전히 순차적 연산 방식이라 학습이 느리고, 히든 스테이트에 정보가 누적되며 섞이는 정보 희석 문제는 여전함.
🔥 Bahdanau Attention (바다나우, 2014)
최초의 어텐션으로, 'Additive(더하기)' 기반 방식입니다. 그래서 모든 단어를 같은 비중으로 압축하지 말고, 번역하는 데에 중요한 단어만 큰 비중을 줘서 성능을 높여보자며 Dzmitry Bahdanau가 Attention을 제안합니다.
- 핵심 원리: 디코더가 $t$ 시점의 단어를 예측할 때, 이전 시점의 은닉 상태($s_{t-1}$)를 활용합니다.
- 작동 순서:
- $s_{t-1}$과 인코더의 모든 은닉 상태($h_i$)를 결합(Concat)합니다.
- 이를 신경망($W_a$)에 통과시켜 점수(Score)를 냅니다.
- 소프트맥스를 거쳐 가중치(Attention Weight)를 얻고, 이를 이용해 컨텍스트 벡터를 만듭니다.
- 위치: 생성된 컨텍스트 벡터가 디코더 RNN의 다음 시점 입력으로 들어갑니다. 즉, 연산 순서가 [Attention] -> [RNN] 입니다.
Bahdanau Attention의 문제라면 T 스텝에서 Decoder의 Hidden State를 구하기 위해 T-1 스텝의 Hidden State를 사용해야 한다는 것이었죠. 이는 재귀적으로 동작하는 RNN에 역행하는 연산이므로 효율적이지 못했습니다. 이를 개선하고자 한 것이 Luong이 제안한 Attention 기법입니다!
🔥 Luong Attention (루옹, 2015)
바다나우를 더 단순하고 강력하게 개량한 'Multiplicative(곱하기)' 기반 방식입니다.
- 핵심 원리: 디코더가 일단 현재 시점의 은닉 상태($s_t$)를 먼저 계산한 뒤, 이 최신 정보를 바탕으로 어텐션을 수행합니다.
- 스코어 계산의 유연성: 단순 내적(Dot), 행렬 곱(General), 더하기(Concat) 등 3가지 함수를 제안했습니다.
- Dot: $score(s_t, h_i) = s_t^T h_i$ (가장 빠름)
- 위치: 어텐션 결과가 디코더의 출력층 직전에 결합됩니다. 연산 순서가 [RNN] -> [Attention] 입니다.
- Local Attention: 전체 문장이 아닌 특정 윈도우만 보는 방식을 추가하여 연산 효율성을 극대화했습니다.
💡 실전 문맥 임베딩의 등장: ELMo (2018)
어텐션이 '필요한 곳을 보는 기술'을 제안했다면, 이를 이용해 실제로 문맥에 따라 단어의 숫자를 바꿔버린 첫 번째 스타는 ELMo였습니다.
- 핵심 원리: 문장을 정방향(앞에서 뒤로)과 역방향(뒤에서 앞으로)으로 각각 읽는 2개의 LSTM을 사용합니다.
- 차별점: 똑같은 '차'라는 단어도 주변 문맥에 따라 다른 벡터값을 가집니다. 덕분에 드디어 "타는 차"와 "마시는 차"를 숫자로 구분할 수 있게 되었습니다.
- 의의: "단어 벡터는 고정된 것이 아니라, 문장에 따라 실시간으로 생성되어야 한다"는 패러다임을 확립하며 BERT와 GPT 시대의 문을 열었습니다.
4. Transformer: "RNN은 필요 없다, Attention이 전부다"
트랜스포머는 여기서 한 발 더 나갑니다. RNN처럼 순차적으로 읽지 않고, 문장 내 모든 단어 간의 관계를 한꺼번에 계산하는 Self-Attention을 통해 완벽한 Contextual Embedding을 구현합니다. 이제 단어는 고정된 숫자가 아니라, 문장 안에서 주변 단어들과 상호작용하며 매번 새로운 의미(벡터값)로 재탄생하게 됩니다.
💡 혁신적인 패러다임 시프트
RNN의 순차적 연산을 아예 제거했습니다. 대신 문장 내 모든 단어끼리 서로의 관계를 직접 계산하는 Self-Attention과, 단어의 위치 정보를 수치화해 더해주는 포지셔널 인코딩(Positional Encoding)을 도입하여 순차적 구조 없이도 완벽하게 순서 정보를 보존했습니다.
- 병렬 연산: 문장 전체를 한꺼번에 처리하여 학습 속도가 비약적으로 빨라졌습니다.
- 정보 선명도: 정보를 옆으로 전달하며 섞이지 않고, 각 위치에서 다른 단어들을 직접 참조하므로 정보의 왜곡이나 손실이 거의 없습니다.
- 결과: 이 구조는 현재 우리가 사용하는 GPT, BERT 등 모든 거대 언어 모델(LLM)의 표준 엔진이 되었습니다.
🏁 중간 정리: 1세대 엔진의 완성
언어 모델의 역사는 '정보의 병목'을 깨부수고 '기억의 한계'를 넓혀온 과정이었습니다.
- N-gram이 단순한 빈도를 셌다면,
- Word2Vec은 의미를 부여했고,
- RNN/LSTM은 흐름을 추적했으며,
- Attention은 집중할 곳을 찾았고,
- Transformer는 그 집중의 힘만으로 언어의 지도를 완성했습니다.
5. Pre-training & Fine-tuning: "교과서로 먼저 배우고, 문제집을 푼다"
트랜스포머라는 강력한 엔진이 발명된 후, 인류는 이를 사용하는 '방법론'에 주목했습니다. 단순히 특정 작업(번역 등)을 시키는 게 아니라, 일단 세상의 모든 글을 읽게 만드는 단계가 추가되었습니다.
- BERT (2018): 트랜스포머의 인코더를 활용. 문장의 중간을 빈칸으로 만들고 맞히게 하는 '마스크 언어 모델(MLM)'을 통해 문맥을 양방향으로 이해하는 천재를 만들었습니다. 앞뒤 문맥을 모두 보는 양방향(Bi-directional) , 문장의 의미를 추출하는데 강점
- GPT-1, 2 (2018~2019): 트랜스포머의 디코더를 활용. 다음 단어를 예측하는 것만으로도 인간의 글쓰기를 흉내 낼 수 있음을 증명했습니다. 이전 단어들로 다음 단어를 맞히는 단방향(Uni-directional/Autoregressive) 생성, 그러니까 문장을 생성
- 의의: 특정 태스크(분류, 번역)를 위해 모델을 처음부터 만드는 시대가 가고, 이미 공부가 끝난 '사전학습 모델(Pre-trained Model)'을 가져와 살짝만 수정(Fine-tuning)하는 시대로 접어들었습니다.
6. Scaling Law: "크기가 곧 지능이다"
2020년 GPT-3의 등장은 기술적 구조만큼이나 '규모(Scale)'가 중요하다는 것을 일깨워주었습니다.
- 매개변수(Parameter)의 폭발: 모델의 크기, 데이터의 양, 연산량이 일정 수준을 넘어서면, 가르치지 않은 논리적 추론이나 코딩 능력이 갑자기 나타나는 창발적 능력(Emergent Abilities)이 발견되었습니다.
- RLHF (인간 피드백 기반 강화학습): 단순히 다음 단어를 잘 맞히는 것을 넘어, '인간의 의도'에 맞는 대답을 하도록 정렬(Alignment)하는 기술이 추가되었습니다. (ChatGPT의 핵심 기술)
- 최근에는 모델 전체를 돌리는 대신 특정 질문에 특화된 전문가(Expert) 신경망만 깨우는 MoE(Mixture of Experts) 구조로 효율성을 극대화하고 있습니다."
7. Next Step: "트랜스포머를 넘어서?" (최신 흐름)
현재 트랜스포머가 왕좌를 지키고 있지만, 여전히 해결해야 할 숙제들이 있습니다.
- Context Window의 한계: 문장이 길어질수록 연산량이 제곱($N^2$)으로 늘어나는 트랜스포머의 비효율성(어텐션의 연산 복잡도)을 극복하려는 시도들입니다.
- Mamba & State Space Models (SSM): RNN처럼 선형적인 연산 효율성을 가지면서도 트랜스포머급 성능을 내는 새로운 구조들이 등장하며 '포스트 트랜스포머' 시대를 준비하고 있습니다.
🏁 최종 요약 표
시대 핵심 모델 학습 방식 패러다임의 전환 통계 기반 N-gram 카운트 및 확률 "출현 빈도가 곧 확률이다" 초기 신경망 Word2Vec 단어 임베딩 [예측] 단어의 의미를 벡터로 수치화(고정 임베딩의 한계) 순차 처리 RNN / LSTM 시퀀스 순환 [기억] 이전 정보를 상태(State)에 저장 문맥 혁명 ELMo 양방향 LSTM [문맥] 단어의 의미가 문장에 따라 변함 (문맥 임베딩의 시초) 집중 전략 Attention 가중치 계산 [선택] 중요한 단어 정보만 다시 보기(문맥 기반 참조 시작) 병렬 혁명 Transformer Self-Attention [관계] 단어 간 유기적 관계 연산 ($N^2$)(완전한 문맥 임베딩 구현) 거대 모델 GPT / BERT 사전학습(Pre-train) [창발] 규모가 커지면 지능이 나타남 효율성/차세대 MoE / Mamba 전문가 선택 / SSM [최적화] 비용 감소와 무한한 문맥 확장 'AI' 카테고리의 다른 글
GPT(Generative Pre-Training Transformer) (0) 2026.03.10 NLP 데이터 증강 (1) 2026.03.06 Transformer (0) 2026.02.24 Seq2Seq의 한계를 넘어서: Attention 메커니즘 (0) 2026.02.23 LSTM(Long Short-Term Memory) (1) 2026.02.22