## 1. 언어 모델(Language Model)의 핵심 개념
슬라이드 아래쪽의 '개념' 섹션부터 살펴보겠습니다. 언어 모델이 무엇인지에 대한 정의입니다.
- "자연어 입력 -> '통계학적'으로 가장 적절한 출력값을 찾아내는 모델"
- 설명: 언어 모델은 사람이 쓰는 말(자연어)을 컴퓨터가 이해하고 처리할 수 있도록 만든 모델입니다. 이때, 정답이 하나로 정해진 규칙 기반이 아니라, 방대한 텍스트 데이터를 학습해서 통계적으로 가장 확률이 높은 단어나 문장을 찾아냅니다.
- 예시: "저는 오늘 아침에 맛있는 사과를" 이라는 문장 다음에 올 단어를 예측할 때, 데이터상 '먹었어요'가 '달렸어요'보다 훨씬 많이 나왔기 때문에 '먹었어요'가 더 적절하다고 판단하는 식입니다.
- "단어 시퀀스에 '확률'을 할당하는 모델: 단어 시퀀스가 얼마나 자연스러운지 평가"
- 설명: 언어 모델의 핵심 기능은 문장의 자연스러움을 확률로 평가하는 것입니다. 문법에 맞고 의미가 통하는 문장일수록 높은 확률값을 가집니다.
- 예시:
- P("나는 학교에 갑니다") -> 높은 확률 (자연스러운 문장)
- P("학교에 나는 갑니다 나는") -> 낮은 확률 (어색한 문장)
- 응용: 이 원리를 이용해 번역기나 챗봇이 여러 후보 문장 중 가장 자연스러운 문장을 선택하게 됩니다.
- "언어 모델링: 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업"
- 설명: 이것이 바로 언어 모델을 훈련시키는 가장 기본적인 작업입니다. 앞 단어들이 주어졌을 때, 빈칸에 들어갈 다음 단어를 맞추는 퀴즈를 계속 푸는 것과 같습니다.
- 예시: "공부를 열심히 하면 시험에..." 라는 문장에서 빈칸에 '합격할' 이라는 단어를 예측하는 작업입니다.
- "최종 태스크 해결을 위한 네트워크 구조 및 학습목표 정의에 활용"
- 설명: 언어 모델은 그 자체로도 쓰이지만, 다른 더 복잡한 인공지능 모델의 '기초 두뇌' 역할을 합니다. 예를 들어, 감성 분석, 챗봇, 기계 번역 같은 특정 작업을(Final Task) 해결하기 위해 미리 잘 훈련된 언어 모델(Pretrained Model)을 가져와서 약간만 추가 학습(Fine-tuning)시켜 사용하는 경우가 많습니다.
## 2. 언어 모델의 발전 과정
슬라이드 가장 아래에 있는 기술의 흐름입니다. 시험에 순서나 각 모델의 특징을 묻기 좋습니다.
- 통계 기반: n-gram
- 개념: 단어들의 순서를 n개씩 묶어서 그 등장 횟수를 세는 방식입니다. 예를 들어, 2-gram(bigram)은 두 단어씩, 3-gram(trigram)은 세 단어씩 묶어서 확률을 계산합니다.
- 한계: n개의 단어만 고려하므로 문맥을 넓게 파악하지 못하고, 학습 데이터에 한 번도 등장하지 않은 단어 조합은 확률이 0이 되는 **'희소성 문제(Sparsity Problem)'**가 있습니다.
- 인공신경망 기반: Neural LM → Seq2Seq → Attention → Pretrained Models → LLM
- Neural LM (신경망 언어 모델): n-gram의 한계를 극복하기 위해 등장했습니다. 단어를 벡터(숫자의 배열)로 표현(임베딩)하여 단어 간의 의미적 유사성을 학습하고, 더 긴 문맥을 이해할 수 있게 되었습니다.
- Seq2Seq (시퀀스-투-시퀀스): 문장 같은 시퀀스(Sequence)를 입력받아 번역문 같은 다른 시퀀스를 출력하는 구조입니다. 인코더와 디코더로 구성되며, 기계 번역 분야에 큰 발전을 가져왔습니다.
- Attention (어텐션): Seq2Seq 모델의 성능을 획기적으로 개선한 메커니즘입니다. 번역할 때 문장의 특정 단어에 더 '집중(Attention)'해서 관련성 높은 정보를 활용하도록 만들어, 긴 문장의 번역 품질을 크게 높였습니다. 현대 언어 모델의 가장 핵심적인 기술 중 하나입니다.
- Pretrained Models (사전학습 모델): 거대한 데이터로 미리 훈련된 범용 언어 모델입니다. (예: BERT, GPT) 이 모델들을 특정 작업에 맞게 약간만 추가 학습(미세 조정, Fine-tuning)하면 높은 성능을 낼 수 있어 효율적입니다.
- LLM (거대 언어 모델): 사전학습 모델의 규모(파라미터, 데이터)를 엄청나게 키운 모델들입니다. (예: GPT-3, GPT-4)
## 3. 언어 모델 예시: ELMo
슬라이드 위쪽의 ELMo 모델에 대한 설명입니다.
- ELMo (Embeddings from Language Models)
- 핵심 특징: '깊은 문맥을 반영한 단어 표현' (Deep Contextualized Word Representations)
- 설명: ELMo 이전의 Word2Vec 같은 모델들은 'bank'라는 단어가 '강둑'이든 '은행'이든 항상 같은 벡터값을 가졌습니다. 하지만 ELMo는 문장 전체의 문맥을 파악해서 같은 단어라도 문맥에 따라 다른 벡터값을 부여합니다. 이것이 바로 '문맥화된 임베딩(Contextualized Embedding)'이며, 언어 모델 역사에서 매우 중요한 혁신입니다.
- 작동 방식:
- 양방향 LSTM (bi-LSTM): 문장을 처음부터 끝으로 (the → mat) 한 번, 그리고 끝에서 처음으로 (mat → the) 또 한 번, 총 두 방향으로 읽습니다.
- 결합: 이 두 방향의 정보를 모두 합쳐서 각 단어의 의미를 최종적으로 결정합니다. 덕분에 단어의 앞뒤 문맥을 모두 풍부하게 이해할 수 있게 됩니다.
- 수식 log p(word | all words before word): 이것은 정방향 언어 모델의 목표를 나타냅니다. 즉, '이전 단어들이 주어졌을 때 현재 단어가 나타날 로그 확률'을 최대화하며 학습한다는 의미입니다. ELMo는 정방향과 역방향 모델을 함께 사용합니다.
## 🦉 시험 대비 최종 요약 (핵심 암기 포인트)
- 언어 모델이란? 문장의 확률을 계산하고, 다음 단어를 예측하는 통계적 모델.
- 언어 모델의 역할: 문장이 얼마나 자연스러운지 확률로 평가한다.
- n-gram vs. 신경망: n-gram은 단어 빈도수 기반, 신경망은 단어의 의미와 문맥을 벡터로 학습.
- ELMo의 가장 큰 기여: **'문맥을 이해하는' 단어 벡터(임베딩)**를 만들었다. (양방향 학습 덕분)
- 현대 언어 모델의 핵심: Attention 메커니즘과 사전학습(Pre-training) 패러다임.
언어 모델의 두 가지 핵심 역할과, 그 역할이 실제로 어떻게 응용되는지에 대한 예시들입니다.
## 1. 언어 모델의 두 가지 핵심 역할 (Two Core Roles of a Language Model)
언어 모델을 훈련하고 사용하는 방식은 크게 두 가지로 나눌 수 있습니다. 이 둘의 차이점은 시험에 나올 확률이 매우 높으니 꼭 구분해서 알아두세요.
1) 다음 단어 예측 (Next Word Prediction)
- 개념: 문장의 앞부분이 주어졌을 때, 바로 다음에 올 단어를 맞추는 방식입니다. 마치 문장 이어가기 퀴즈와 같습니다.
- 예시: "오늘 점심 메뉴는..." 이라는 문장을 주고, 다음에 올 단어인 "김치찌개"를 예측하도록 학습시킵니다.
- 대표 모델: GPT 계열의 모델들이 이 방식을 사용합니다. 그래서 글을 생성하고, 질문에 답하고, 대화를 이어가는 등의 작업(생성 모델)에 강점을 보입니다.
- 슬라이드 표현: "이전 단어들이 주어졌을 때 다음 단어 예측"
2) 마스크된 단어 예측 (Masked Language Modeling, MLM)
- 개념: 문장 중간에 무작위로 구멍(Mask)을 뚫어놓고, 그 빈칸에 들어갈 원래 단어를 맞추는 방식입니다. 영어 빈칸 채우기 문제와 똑같습니다.
- 예시: "오늘 점심 메뉴는 [MASK]입니다." 라는 문장을 주고, [MASK] 토큰에 "김치찌개"가 들어가야 함을 맞추도록 학습시킵니다.
- 핵심 특징: 다음 단어만 보는 것이 아니라, 빈칸의 앞뒤 문맥을 모두 동시에 고려해서 단어를 예측합니다. 따라서 문장의 전체적인 의미를 이해하는 능력이 뛰어납니다.
- 대표 모델: BERT 계열의 모델들이 이 방식을 사용하며, 문장의 의미를 파악해 분류하거나 분석하는 작업에 특히 강력합니다.
- 슬라이드 표현: "가운데 빈 칸에 해당하는 단어 예측"
## 2. 확률 할당을 통한 언어 모델의 응용 (Applications of Language Models via Probability Assignment)
이제 언어 모델이 '가장 자연스러운 문장에 높은 확률을 부여하는' 핵심 원리를 이용해 어떤 문제들을 해결하는지 살펴보겠습니다. 모든 예시의 공통점은 **"여러 후보 중, 언어 모델이 가장 자연스럽다고 판단(가장 높은 확률을 부여)하는 것을 정답으로 선택한다"**는 것입니다.
1) 기계 번역 (Machine Translation)
- 상황: "I took the bus." 라는 문장을 번역해야 합니다. 영어 단어 'take'는 '타다', '가지고 가다', '태우다' 등 다양한 뜻을 가집니다.
- 언어 모델의 역할: 번역기는 가능한 후보 문장들을 만듭니다.
- 후보 1: "나는 버스를 탔다."
- 후보 2: "나는 버스를 태웠다." (내가 운전해서 다른 사람을 태워준다는 의미)
- 확률 비교: 언어 모델이 두 문장의 자연스러움을 평가합니다. 일반적으로 '버스를 타다'라는 표현이 '버스를 태우다'보다 훨씬 자연스럽고 흔하게 쓰입니다.
- P(나는 버스를 탔다) > P(나는 버스를 태웠다)
- 결과: 확률이 더 높은 "나는 버스를 탔다."가 최종 번역문으로 선택됩니다.
2) 오타 교정 (Spell Correction)
- 상황: 사용자가 "오늘 날시가 좋다." 라고 오타를 입력했습니다.
- 언어 모델의 역할: 오타 교정기는 '날시'와 비슷한 단어들을 후보로 올립니다.
- 후보 1: "오늘 날시가 좋다."
- 후보 2: "오늘 날씨가 좋다."
- 확률 비교: 언어 모델이 두 문장의 자연스러움을 평가합니다. '날씨'는 한국어에 없는 단어이므로 문맥상 매우 어색합니다.
- P(오늘 날가 좋다) < P(오늘 날씨가 좋다)
- 결과: 확률이 훨씬 높은 "오늘 날씨가 좋다."를 올바른 문장으로 판단하여 오타를 수정해 줍니다.
3) 음성 인식 (Speech Recognition)
- 상황: 주변 소음 등으로 인해 음성 인식이 불분명할 때, 발음이 비슷한 단어들 사이에서 혼동이 생깁니다. 예를 들어 "나는 메론을 먹는다" 라는 음성이 들어왔는데, 시스템은 '메론'과 '메롱'을 헷갈려 합니다.
- 언어 모델의 역할: 인식된 소리를 바탕으로 가능한 텍스트 후보들을 만듭니다.
- 후보 1: "나는 메론을 먹는다."
- 후보 2: "나는 메롱을 먹는다."
- 확률 비교: 언어 모델이 두 문장이 얼마나 말이 되는지를 평가합니다. '메론(과일)을 먹는 것'은 매우 상식적이고 자연스러운 행동입니다. 반면 '메롱(장난)을 먹는 것'은 의미가 통하지 않습니다.
- P(나는 메론을 먹는다) > P(나는 메롱을 먹는다)
- 결과: 의미상 확률이 높은 "나는 메론을 먹는다."가 최종 인식 결과로 선택됩니다.
4) 정보 검색 (Information Retrieval/Search)
- 상황: 사용자가 검색창에 "비행기 예약" 이라고 입력합니다.
- 언어 모델의 역할: 이것은 다음 단어 예측(Next Word Prediction) 역할의 직접적인 응용입니다. 언어 모델은 "비행기 예약" 다음에 사람들이 가장 많이 검색했던, 즉 이어질 확률이 가장 높은 단어들을 예측하여 추천해 줍니다.
- 확률 비교 및 추천:
- "비행기 예약" 다음 단어 후보: 사이트, 방법, 가격, 이벤트 ...
- 이 중 가장 확률이 높은 단어들을 순서대로 보여주는 것이 자동 완성 기능입니다.
- 결과: 사용자는 타이핑을 덜 하고도 원하는 검색어를 더 빠르고 정확하게 완성할 수 있습니다.
## 🦉 시험 대비 최종 요약 (Key Exam Takeaways)
- 언어 모델의 2대 학습법:
- GPT 계열 (생성): 다음 단어 예측 (문장 이어가기)
- BERT 계열 (이해): 마스크된 단어 예측 (빈칸 채우기, 양방향 문맥 이해)
- 언어 모델의 핵심 응용 원리:
- 여러 가능한 후보(번역문, 교정 단어, 인식 결과)를 생성한다.
- 언어 모델이 각 후보의 자연스러움을 확률로 계산한다.
- 가장 높은 확률을 가진 후보를 최종 결과로 선택한다.
- 이 원리는 기계 번역, 오타 교정, 음성 인식 등 다양한 분야에서 정확도를 높이는 데 결정적인 역할을 한다.
## 1. "자연스러움"의 재정의와 수학적 접근
✅ 핵심 개념 복습 및 추가
이전 슬라이드에서 언어 모델은 문장의 '자연스러움'을 평가한다고 배웠습니다. 첫 번째 슬라이드는 여기에 중요한 단서를 하나 더 추가합니다.
- "자연스럽다"는 것은 태스크(task) 및 사람의 의도에 따라 다르게 정의된다.
- 설명: 이 말은 '자연스러움'의 기준이 절대적이지 않다는 뜻입니다. 예를 들어,
- 챗봇: 친구처럼 친근하고 짧은 문장이 '자연스러운' 문장입니다.
- 논문 요약: 학술적이고 객관적인 문체가 '자연스러운' 문장입니다.
- 법률 문서: 딱딱하고 논리적인 문체가 '자연스러운' 문장입니다.
- 핵심: 즉, 언어 모델은 주어진 목적에 맞는 가장 적절한 문장을 찾아내도록 훈련됩니다.
- 설명: 이 말은 '자연스러움'의 기준이 절대적이지 않다는 뜻입니다. 예를 들어,
✅ 자연스러움을 숫자로 바꾸기: 조건부 확률
컴퓨터는 '자연스럽다'는 추상적인 개념을 이해하지 못합니다. 그래서 이것을 **'확률(Probability)'**이라는 숫자로 바꿔서 계산합니다.
- 조건부 확률 (Conditional Probability)로 표현 가능
- 설명: 언어 모델의 핵심 아이디어입니다. 문장의 자연스러움은 **"이전 단어들이 주어졌을 때, 특정 단어가 다음에 등장할 확률"**을 계산함으로써 측정할 수 있습니다.
- 예시: "나는 버스를" 이라는 단어들이 주어졌을 때, 다음에 "탔다"가 나올 확률은 높고, "날았다"가 나올 확률은 매우 낮을 것입니다. 이 확률값이 바로 그 문장의 자연스러움을 나타내는 척도(기준)가 됩니다.
## 2. 언어 모델의 핵심 수식 완전 정복 📐
이제 언어 모델이 문장 전체의 자연스러움을 어떻게 계산하는지 그 공식을 살펴보겠습니다. 여기가 가장 중요합니다!
✅ 문장 확률 P(W)와 확률의 연쇄 법칙 (Chain Rule)
우리의 목표는 문장 전체(W)가 나타날 확률, 즉 P(W)를 구하는 것입니다.
- 정의:
- 하나의 문장(단어 시퀀스) W는 n개의 단어로 이루어져 있습니다:* 문장 전체의 출현 확률은 모든 단어가 순서대로 함께 나타날 **결합 분포(Joint Distribution)**로 표현됩니다:
- 핵심 공식 (확률의 연쇄 법칙): 문장 전체의 확률 P(W)는 각 단어의 조건부 확률을 순서대로 모두 곱한 값과 같습니다.
- Π (파이): 이 기호는 모든 항을 곱하라는 의미입니다.
- P(w_i | w_1, ..., w_{i-1}): 1번째부터 i-1번째 단어까지 등장했을 때, i번째 단어가 등장할 조건부 확률입니다.
- 예시로 쉽게 이해하기: "I love you" 라는 문장의 확률을 계산해 봅시다.
- W = {I, love, you}
- P(I love you) = P(I) * P(love | I) * P(you | I, love)
- P(I): 문장이 "I"로 시작할 확률.
- P(love | I): 문장이 "I"로 시작했을 때, 다음 단어가 "love"일 확률.
- P(you | I, love): 문장이 "I love"로 시작했을 때, 다음 단어가 "you"일 확률.
## 3. 조건부 확률 복습 및 NLP에서의 활용
슬라이드 마지막 부분은 조건부 확률의 기본 정의와 NLP에서의 의미를 설명합니다.
- 조건부 확률의 정의:
- 사건 B가 이미 일어났다고 가정했을 때, 사건 A가 일어날 확률
- 수식:
- NLP에서의 활용 (이것이 핵심!):
- B (조건): 문맥 (Context), 즉 이전에 등장한 단어들 (w_1, ..., w_{i-1})
- A (사건): 새로운 단어 (New Word), 즉 다음에 등장할 단어 (w_i)
## 🦉 시험 대비 최종 요약 (Key Exam Takeaways)
- 자연스러움 = 확률: 언어 모델에게 '자연스럽다'는 것은 곧 **'확률이 높다'**는 의미입니다.
- 핵심 계산 도구: 조건부 확률 P(다음 단어 | 이전 단어들)
- 문장 전체 확률 계산법: **확률의 연쇄 법칙(Chain Rule)**을 사용하여, 각 단계의 조건부 확률을 처음부터 끝까지 모두 곱합니다. (P(W) = P(w1) * P(w2|w1) * P(w3|w1,w2) * ...)
- 조건부 확률 P(A|B)와 NLP의 관계:
- B는 문맥(Context)
- A는 새로운 단어(New Word)
## 1. 확률의 연쇄 법칙 (Chain Rule): 문장을 확률로 분해하기
첫 번째 슬라이드는 문장 전체의 확률을 어떻게 계산하는지 다시 한번 보여줍니다.
- 핵심 원리: 문장 전체가 등장할 확률은, 각 단어가 이전 문맥 하에서 등장할 조건부 확률들을 모두 곱한 것과 같습니다.
- 수식:
- 슬라이드 예시 분석: "아침에 버스를 타고 학교에 왔다"라는 문장의 확률 계산
- 이 문장의 자연스러움(확률)은 아래 5개 확률의 곱으로 계산됩니다.
- P(아침에): 문장이 '아침에'로 시작할 확률
- P(버스를 | 아침에): '아침에' 다음에 '버스를'이 나올 확률
- P(타고 | 아침에 버스를): '아침에 버스를' 다음에 '타고'가 나올 확률
- P(학교에 | 아침에 버스를 타고): '아침에 버스를 타고' 다음에 '학교에'가 나올 확률
- P(왔다 | 아침에 버스를 타고 학교에): '아침에 버스를 타고 학교에' 다음에 '왔다'가 나올 확률
- 이 문장의 자연스러움(확률)은 아래 5개 확률의 곱으로 계산됩니다.
- 🔑 최종 결론: 이 곱셈의 결과, 즉 최종 확률값이 높을수록 우리 모델은 이 문장을 **"더 자연스럽다"**고 평가합니다.
## 2. 통계 기반 언어 모델: 확률을 '카운트'로 계산하기
그렇다면 P(타고 | 아침에 버스를) 같은 조건부 확률 값은 어떻게 알아낼까요? 통계 기반 언어 모델(n-gram 모델 등)은 아주 간단한 방법을 사용합니다. 바로 전체 텍스트 데이터(Corpus)에서 직접 단어의 등장 횟수(카운트)를 세는 것입니다.
- 핵심 계산 공식:
- 공식 해설:
- 분모 count(w_1, ..., w_{t-1}): 문맥에 해당하는 단어 뭉치 (예: "아침에 버스를")가 전체 데이터에서 총 몇 번 등장했는가?
- 분자 count(w_1, ..., w_{t-1}, w_t): 그 문맥 뒤에 우리가 궁금해하는 다음 단어(예: "타고")까지 붙은 전체 뭉치 (예: "아침에 버스를 타고")가 총 몇 번 등장했는가?
- 쉬운 예시: P(cream | ice)를 계산해 봅시다.
- 데이터 전체에서 "ice"라는 단어가 총 1000번 나왔다고 가정합니다. (count(ice) = 1000)
- 그중에서 "ice" 바로 다음에 "cream"이 나온 경우, 즉 "ice cream"이 총 800번 나왔다고 가정합니다. (count(ice cream) = 800)
- 계산 결과: P(cream | ice) = 800 / 1000 = 0.8 (80%) 이 됩니다.
## 3. 통계 기반 모델의 치명적 한계: 희소성 문제 (Sparsity Problem) 😥
카운트 기반 방식은 직관적이고 간단하지만, 매우 치명적인 약점을 가지고 있습니다.
- 문제점: 문장이 조금만 길어져도, 해당 문장이 학습 데이터에 한 번도 등장하지 않았을 확률이 매우 높습니다.
- 예시: P(왔다 | 아침에 버스를 타고 학교에)를 계산하려면, 분모인 count(아침에 버스를 타고 학교에) 값을 알아야 합니다. 하지만 우리가 가진 수많은 책과 뉴스 기사 데이터 전체를 뒤져봐도 "아침에 버스를 타고 학교에"라는 구절이 정확히 똑같이 등장한 적이 한 번도 없을 수 있습니다.
- 결과 (희소성 문제):
- 분모가 0이 되는 문제: 문맥에 해당하는 구절이 데이터에 없으면 count가 0이 되어 확률 계산 자체가 불가능해집니다. (0으로 나누기 오류)
- 분자가 0이 되는 문제: 문맥은 있었지만 그 다음에 특정 단어가 온 적이 없다면, 확률이 0이 됩니다. 이는 문법적으로 완벽한 문장이라도 처음 보는 문장이면 부자연스럽다고 판단해버리는 심각한 문제를 낳습니다.
- 결론: 이 희소성 문제 때문에 통계 기반 언어 모델은 처음 보는 문장이나 긴 문장에 대한 일반화 성능이 매우 떨어집니다. 이것이 바로 현대 언어 모델들이 단순히 카운트하는 대신, 단어의 의미를 벡터로 학습하는 신경망(Neural Network) 기반으로 발전하게 된 가장 중요한 이유입니다.
## 🦉 시험 대비 최종 요약
- 연쇄 법칙 (Chain Rule): 문장 전체의 확률을 구하기 위해 조건부 확률들을 곱하는 수학적 규칙.
- 통계 기반 모델의 계산법: 조건부 확률을 단어 등장 횟수를 세서 (카운트 기반으로) 계산한다. (분자: 전체 시퀀스 카운트 / 분모: 문맥 시퀀스 카운트)
- 희소성 문제 (Sparsity Problem): 통계 기반 모델의 가장 큰 단점. 문장이 길어지면 데이터에 해당 구절의 카운트가 0이 되어, 처음 보는 문장에 대한 확률 계산이 불가능하거나 부정확해진다. 이 문제를 해결하기 위해 신경망 언어 모델이 등장했다.
'코딩공부 > 자연어처리' 카테고리의 다른 글
| 내가 시험공부하려고 만든 자연어처리-신경망 기반 언어 모델 (0) | 2025.10.09 |
|---|---|
| 내가 시험공부하려고 만든 자연어처리-n-gram (1) | 2025.10.09 |
| 내가 시험공부하려고 만든 자연어처리-ELMo,BERT (1) | 2025.10.09 |
| 내가 시험공부하려고 만든 자연어처리-유도 바이어스(Inductive Bias,RNN,Transformer) (0) | 2025.10.09 |
| 내가 시험공부하려고 만든 자연어처리-동적임베딩의 필요성 (0) | 2025.10.09 |