일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pip
- github
- Stanford
- natural_language_processing
- text
- Standford
- seq2seq
- git
- cs231n
- computer
- linux
- terminal
- deeplearning
- paper_review
- error
- machinelearning
- computer_setting
- gensim
- review
- nlp
- cs224n
- slideshare
- tab
- Vim
- code
- language_model
- Ai
- install
- Statistics
- json
- Today
- Total
NLP/AI/Statistics
Smoothing 기법: Laplace(add-one) smoothing, Back-off smoothing 본문
통계적 언어 모델 과 N-gram 언어모델 은 희소 문제가 발생하며,
이러한 문제를 해결하기 위한 generalization기법으로 smoothing 기법이 있다.
Smoothing기법 중 대표적인 laplace smoothing과 back-off smoothing 기법에 대하여 소개하고자 한다.
우선, smoothing 이란 확률값이 0이 되지 않도록 하여 문장 생성 확률이 정의되지 않는 문제를 해결하기 위한 방법이다.
1) Laplace(add-one) smoothing
Laplace smoothing 기법은 단어의 출현 빈도에 1을 더하여 빈도가 0이되는 경우가 없도록 한다.
n-gram 언어 모델의 식에서 분모에 단어집합의 수를 더하고, 분자에 1을 더하여 표현하며,
각 n-gram에 따른 식은 아래와 같다.
기존의 unigram 식: $P(w_{i}) = \frac{count(w_{i})}{N}$
변형된 unigram 식: $P_{LP}(w_{i}) = \frac{count(w_{i})+1}{N+V}$
기존의 bigram 식: $P(w_{n}|w_{n-1}) = \frac{count(w_{n}|w_{n-1})}{count(w_{n-1})}$
변형된 bigram 식: $P_{LP}(w_{n}|w_{n-1}) = \frac{count(w_{n}|w_{n-1})+1}{count(w_{n-1})+V}$
이 때, $N$은 단어 집합의 모든 unigram 토큰 빈도 수의 합을 의미하며 $V$는 단어 집합의 전체 토큰 수를 의미한다.
2) Back-off smoothing
Back-off smoothing기법은 학습 데이터에 출현하지 않는 n-gram의 확률을 (n-1)-gram의 확률로부터 추정하는 방법이다.
n-gram으로 일반화된 back-off smoothing 기법의 식은 아래와 같다.
$$P_{BO}(w_{n}|w_{n-N+1}, ..., w_{n-1}) = \cases{P(w_{n}|w_{n-N+1}, ..., w_{n-1}), \ \ if \ count(w_{n-1}), ..., count(w_{n}) > 0\\ P_{BO}(w_{n}|w_{n-N+2}, ..., w_{n-1})}$$
이 때, 여러 n에 대한 n-gram 단어 집합을 함께 사용할 경우 전체 확률의 합이 1이 넘는 문제가 발생할 수 있다.
그렇기 때문에 위의 식에 discount라는 개념을 추가해야한다.
discount는 각 n-gram에 대하여 적절한 값을 곱하여 보정하는 역할로,
만약 Back-off를 적용할 때 $w_n$에 대한 빈도가 0이 아닌 경우, 해당 확률값을 그대로 사용하고,
만약 $w_n$에 대한 빈도가 0이어서 한단계 낮은 n-gram에 대한 값을 사용해야할 떄, distribution function인 $\alpha$를 곱해준다.
이러한 방식으로 distribution function을 적용한 개념을 Katz back-off라고 하며,
이에 대한 식은 아래와 같이 정의된다.
$$P_{BO}(w_{n}|w_{n-N+1}, ..., w_{n-1}) = \cases{P(w_{n}|w_{n-N+1}, ..., w_{n-1}), \ \ if \ count(w_{n-1}), ..., count(w_{n}) > 0 \\ \alpha(w_{n-N+1}, ..., w_{n-1})P_{BO}(w_n|w_{n-N+2}, ..., w_{n-1})}$$
이 때, $\alpha$는 확률의 총합이 1이 되도록 하기 위한 정규화 계수이다.
$$\alpha = (1-\sum_{N(w_{i-2}^{i}) > 0} P(w_{i}|w_{i-1}))^{-1}$$
위와 같이 재귀적 특성으로 이전 n-gram 정보를 사용한다.
'NLP' 카테고리의 다른 글
Word Representation: TF-IDF (0) | 2020.10.15 |
---|---|
Word Representation: Bag-of-Words (0) | 2020.10.12 |
Language Model: N-gram 언어모델 (0) | 2020.09.29 |
Language Model: 통계적 언어 모델 (0) | 2020.09.29 |
Tokenization: 어절, 형태소, 음절, 자모 단위 토큰화 (0) | 2020.09.22 |