반응형

Language Model
단어를 얻을 확률을 구하는 것
NLP의 궁극적인 task는 다음 단어가 올 확률을 구하는 것이다.
과거의 언어모델
p(x) = p(x1)*p(x2|x1)*p(x3|X1,X2) =>

한 단어의 확률을 예측할 때 전의 모든 단어의 확률을 곱하여 사용했다.
rule
- p(xi) >=0
- 모든 확률의 합은 =1
- [BOS]시 문장시작 [EOS]시 문장종료
모델의 역사
- before 2000s : n-gram
- 2000s-2018s: Rnns,Cnns 여러 task가 있었으면 각각 그에 맞게 만들었다.
- 2018s-2022s: transformer(bert,gpt-2)
bert라는 언어모델을 공개하였고, bert를 가져와서 재조정하여 쓸 수 있었다.
근간이 되는 model이 있고, 이를 미세조정하여 사용하였다. - 2022s-now: Generalist larg language model(LLMS): 하나의 model이 다른 task를 다룰 수 있다.
N-gram

위의 수식에서 (xi-N+1)로 시작하게 된다. 즉 n-1개까지 보겠다는 것이다.
N-grams
unigram(n=1)
bigram(n=2)
trigram(n=3)

ex)
1. unigram
[BOS]의 확률
[BOS] i am a kid [EOS]
전체단어수 6
[BOS]의 수 1
px= 1/6
즉 이렇게 구하게 되면 he is a man 이 확률보다 [BOS][BOS][BOS][BOS]의 확률이 더 높아져서, 확률이 이상해진다.
2. bigram
[BOS] The cat is on the mat [EOS]
[BOS] I have a cat and a mat [EOS]
[BOS] I like the cat [EOS]
[BOS]의 개수 3개
[BOS]뒤에 i가 나온 개수
p("I"|[BOS])= 2/3
3. Trigram 바이그램과 n개 차이
문제점
unigram에서 bigram , Trigram으로 갈수록 확률이 작아지는 Sparsity 문제가 생김.
해결방법
smoothing
확률이 0으로 나온 것을 다 1로 만들어주자.

모두 1을 더했으니 |V|로 나눠주는 것이 필수 이다.
Add-k Smoothing
1을 모두 더해주니 power가 너무 강하다는 문제가생김
해결법

1보다 작은 소수 값 k를 더해준다.
k???
머신러닝에서 파라메타값을 구하듯 training/validation/test 셋으로 나누고 loss를 통해서 k값을 구한다.
앙상블 모델
Unigram,bigram,n-grams 모두 섞어서 쓴다.
Smoothing via backoff

n의 개수가 큰 모델부터 사용하여 있으면 통과시키고 없으면 n을 낮춘 모델을 사용한다.
만일 n을 내렸을때도 n이 0이된다면 [UNK] UNKOWN토큰을 두고 실제 학습에서 배제시킨다.
단어가 없는 이유?
기술 발전으로 인해 없는 단어가 생겼을 수 있다.
언어모델 평가
Perplexity

언어모델의 성능을 표시하는 지표이다.
이는저 수식에 Exp과 Log를 취해서 -1/n을 밖으로빼내고 log의 합으로 파이를 시그마로 변환하면 편하다.
Intrinsic metrics
내재적 퀄리티(텍스트를 잘 이해하는가?)
extrinsic metrics
직접적/구체적인 task를 적용하여, 얼마나 성능이 나오는가?
반응형
'AI' 카테고리의 다른 글
| 태태개발일지 - 자연어처리(역사, dense vector,skip-gram) (0) | 2026.04.05 |
|---|---|
| 태태코딩 - 자연어처리(word-net, tf,df,idf,pmi) (0) | 2026.03.28 |
| 태태코딩 - 기계학습(개요) (0) | 2026.03.14 |
| 태태코딩 - 개발자를 위한 AI 알고리즘 서평 이벤트 (0) | 2025.12.25 |
| 태태개발일지 - AI 대학원 면접 준비자료(deep learning) (0) | 2025.10.19 |