๐ ๋ชฉ์ฐจ
1. preview
2. N-gram
3. Language Model Metric
4. SRILM ํ์ฉํ N-gram ์ค์ต
5. NNLM (BOS, EOS)
6. Language Model์ ํ์ฉ (Speech Recognition / ๊ธฐ๊ณ๋ฒ์ญ / OCR ๋ฑ)
๐ ๊ธ์ ๋ง์น๋ฉฐ...
1. Preview
1.1 LM (Language Model)
์ธ์ด๋ชจ๋ธ(LM; Language Model)์ ๋ฌธ์ฅ์ ํ๋ฅ ์ ๋ํ๋ด๋ ๋ชจ๋ธ์ด๋ค.
ํ๋ฅ ๊ฐ์ ํตํด ๋ฌธ์ฅ ์์ฒด์ ์ถํํ๋ฅ , ์ด์ ๋จ์ด๋ค์ ๋ํด ๋ค์๋จ์ด๋ฅผ ์์ธกํ ์ ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์ฅ์ด ์ผ๋ง๋ ์์ฐ์ค๋ฝ๊ณ ์ ์ฐฝํ์ง(fluent) ๊ณ์ฐํ ์ ์๋ค.
1.2 Hell ๋์ด๋, ํ๊ตญ์ด
โ ํ๊ตญ์ด: ๋ํ์ ์ธ ๊ต์ฐฉ์ด
โ ์์ด: ๊ณ ๋ฆฝ์ด(+ ๊ตด์ ์ด)
โ ์ค๊ตญ์ด: ๊ณ ๋ฆฝ์ด
๊ต์ฐฉ์ด์ ํน์ง์ ๋จ์ด์ ์๋ฏธ๋ ์ญํ ์ ์ด์๋ณด๋ค๋ ๋จ์ด์ ๋ถ์ฐฉ๋๋ ์ด๋ฏธ๊ฐ์ ์ ์ฌ๋ ์กฐ์ฌ์ ์ํด ๊ฒฐ์ ๋๋ค.
์ฆ, ๋จ์ด์ ์ด์์ด ์ค์ํ์ง์๊ณ ์๋ต ๋ํ ๊ฐ๋ฅํ๊ธฐ์ ๋จ์ด๊ฐ์ ํ๋ฅ ๊ณ์ฐ ์ ๋ถ๋ฆฌํ๋ค.
์์ด๋ ๊ธฐํ ๋ผํด์ด ๊ธฐ๋ฐ ์ธ์ด๋ค์ ์ด์์ด ๋ ๊ท์น์ ์ด๊ธฐ์ ํ๊ตญ์ด์ ๋นํด ํท๊ฐ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋ฎ๋ค.
์ถ๊ฐ์ ์ผ๋ก ํ๊ตญ์ด๋ ๊ต์ฐฉ์ด์ ํน์ง์ ์ ์ฌ ๋ฐ ์กฐ์ฌ๋ก ๋จ์ด์ ์๋ฏธโ์ญํ ์ด ๊ฒฐ์ ๋๊ธฐ์ ์๋์ ๊ฐ์ด ์ฌ๋ฌ ์กฐ์ฌ๊ฐ ๋ถ์ด ์๋ง์ ๋จ์ด๋ก ํ์๋ ์ ์๋ค.
ex) ํ๊ต์, ํ๊ต์์, ํ๊ต์์๋, ํ๊ต๋ฅผ, ํ๊ต๋ก, ํ๊ต๊ฐ, ํ๊ต์กฐ์ฐจ๋, . . .
๋ฐ๋ผ์ ์ด๋ฏธ๋ฅผ ๋ถ๋ฆฌํด์ฃผ์ง ์์ผ๋ฉด ์ดํ์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋๊ธฐ์ ํฌ์์ฑ์ด ๋์์ ธ ๋ฌธ์ ํด๊ฒฐ์ด ๋ ์ด๋ ค์์ง ์ ์๋ค.
1.3 ๋ฌธ์ฅ์ ํ๋ฅ ํํ
๋ฌธ์ฅ์ ํ๋ฅ ์ Bayes ์ ๋ฆฌ์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ ํ๋ฅ ์ ํํํ ์ ์๋ค.
(์ฐธ๊ณ : https://chan4im.tistory.com/199#n2)
2. N-gram
์ ์ฒด ๋จ์ด๋ฅผ ์กฐํฉํ๋ ๋์ , ๋ฐ๋ก ์์ ์ผ๋ถ ์กฐํฉ๋ง ์ถํ๋น๋๋ฅผ ๊ณ์ฐํด ํ๋ฅ ์ ์ถ์ ํ๋ ๋ฐฉ๋ฒ (์ด๋, N = k+1)
2.1 Sparse Data Problem
LM์ ๋ฌธ์ฅ์ ํ๋ฅ ์ ์์์ผ๋ก ๋ํ๋ด๊ณ , ํด๋นํ๋ฅ ์ ๊ทผ์ฌํ๊ธฐ ์ํด ์์งํ corpus์์ ๊ฐ word sequence ๋น๋๋ฅผ ๊ณ์ฐํ๋ฉด ๋๋ค.
ํ์ง๋ง, ํ๋ฅ ์ถ์ ์น๋ฅผ ์ ๋๋ก ๊ตฌํ๊ธฐ๋ ์ด๋ ค์ด ๋ฌธ์ ์ด๋ค.
์๋ง์ ๋จ์ด๋ฅผ crawlingํ๋๋ผ๋, ์ ์ด์ ์ถํ๊ฐ๋ฅํ ๋จ์ด์ ์กฐํฉ์ ๊ฒฝ์ฐ์ ์๋ ํจ์ฌ ๋ ํฌ๊ธฐ ๋๋ฌธ์ด๋ค.
๋จ์ด์ ์กฐํฉ์ด ์กฐ๊ธ๋ง ๊ธธ์ด์ง๋๋ผ๋,
corpus์์ ์ถํ๋น๋๋ฅผ ๊ตฌํ ์ ์๊ธฐ์ ๋ถ์๊ฐ 0์ด๋์ด ํ๋ฅ ์ด 0์ด๋๊ฑฐ๋,
์ฌ์ง์ด ๋ถ๋ชจ๊ฐ 0์ด๋์ด ์ ์๋ถ๊ฐ๋ฅ์ด๋ผ ํ ์๋ ์๋ค.
๋ฌผ๋ก ์ด์๋ํด, ์ฐจ์์ ์ ์ฃผ์ ํฌ์์ฑ์ ๋ํด ๋ฏธ๋ฆฌ ๋ค๋ฃจ๊ธด ํ๋ค.
โ ๋จ์์ฑ & ๋ชจํธ์ฑ(https://chan4im.tistory.com/196)
โ word embedding (https://chan4im.tistory.com/197#n2)
2.2 Markov Assumption
corpus์์ word sequence์ ๋ํ ํ๋ฅ ์ ํจ๊ณผ์ ์ผ๋ก ์ถ์ ํ๋ ค๋ฉด ํฌ์์ฑ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ค.
์ด๋, Markov ๊ฐ์ (Markov Assumption)์ ๋์ ํ๋ค.
Markov ๊ฐ์ ์ด๋??
ํน์ ์์ ์ ์ํํ๋ฅ ์ ๋จ์ง ๊ทธ ์ง์ ์ํ์๋ง ์์กดํ๋ค๋ ๋ ผ๋ฆฌ.
์ฆ, ์์ ์ถํํ ๋ชจ๋ ๋จ์ด๋ฅผ ์ดํด๋ณผ ํ์์์ด,
์์ k๊ฐ์ ๋จ์ด(= ๋ฐ๋ก ์ง์ ์ํ)๋ง ๋ณด๊ณ ๋ค์ ๋จ์ด์ ์ถํํ๋ฅ ์ ๊ตฌํ๋ ๊ฒ.
์์ผ๋ก ๋ํ๋ด๋ฉด ์์ ๊ฐ์๋ฐ, ์ด๋ ๊ฒ ์กฐ๊ฑด์ ๊ฐ์ํํด ์ค์ ๋ก ๊ตฌํ๊ณ ์ํ๋ ํ๋ฅ ์ ๊ทผ์ฌํ๋ค.
๋ณดํต k๋ 0~3์ ๊ฐ์ ๊ฐ๋๋ค.(k=2๋ผ๋ฉด, ์ 2๊ฐ๋จ์ด๋ฅผ ์ฐธ์กฐํด ๋ค์ ๋จ์ด xi์ ํ๋ฅ ์ ๊ทผ์ฌํด ๋ํ๋ธ๋ค.)
์ฌ๊ธฐ์ Chain Rule์ ์ ์ฉํ๊ณ ๋ก๊ทธํ๋ฅ ๋ก ํํํ๋ฉด ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ ์ฒด ๋จ์ด๋ฅผ ์กฐํฉํ๋ ๋์ , ๋ฐ๋ก ์์ ์ผ๋ถ ์กฐํฉ๋ง ์ถํ๋น๋๋ฅผ ๊ณ์ฐํด ํ๋ฅ ์ ์ถ์ ํ๋ ๋ฐฉ๋ฒ์ N-gram์ด๋ผ ๋ถ๋ฅธ๋ค. (์ด๋, N = k+1)
corpus์ ์๊ณผ N์ ์์น๋ ๋ณดํต ๋น๋กํ๋๋ฐ,
N์ด ์ปค์ง์๋ก ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง train corpus์ ์กด์ฌํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ์ ์ ํํ ์ถ์ ์ด ์ด๋ ค์์ง๋ค.
๋ฐ๋ผ์ ๋ณดํต 3-gram์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ฉฐ, train data๊ฐ ๋งค์ฐ ์ถฉ๋ถํ๋ค๋ฉด, 4-gram์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.(์ฌ์ค ๊ทธ๋ ๊ฒ ํฐ ํจ์จ์ฑ์ ์์)
k (N=k+1) N-gram ๋ช ์นญ 0 1-gram uni-gram 1 2-gram bi-gram 2 3-gram tri-gram
โต 4-gram์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํฌ๊ฒ ์ค๋ฅด์ง ์์ง๋ง ๋จ์ด ์กฐํฉ์ ๊ฒฝ์ฐ์ ์๋ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ
ex) 3-gram
โ 3-gram์ ๊ฐ์ ์ ๋ฐ๋ผ, ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ ๋จ์ด์ ์ถํ๋น๋์ ์ 2๊ฐ์ ์ถํ๋น๋๋ง ๊ตฌํ๋ฉด xi์ ํ๋ฅ ์ ๊ทผ์ฌํ ์ ์๋ค.
์ฆ, ๋ฌธ์ฅ์ ์ฒด์ ํ๋ฅ ์ ๋นํด Markov๊ฐ์ ์ ๋์ ํ๋ฉด, ๋ฌธ์ฅ์ ํ๋ฅ ์ ๊ทผ์ฌํ ์ ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด, train corpus์์ ๋ณด์ง๋ชปํ ๋ฌธ์ฅ์ ๋ํด์๋ ํ๋ฅ ์ ์ถ์ ํ ์ ์๋ค.
2.3 Generalization
train data์ ์๋ unseen sample์ ์์ธก๋ฅ๋ ฅ (= ์ผ๋ฐํ ๋ฅ๋ ฅ)์ ์ฑ๋ฅ์ด ์ข์ฐ๋๋ค.
N-gram์ญ์ Markov๊ฐ์ ์ ๋์ ์ผ๋ก ํฌ์์ฑ์ ๋์ฒํ๋ ์ผ๋ฐํ๋ฅ๋ ฅ์ ์ด๋์ ๋ ๊ฐ๋๋ค.
๋์ฑ ์ผ๋ฐํ ๋ฅ๋ ฅ์ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ์ดํด๋ณด๋๋ก ํ์.
Smoothing & Discounting
์ถํ ํ์๋ฅผ ๋จ์ํ ํ๋ฅ ๊ฐ์ผ๋ก ์ถ์ ํ๋ค๋ฉด...?
train corpus์ ์ถํํ์ง ์๋ ๋จ์ด corpus์ ๋์ฒ๋ฅ๋ ฅ์ด ์ ํ๋๋ค.
์ฆ, unseen word sequence๋ผ๊ณ ํด์ ํ๋ฅ ์ 0์ผ๋ก ์ถ์ ํด๋ฒ๋ฆฌ๊ฒ ๋๋ค.
∴ ์ถํ๋น๋๊ฐ(word frequency)์ด๋ ํ๋ฅ ๊ฐ์ ๋์ฑ ๋ค๋ฌ์ด(smoothing)์ค์ผ ํ๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ชจ๋ word sequence์ ์ถํ๋น๋์ 1์ ๋ํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์์์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ด ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ด์ง๋ง, LM์ฒ๋ผ ํฌ์์ฑ ๋ฌธ์ ๊ฐ ํด ๊ฒฝ์ฐ ์ฌ์ฉ์ ๋น์ ์ ํ๋ค.
์ด์ ๊ด๋ จํด Naïve Bayes ๋ฑ์ ํ์ฉํ๋ ๋ด์ฉ์ ์ ์ ๋ค๋ค๋ค.(https://chan4im.tistory.com/199#n2)
Kneser-Ney Discounting
Smoothing์ ํฌ์์ฑ๋ฌธ์ ํด๊ฒฐ์ ์ํด KN(Kneser-Ney) Discounting์ ์ ์ํ๋ค.
โ๏ธํต์ฌ ์์ด๋์ด
โ ๋จ์ด w๊ฐ ๋ค๋ฅธ ๋จ์ด v์ ๋ค์ ์ถํ ์, ์ผ๋ง๋ ๋ค์ํ ๋จ์ด ๋ค์์ ์ถํํ๋์ง(= ์ฆ, v๊ฐ ์ผ๋ง๋ ๋ค์ํ ์ง)๋ฅผ ์์๋ด๋ ๊ฒ
โ ๋ค์ํ ๋จ์ด ๋ค์ ๋ํ๋๋ ๋จ์ด์ผ์๋ก unseen word sequence๋ก ๋ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ด๋ค.
KN Discounting์ Scorecontinuation์ ๋ค์๊ณผ ๊ฐ์ด ๋ชจ๋ธ๋งํ๋๋ฐ,
์ฆ, w์ ํจ๊ป ๋ํ๋ v๋ค์ ์งํฉ์ธ {v:Count(v,w)>0}์ ํฌ๊ธฐ๊ฐ ํด์๋ก Scorecontinuation์ ํด ๊ฒ์ด๋ผ ๊ฐ์ ํ๋ค.
์์์ ์๋์ ๊ฐ๋ค.
์์ ์์์ ์๋์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํํด๋ณด์.
w์ ํจ๊ป ๋ํ๋ v๋ค์ ์งํฉ {v : Count(v:w)>0}์ ํฌ๊ธฐ๋ฅผ
์ ์ฒด ๋จ์ด ์งํฉ์ผ๋ก๋ถํฐ samplingํ w'∈W์ผ๋ v, w'๊ฐ ํจ๊ป ๋ํ๋ ์งํฉ{v:Count(v,w')>0}์ ํฌ๊ธฐํฉ์ผ๋ก ๋๋๋ค.
์์์ ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ฐ๋ฆฐ bi-gram์ ์ํ PKN์ ์๋ ์์์ฒ๋ผ ์ ์ํ ์ ์๋ค.
์ด๋, d๋ ์์๋ก ๋ณดํต 0.75์ ๊ฐ์ ๊ฐ๋๋ค.
์ด์ฒ๋ผ KN Discounting์ ๊ฐ๋จํ ์ง๊ด์์ ์ถ๋ฐํด ๋ณต์กํ ์์์ ๊ฐ๋๋ค.
์ฌ๊ธฐ์ ์ฝ๊ฐ์ ์์ ์ ๊ฐ๋ฏธํ, Modified-KN Discounting์ด ๋ณดํธ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
cf) ์ธ์ด๋ชจ๋ธํดํท(SRILM)์ ๊ตฌํ๋์ด์๋ ๊ธฐ๋ฅ์ ํตํด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
Interpolation
๋ค์์ LM์ฌ์ด์ ์ ํ๊ฒฐํฉ(interpolation)์ ํตํด LM์ ์ผ๋ฐํํด๋ณด์.
LM์ interpolation์ด๋, 2๊ฐ์ ์๋ก๋ค๋ฅธ LM์ ์ ํ์ ์ผ๋ก ์ผ์ ๋น์จ(λ)๋ก ์์ด์ฃผ๋ ๊ฒ์ด๋ค.
ํน์ ์์ญ์ ํนํ๋ LM๊ตฌ์ถ ์, interpolation์ ๊ต์ฅํ ์ ์ฉํ๋ฐ, ํน์ ์์ญ์ ์์ corpus๋ก ๋ง๋ LM๊ณผ ์์์ผ๋ก์จ ํน์ ์์ญ์ ํนํ๋ LM์ ๊ฐํํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์๋ฃ๋ถ์ผ์์ฑ์ธ์์ด๋ ๊ธฐ๊ณ๋ฒ์ญ์์คํ ๊ตฌ์ถ์ ๊ฐ์ ํด๋ณด์.
๊ธฐ์กด์ ์ผ๋ฐ ์์ญ corpus๋ฅผ ํตํด ์์ฑํ LM์ด๋ผ๋ฉด ์๋ฃ์ฉ์ดํํ์ด ๋ฏ์ค ์ ์๋ค.
๋ฐ๋๋ก ํนํ์์ญ์ corpus๋ง ์ฌ์ฉํด LM์ ์์ฑํ๋ค๋ฉด, generalization๋ฅ๋ ฅ์ด ์ง๋์น๊ฒ ๋จ์ด์ง ์ ์๋ค.
โ ์ผ๋ฐ ์์ญ
- P(์ง์ ์ | ์ค๋น,๋) = 0.00001
- P(์ฌ๋์ด | ์ค๋น,๋) = 0.01
โ ํนํ ์์ญ
- P(์ง์ ์ | ์ค๋น,๋) = 0.09
- P(์ฝ | ์ค๋น,๋) = 0.04
โ interpolation ๊ฒฐ๊ณผ
- P(์ง์ ์ | ์ค๋น,๋) = 0.5*0.09 + (1-0.5)*0.00001 = 0.045005
๊ฒฐ๊ตญ ์ผ๋ฐ์ ์ธ ์๋ฏธ์๋ ๋ค๋ฅธ ๋ป์ ๋จ์ด๊ฐ ๋์ฌ์๋ ์๊ณ , ์ผ๋ฐ์ ์ธ ๋ํ์์๋ ํฌ์ํ word sequence๊ฐ ํจ์ฌ ์์ฃผ ๋ฑ์ฅํ ์๋ ์๋ค.
๋ํ, ํนํ์์ญ์ corpus์๋ ์ผ๋ฐ์ ์ธ word sequence๊ฐ ๋งค์ฐ ๋ถ์กฑํ ๊ฒ์ด๋ค.
์ด๋ฐ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ ์์ญ์ corpus๋ก ์์ฑํ LM์ ์์ด์ฃผ์ด ํด๋น์์ญ์ ํนํํ ์ ์๋ค.
Back-Off
๋๋ฌด ๊ธธ๊ฑฐ๋ ๋ณต์กํ word sequence๋์ค์ train corpus์์ ๊ต์ฅํ ํฌ์ํ๋ค.
๋ฐ๋ผ์ Markov ๊ฐ์ ์ ํตํด ์ผ๋ฐํ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, Back-Off๋ฐฉ์์ ํ๋จ๊ณ ๋ ๋์๊ฐ ๋ฐฉ์์ด๋ค.
์๋ ์์์ ๋ณด๋ฉด, ํน์ N-gram์ ํ๋ฅ ์ N๋ณด๋ค ๋ ์์ sequence์ ๋ํด ํ๋ฅ ์ ๊ตฌํด interpolation์ ์งํํ๋ค.
์๋ฅผ ๋ค์ด 3-gram์ ํ๋ฅ ์ ๋ํด 2-gram, 1-gram์ ํ๋ฅ ์ interpolation์ ํ ๋, ์ด๋ฅผ ์์์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ด N๋ณด๋ค ๋ ์์ sequence์ ํ๋ฅ ์ ํ์ฉํจ์ผ๋ก์จ ๋ ๋์ smoothing&generalization ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
2.4 Conclusion
N-gram๋ฐฉ์์ ์ถํ๋น๋๋ฅผ ํตํด ํ๋ฅ ์ ๊ทผ์ฌํ๊ธฐ์ ๋งค์ฐ ์ฝ๊ณ ๊ฐํธํ๋ค.
Prob)
๋ค๋ง ๋จ์ ๋ํ ๋ช ํํ๋ฐ, train corpus์ ๋ฑ์ฅํ์ง ์๋ ๋จ์ด corpus์ ๊ฒฝ์ฐ, ํ๋ฅ ์ ์ ํํ ์ ์ ์๋ค.
Sol)
๋ฐ๋ผ์ Markov ๊ฐ์ ์ ํตํด ๋จ์ด ์กฐํฉ์ ํ์ํ ์กฐ๊ฑด์ ๊ฐ์ํํ ์ ์๊ณ
๋ ๋์๊ฐ Smoothing, Back-Off ๋ฑ์ผ๋ก ๋จ์ ์ ๋ณด์ํ์๋ค.
ํ์ง๋ง ์ฌ์ ํ ๊ทผ๋ณธ์ ํด๊ฒฐ์ฑ ์ ์๋๋ฉฐ, ํ์ฌ DNN์ ๋์ ์ ์์ฑ์ธ์, ๊ธฐ๊ณ๋ฒ์ญ์ ์ฌ์ฉ๋๋ LM์ ํฐ ๋น์ ๊ฐ์ ธ๋ค ์ฃผ์๋ค.
DNN์๋์์๋ ์ฌ์ ํ N-gram๋ฐฉ์์ ๊ฐ๋ ฅํ๊ฒ ์ฌ์ฉ๋ ์ ์๋๋ฐ, ๋ฌธ์ฅ์ ์์ฑํ๋ ๊ฒ์ด ์๋, ์ฃผ์ด์ง ๋ฌธ์ฅ์ ์ ์ฐฝ์ฑ(fluency)์ ์ฑ์ ํ๋ ๋ฌธ์ ๋ผ๋ฉด, ๊ตณ์ด ๋ณต์กํ DNN์ด ์๋๋๋ผ๋ N-gram๋ฐฉ์์ด ์ฌ์ ํ ์ข์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
(DNN์ด ์ป๋ ์ฌ์ํ ์ด๋์ ๋งค์ฐ ๊ท์ฐฎ๊ณ ์ด๋ ค์ด ์ผ์ด ๋ ๊ฒ.)
3. LM - Metrics
3.1 PPL (Perplexity)
LM์ ํ๊ฐ์ฒ๋์ธ perplexity(PPL)์ ์ธก์ ํ๋ ์ ๋ํ๊ฐ(extrinsic evaluation) ๋ฐฉ๋ฒ์ด๋ค.
PPL์ ๋ฌธ์ฅ์ ๊ธธ์ด๋ฅผ ๋ฐ์, ํ๋ฅ ๊ฐ์ ์ ๊ทํํ ๊ฐ์ด๋ค.
๋ฌธ์ฅ์ ํ๋ฅ ๊ฐ์ด ๋ถ๋ชจ์ ์๊ธฐ์ ํ๋ฅ ๊ฐ์ด ๋์์๋ก PPL์ ์์์ง๋ค.
๋ฐ๋ผ์ PPL๊ฐ์ด ์์์๋ก, N-gram์ N์ด ํด์๋ก ๋ ์ข์ ๋ชจ๋ธ์ด๋ค.
3.2 PPL์ ํด์
์ถํํ๋ฅ ์ด n๊ฐ๋ผ๋ฉด, ๋งค time-step์ผ๋ก ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๊ฐ n์ธ PPL๋ก
PPL์ ์ผ์ข ์ n๊ฐ์ branch์ ์(๋ป์ด๋๊ฐ๋ ์)๋ฅผ ์๋ฏธํ๊ธฐ๋ ํ๋ค.
ex) 20,000๊ฐ์ vocabulary๋ผ๋ฉด, PPL์ 20,000์ด๋ค. (๋จ, ๋จ์ด์ถํํ๋ฅ ์ด ๋ชจ๋ ๊ฐ์๋)
ํ์ง๋ง ๋ง์ฝ 3-gram๊ธฐ๋ฐ LM์ผ๋ก ์ธก์ ํ PPL์ด 30์ด ๋์๋ค๋ฉด
ํ๊ท ์ ์ผ๋ก 30๊ฐ์ ํ๋ณด๋จ์ด ์ค์ ํท๊ฐ๋ฆฌ๊ณ ์๋ค๋ ๊ฒ์ผ๋ก
๋ค์ ๋จ์ด ์์ธก ์, 30๊ฐ์ ํ๋ณด๊ตฐ์ค ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ๋ก ์ ์ ์๋ค.
3.3 PPL๊ณผ Entropy์ ๊ด๊ณ
์์ ์ธ๊ธํ๋ฏ, ์ ๋ณด๋์ ํ๊ท ์ ์๋ฏธํ๋ Entropy์ ๊ฒฝ์ฐ,
โ ์ ๋ณด๋์ด ๋ฎ์ผ๋ฉด ํ๋ฅ ๋ถํฌ๋ sharpํ ๋ชจ์์ด๊ณ
โ ์ ๋ณด๋์ด ๋์ผ๋ฉด ํ๋ฅ ๋ถํฌ๋ flatํ ๋ชจ์์ด ๋๋ค.
๋จผ์ ์ค์ LM์ ๋ถํฌ P(x)๋ ์ถํ๊ฐ๋ฅ๋ฌธ์ฅ๋ค์ ์งํฉ W์์ ๊ธธ์ด n์ ๋ฌธ์ฅ w1:n์ sampling ์, ์ฐ๋ฆฌ์ LM๋ถํฌ Pθ(x)์ entropy๋ฅผ ๋ํ๋ธ ์์์ ์๋์ ๊ฐ๋ค.
์ฌ๊ธฐ์ ๋ชฌํ ์นด๋ฅผ๋ก(Monte Carlo) sampling์ ํตํด ์์ ์์์ ๊ทผ์ฌ์ํฌ ์ ์๋ค.
์์์ ๊ฐ์ด entropy H์์ ๊ทผ์ฌ์ํฌ ์ ์์ง๋ง, ์ฌ์ค ๋ฌธ์ฅ์ sequential data์ด๊ธฐ์
entropy rate๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ์๋์ฒ๋ผ ๋จ์ด๋น ํ๊ท entropy๋ก ๋ํ๋ผ ์ ์๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก Monte Carlo sampling์ ์ ์ฉํ ์ ์๋ค.
์ด ์์์ ์กฐ๊ธ๋ง ๋ ๋ฐ๊พธ๋ฉด, ์๋์ ๊ฐ๋ค.์ฌ๊ธฐ์ PPL ์์์ ์๊ฐํด๋ณด๋ฉด ์์ Cross-Entropy๋ก๋ถํฐ ๋์ถํ ์์๊ณผ ๋น์ทํ ํํ์์ ์ ์ ์๋ค.
์ต์ข ์ ์ผ๋ก PPL๊ณผ CE์ ๊ด๊ณ๋ ์๋์ ๊ฐ๋ค.
∴ MLE๋ฅผ ํตํด parameter θ ํ์ต ์, CE๋ก ์ป๋ ์์ค๊ฐ์ exp๋ฅผ ์ทจํจ์ผ๋ก์จ PPL์ ์ป์ ์ ์๋ค.
4. SRILM์ ํ์ฉํ N-gram ์ค์ต
SRILM์ ์์ฑ์ธ์โsegmentationโMT(๊ธฐ๊ณ๋ฒ์ญ) ๋ฑ์ ์ฌ์ฉ๋๋ n-gram ๋ชจ๋ธ์ ์ฝ๊ฒ ๊ตฌ์ถํ๊ณ ์ ์ฉํ๋ฅํ Tool-kit์ด๋ค.
4.1 SRILM ์ค์นํ๊ธฐ
(http://www.speech.sri.com/projects/srilm/download.html)์์ ๊ฐ๋จํ ์ ๋ณด๋ฅผ ๊ธฐ์ , SRILM์ ๋ด๋ ค๋ฐ์ ์ ์๋ค.
์ดํ ์๋์ ๊ฐ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑ, ๊ทธ ์์ ์์ถํด์ ์งํ.
$ mkdir srilm $ cd ./srilm $ tar -xzvf ./srilm-1.7.2.tar.gzโ
๋๋ ํ ๋ฆฌ ๋ด๋ถ์ Makefile์ ์ด์ด 7๋ฒ์งธ ๋ผ์ธ์ SRILM์ ๊ฒฝ๋ก ์ง์ ํ ์ฃผ์์ ํด์ ํ๋ค.
์ดํ make๋ช ๋ น์ผ๋ก SRILM์ ๋น๋ํ๋ค.
$ vi ./Makefile 7๋ฒ์งธ ๋ผ์ธ์ SRILM์ ๊ฒฝ๋ก ์ง์ ํ ์ฃผ์์ ํด์ $ makeโ
build๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด PATH์ SRILM/bin ๋ด๋ถ์ ์๋กญ๊ฒ ์์ฑ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฑ๋ก ํ export
PATH = {SRILM_PATH}/bin/{MACHINE}:$PATH #PATH = /home/IHC/Workspace/nlp/srilm/bin/i686-m64:$PATH export PATHโ
์๋์ ๊ฐ์ด ngram-count์ ngram์ด ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ํ์ธํ๋ค.$ source ~/.profile $ ngram-count -help $ ngram -helpโ
4.2 Dataset ์ค๋น
์ด์ ์ ์ฒ๋ฆฌ ์ฅ์์ ๋ค๋ค๋ ๊ฒ์ฒ๋ผ ๋ถ์ ์ด ์๋ฃ๋ ํ์ผ์ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ๋ค.
์ดํ ํ์ผ์ train data์ test data๋ก ๋๋๋ค.
4.3 ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
SRILM์์ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ๋ค์ ์ฃผ์์ธ์ ์ค๋ช
โ ngram-count : LM ํ๋ จ โ vocab : lexicon file_name โ text : training corpus file_name โ order : n-gram count โ write : output count file_name โ unk : mark OOV as โ kndiscountn : Use Kneser -Ney discounting for N-grams of oerder n โ ngram : LM ํ์ฉ โ ppl : calculate perplexity for test file name โ order : n-gram count โ lm : LM file_nameโ
LM ๋ง๋ค๊ธฐ
ex) kndiscount๋ฅผ ์ฌ์ฉํ ์ํ์์ 3-gram์ ํ๋ จ,
LM๊ณผ LM์ ๊ตฌ์ฑํ๋ vocabulary๋ฅผ ์ถ๋ ฅํ๋ ๊ณผ์ $ time ngram-count -order 3 -kndiscount -text <text_fn> -lm <output_lm_fn> -write_vocab <output_vocab_fn> -debug 2โ
๋ฌธ์ฅ ์์ฑํ๊ธฐ
N-gram๋ชจ๋์ ์ฌ์ฉํด ๋ง๋ค์ด์ง LM์ ํ์ฉํด ๋ฌธ์ฅ์ ์์ฑํด๋ณด์.
๋ฌธ์ฅ ์์ฑ ์ดํ ์ ์ฒ๋ฆฌ(https://chan4im.tistory.com/195)์์ ์ค๋ช ํ๋ฏ, ๋ถ์ ์ ๋ณต์ํด์ค์ผ ํ๋ค.
์ด๋, ์๋ ์์๋ Linux์ pipeline์ ์ฐ๊ณํด sed๋ฅผ ํตํ ์ ๊ทํํ์์ ์ฌ์ฉํด ๋ถ์ ์ ๋ณต์ํ๋ค.$ ngram -lm <input_lm_fn> -gen <n_sentence_to_generate> | sed "s/ // g" | sed "s/__//g" | sed "s/_//g" | sed "s/^\s//g"โ
๋ง์ฝ, ํญ์ sed์ ์ ๊ทํํ์์ด ๊ท์ฐฎ๋ค๋ฉด ํ์ด์ฌ์ผ๋ก๋ ๊ฐ๋ฅํ๋ค.
ํ๊ฐ
์ฑ๋ฅ ํ๊ฐ์ ๊ฒฝ์ฐ, ์๋ ๋ช ๋ น์ ํตํด ์ํ๋ ์ ์๋ค.
$ ngram -ppl <test_fn> -lm <input_lm_fn> -order 3 -debug 2โ
์์ ๋ช ๋ น์ ์คํํ๋ฉด OoVs(Out of Vacabularies)์ ํด๋น test๋ฌธ์ฅ๋ค์ ๋ํ PPL์ด ์ถ๋ ฅ์ผ๋ก ๋์จ๋ค.
์ฃผ๋ก ๋ฌธ์ฅ์์ ๋ํด์ ํ๊ท ์ ๊ณ์ฐํ(pp1 ์๋) ppl์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
interpolation
SRILM์ ํตํด ๋จ์ Smoothing(= discounting)๋ฟ๋ง ์๋๋ผ Interpolation(๋ณด๊ฐ) ๋ํ ์ํํ ์ ์๋๋ฐ,
์ด ๊ฒฝ์ฐ์๋ ์์ฑ๋ 2๊ฐ์ ๋ค๋ฅธ LM์ด ํ์ํ๊ณ , ์ด๋ฅผ ์๊ธฐ์ํ hyper-parameter λ๊ฐ ํ์ํ๋ค.
์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด interpolation ์ํ์ด ๊ฐ๋ฅํ๋ค.
$ ngram -lm <input_lm_fn> -mix-lm <mix_lm_fn> -lambda <mix_ratio_between_0_and_1> -write-lm <output_lm_fn> -debug 2โ
interpolation ์ดํ ์ฑ๋ฅํ๊ฐ ์, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฑ๋ฅํฅ์์ ๊ฒฝํํ ์ ์์ผ๋ฉฐ λ๋ฅผ ํ๋ํจ์ผ๋ก์จ ์ฑ๋ฅํฅ์ ํญ์ ๋ ๋์ผ ์ ์๋ค.
5. NNLM
5.1 ํฌ์์ฑ ํด๊ฒฐํ๊ธฐ
N-gram๊ธฐ๋ฐ LM์ ๊ฐํธํ์ง๋ง ๊ธฐ์กด corpus train data์ ํด๋น N-gram์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ๋จ์ด์ ์กฐํฉ์๋ ์ถํ ๋น๋๋ฅผ ๊ณ์ฐํ ์ ์์ด์ ํ๋ฅ ์ ๊ตฌํ ์ ์๊ณ ํ๋ฅ ๊ฐ ๋น๊ต๋ฅผ ํ ์ ์๋ ๋ฑ ์๋นํ generalization์ ์ทจ์ฝํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
N-gram ๊ธฐ๋ฐ LM์ ์ฝ์ ์ ๋ณด์ํ๊ธฐ ์ํด NNLM์ด ๋์ค๊ฒ ๋์๋๋ฐ, NNLM(Neural Network Language Model)์ word embedding์ ์ฌ์ฉํด ๋จ์ด์ฐจ์์ถ์๋ฅผ ํตํด corpus์ ์ ์ฌํ dense vector๋ฅผ ํ์ตํ๊ณ , ๋ ๋์ ์ ์ฌ๋๋ฅผ ๊ฐ๊ฒ ํ์ฌ generalization ์ฑ๋ฅ์ ๋์์ผ๋ก์จ ํฌ์์ฑํด์(WSD)๊ฐ ๊ฐ๋ฅํ๋ค.
NNLM์ ๋ค์ํ ํํ๋ฅผ ๊ฐ์ง๋ง ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ํํํํ์ธ RNN๊ณ์ด์ LSTM์ ํ์ฉํ RNNLM๋ฐฉ์์ ๋ํด ์์๋ณด์.
5.2 RNNLM (RNN Language Model)
๊ธฐ์กด์ LM์ ๊ฐ๊ฐ์ ๋จ์ด๋ฅผ ๋ถ์ฐ์์ ๋ฐ์ดํฐ๋ก ์ทจ๊ธํด์ word sequence(๋จ์ด์กฐํฉ)์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ฉด ํฌ์์ฑ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช์๋ค. ๋ฐ๋ผ์ Markov๊ฐ์ ์ ํตํด n-1์ด์ ๊น์ง์ ๋จ์ด๋ง ์ฃผ๋ก ์กฐ๊ฑด๋ถ๋ก ์ฌ์ฉํด ํ๋ฅ ์ ๊ทผ์ฌ์์ผฐ๋ค.
ํ์ง๋ง RNNLM์ word embedding์ ํตํด dense vector๋ฅผ ์์ฑํ๊ณ
์ด๋ฅผ ํตํด ํฌ์์ฑ๋ฌธ์ ๋ฅผ ํด์ํ์ฌ ๋ฌธ์ฅ์ ์ฒซ ๋จ์ด๋ถํฐ ํด๋น ๋จ์ด ์ง์ ์ ๋จ์ด๊น์ง ๋ชจ๋ ์กฐ๊ฑด๋ถ์ ๋ฃ์ด ํ๋ฅ ์ ๊ทผ์ฌ์ํฌ ์ ์๋ค.
์ฌ๊ธฐ์ ๋ก๊ทธ๋ฅผ ๋ฃ์ ์๋ ์๋๋ฐ, π๋ฅผ ∑๋ก ๋ฐ๊พธ๊ณ ์๋ณ์ ๋ก๊ทธ๋ฅผ ์ทจํ๋ฉด ๋๋ค.
5.3 ๊ตฌํ ์์ ๋ฐ ์ค๋ช
์ด๋, ์ ๋ ฅ๋ฌธ์ฅ์ ์์๊ณผ ๋์๋ x0์ xn+1์ด ์ถ๊ฐ๋์ด BOS์ EOS๋ฅผ ๋ํ๋ธ๋ค.
์์์ ๊ณผ์ ๋ณ๋ก ์ค๋ช ํด๋ณด๋ฉด, ์๋์ ๊ฐ๋ค.
โ ๋จผ์ ๋ฌธ์ฅ x1:n[:-1]๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๋๋ค.
โ ์ดํ ๊ฐ time-step๋ณ ํ ํฐ xi๋ก ์๋ฒ ๋ฉ ๊ณ์ธต emb์ ๋ฃ๋๋ค.
โ ๊ทธ ํ ์ ํด์ง ์ฐจ์์ word embedding vector๋ฅผ ์ป๋๋ค.
โ๏ธ์ฃผ์์ ) EOS๋ฅผ ๋ผ๊ณ embedding layer์ input์ผ๋ก ๋ฃ์ด์ผํ๋ค.
โ๏ธBOS (Beginning of Sentence): BOS๋ ๋ฌธ์ฅ์ ์์์ ๋ํ๋ด๋ ํน๋ณํ ํ ํฐ ๋๋ ์ฌ๋ณผ๋ก ์ฃผ๋ก Seq2Seq๋ชจ๋ธ๊ณผ ๊ฐ์ ๋ชจ๋ธ์์ ์ ๋ ฅ ์ํ์ค์ ์์์ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
ex) ๊ธฐ๊ณ ๋ฒ์ญ ๋ชจ๋ธ์์ ๋ฒ์ญํ ๋ฌธ์ฅ์ ์์์ BOS ํ ํฐ์ผ๋ก ํ์ํ์ฌ ๋ชจ๋ธ์๊ฒ ๋ฌธ์ฅ์ ์์ํ๋ผ๊ณ ์๋ ค์ค ์ ์์ต๋๋ค.
โ๏ธEOS (End of Sentence): EOS๋ ๋ฌธ์ฅ์ ๋์ ๋ํ๋ด๋ ํน๋ณํ ํ ํฐ ๋๋ ์ฌ๋ณผ๋ก ์ฃผ๋ก Seq2Seq ๋ชจ๋ธ๊ณผ ๊ฐ์ ๋ชจ๋ธ์์ ์ถ๋ ฅ ์ํ์ค์ ๋์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ex) ๊ธฐ๊ณ ๋ฒ์ญ ๋ชจ๋ธ์ด ๋ฒ์ญ์ ๋ง์ณค์ ๋ EOS ํ ํฐ์ ์์ฑํ์ฌ ์ถ๋ ฅ ์ํ์ค๊ฐ ๋๋ฌ์์ ๋ํ๋ ๋๋ค.
RNN์ ํด๋น word_embedding_vector๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๊ณ
RNN์ hidden_state_size์ธ hidden_size์ vector๋ฅผ ๋ฐํํ๋ค.
์ด๋, pytorch๋ฅผ ํตํด ๋ฌธ์ฅ์ ๋ชจ๋ time-step์ ํ๋ฒ์ ๋ณ๋ ฌ๋ก ๊ณ์ฐํ ์ ์๋ค.
์ฌ๊ธฐ tensor์ linear layer์ softmax๋ฅผ ์ ์ฉํด ๊ฐ ๋จ์ด์ ๋ํ ํ๋ฅ ๋ถํฌ์ธ (x_hat)_i+1๋ฅผ ๊ตฌํ๋ค.
์ฌ๊ธฐ์ LSTM์ ์ฌ์ฉํด RNN์ ๋์ฒดํ ์ ์๋ค.
test dataset์ ๋ํด PPL์ ์ต์ํํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ฏ๋ก Cross Entropy Loss๋ฅผ ์ฌ์ฉํด optimizing์ ์งํํ๋ค.
์ด๋, ์ฃผ์ํ ์ ์ ์ ๋ ฅ๊ณผ ๋ฐ๋๋ก BOS๋ฅผ ์ ๊ฑฐํ ์ ๋ต์ธ x1:n[1:]์ ๋น๊ตํ๋ค๋ ๊ฒ์ด๋ค.
Pytorch ๊ตฌํ์์
import torch import torch.nn as nn import data_loader class LanguageModel(nn.Module): def __init__(self, vocab_size, word_vec_dim=512, hidden_size=512, n_layers=4, dropout_p=.2, max_length=255 ): self.vocab_size = vocab_size self.word_vec_dim = word_vec_dim self.hidden_size = hidden_size self.n_layers = n_layers self.dropout_p = dropout_p self.max_length = max_length super(LanguageModel, self).__init__() self.emb = nn.Embedding(vocab_size, word_vec_dim, padding_idx=data_loader.PAD ) self.rnn = nn.LSTM(word_vec_dim, hidden_size, n_layers, batch_first=True, dropout=dropout_p ) self.out = nn.Linear(hidden_size, vocab_size, bias=True) self.log_softmax = nn.LogSoftmax(dim=2) def forward(self, x): # |x| = (batch_size, length) x = self.emb(x) # |x| = (batch_size, length, word_vec_dim) x, (h, c) = self.rnn(x) # |x| = (batch_size, length, hidden_size) x = self.out(x) # |x| = (batch_size, length, vocab_size) y_hat = self.log_softmax(x) return y_hat def search(self, batch_size=64, max_length=255): x = torch.LongTensor(batch_size, 1).to(next(self.parameters()).device).zero_() + data_loader.BOS # |x| = (batch_size, 1) is_undone = x.new_ones(batch_size, 1).float() y_hats, indice = [], [] h, c = None, None while is_undone.sum() > 0 and len(indice) < max_length: x = self.emb(x) # |emb_t| = (batch_size, 1, word_vec_dim) x, (h, c) = self.rnn(x, (h, c)) if h is not None and c is not None else self.rnn(x) # |x| = (batch_size, 1, hidden_size) y_hat = self.log_softmax(x) # |y_hat| = (batch_size, 1, output_size) y_hats += [y_hat] # y = torch.topk(y_hat, 1, dim = -1)[1].squeeze(-1) y = torch.multinomial(y_hat.exp().view(batch_size, -1), 1) y = y.masked_fill_((1. - is_undone).byte(), data_loader.PAD) is_undone = is_undone * torch.ne(y, data_loader.EOS).float() # |y| = (batch_size, 1) # |is_undone| = (batch_size, 1) indice += [y] x = y y_hats = torch.cat(y_hats, dim=1) indice = torch.cat(indice, dim=-1) # |y_hat| = (batch_size, length, output_size) # |indice| = (batch_size, length) return y_hats, indice
5.4 Conclusion
NNLM์ word_embedding_vector๋ฅผ ์ฌ์ฉํด ํฌ์์ฑ๋ฌธ์ ํด๊ฒฐ์ ํฐ ํจ๊ณผ๋ฅผ ๋ณธ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก train dataset์ ์๋ ๋จ์ด์กฐํฉ์๋ ํ๋ฅญํ ๋์ฒ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ค๋ง, N-gram์ ๋นํด ๋ ๋ง์ cost๊ฐ ํ์ํ๋ค.
6. Language Model์ ํ์ฉ
Language Model์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋งค์ฐ ๋๋ฌผ๋ค.
๋ค๋ง, NLP์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋ผ ํ ์ ์๋ LM์ ๋งค์ฐ ์ค์ํ๋ฉฐ, ํ์ฌ DNN์ ํ์ฉํด ๋์ฑ ๋ฐ์ ํ๊ณ ์๋ค.
LM์ ์์ฐ์ด์์ฑ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋๋ ๋ชจ๋ธ์ด๋ฏ๋ก ํ์ฉ๋๋ ๋จ์ด์ง ์ง์ธ์ ์ค์์ฑ๊ณผ ์ญํ ์ด ๋ฏธ์น๋ ์ํฅ์ ๋ถ์ธํ ์ ์์ ๊ฒ์ด๋ค.
๋ํ์ ํ์ฉ๋ถ์ผ๋ ์๋์ ๊ฐ๋ค.
6.1 Speech Recognition
์ปดํจํฐ์ ๊ฒฝ์ฐ, ์์๋ณ ๋ถ๋ฅ์ ์ฑ๋ฅ์ ์ด๋ฏธ ์ฌ๋๋ณด๋ค ๋ฐ์ด๋๋ค.
ํ์ง๋ง ์ฌ๋๊ณผ ๋ฌ๋ฆฌ ์ฃผ๋ณ ๋ฌธ๋งฅ์ ๋ณด๋ฅผ ํ์ฉํ๋ ๋ฅ๋ ฅ(= ์ผ๋ช '๋์น')์ด ์๊ธฐ์
์ฃผ์ ๊ฐ ์ ํ๋๋ ๋ฑ์ ์ํฉ์์ ์์ฑ ์ธ์๋ฅ ์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ์๋นํ ์๋ค.
์ด๋, ์ข์ LM์ ํ์ตํด ์ฌ์ฉํ๋ฉด ์์ฑ์ธ์์ ์ ํ๋๋ฅผ ๋์ผ ์ ์๋ค.
์๋ ์์์ ์์ฑ์ธ์์ ์์์ ๋๋ต์ ์ผ๋ก ๋ํ๋ธ ๊ฒ์ผ๋ก
์์ฑ์ ํธ X๊ฐ ์ฃผ์ด์ก์ ๋, ํ๋ฅ ์ ์ต๋๋ก ํ๋ ๋ฌธ์ฅ Y_hat์ ๊ตฌํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.
์ฌ๊ธฐ์ Bayes ์ ๋ฆฌ๋ก ์์์ ์ ๊ฐํ๋ฉด, ๋ฐ๋ณ P(X)๋ฅผ ๋ ๋ ค๋ฒ๋ฆด ์ ์๋ค.
โP(X|Y) : Speech Model (= ํด๋น ์ํฅ signal์ด ๋ํ๋ ํ๋ฅ )
โP(Y) : Language Model (= ๋ฌธ์ฅ์ ํ๋ฅ )
6.2 Machine Translation
๊ธฐ๊ณ๋ฒ์ญ์ ๊ฒฝ์ฐ, ์ธ์ด๋ชจ๋ธ์ด ๋ฒ์ญ์์คํ ์ ๊ตฌ์ฑํ ๋, ์ค์ํ ์ญํ ์ ํ๋ค.
๊ธฐ์กด์ ํต๊ณ๊ธฐ๋ฐ ๊ธฐ๊ณ๋ฒ์ญ(SMT)์์๋ ์์ฑ์ธ์๊ณผ ์ ์ฌํ๊ฒ
LM์ด ๋ฒ์ญ๋ชจ๋ธ๊ณผ ๊ฒฐํฉํด ์์ฐ์ค๋ฌ์ด ๋ฌธ์ฅ์ ๋ง๋ค๋๋ก ๋์ํ๋ค.
์ ๊ฒฝ๋ง ๊ธฐ๊ณ๋ฒ์ญ(NMT; https://chan4im.tistory.com/201)์ด ์ฃผ๋ก ์ฌ์ฉ๋๋๋ฐ,
NMT์์๋ LM์ด ๋งค์ฐ ์ค์ํ ์ญํ ์ ํ๋ค. (์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ ์ฐธ๊ณ )
6.3 OCR (๊ดํ ๋ฌธ์ ์ธ์)
๊ดํ๋ฌธ์์ธ์(OCR)๋ฅผ ๋ง๋ค ๋๋ LM์ด ์ฌ์ฉ๋๋ค.
์ฌ์ง์์ ์ถ์ถํด ๊ธ์๋ฅผ ์ธ์ํ ๋, ๊ฐ ๊ธ์๊ฐ ํ๋ฅ ์ ์ ์ํ๋ฉด ๋ ๋์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
๋ฐ๋ผ์ OCR์์๋ ์ธ์ด๋ชจ๋ธ์ ๋์์ ๋ฐ์ ๊ธ์๋ ๊ธ์จ๋ฅผ ์ธ์ํ๋ค.
6.4 ๊ธฐํ Generative Model
์์ฑ์ธ์, MT, OCR ์ญ์ ์ฃผ์ด์ง ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์ฅ์ ์์ฑํด๋ด๋ ์ผ์ข ์ ์์ฐ์ด ์์ฑ์ด๋ผ ๋ณผ ์ ์๋ค.
๊ธฐ๊ณํ์ต์ ๊ฒฐ๊ณผ๋ฌผ๋ก์จ ๋ฌธ์ฅ์ ๋ง๋ค์ด๋ด๋ ์์ ์ ๋ชจ๋ ์์ฐ์ด ์์ฑ๋ฌธ์ ์ ์นดํ ๊ณ ๋ฆฌ๋ผ ๋ณผ ์ ์๋ค.
๋ง์น๋ฉฐ...
์ด๋ฒ์๊ฐ์๋ ์ฃผ์ด์ง ๋ฌธ์ฅ์ ํ๋ฅ ์ (stochastic)์ผ๋ก ๋ชจ๋ธ๋งํ๋ ๋ฐฉ๋ฒ(LM)์ ์์๋ณด์๋ค.
NLP์์ ๋ฌธ์ฅ์์ธก์ ํ์์ฑ์ DNN์ด์ ๋ถํฐ ์์ด์๊ธฐ์, N-gram ๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ง์ ๊ณณ์ ํ์ฉ๋์๋ค.
๋ค๋ง, N-gram๊ณผ ๊ฐ์ ๋ฐฉ์๋ค์ ์ฌ์ ํ ๋จ์ด๋ฅผ ๋ถ์ฐ์์ ์ธ ์กด์ฌ๋ก ์ทจ๊ธํ๊ธฐ์
ํฌ์์ฑ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํด generalization์์ ๋ง์ ์ด๋ ค์์ ๊ฒช์๋ค.
์ด๋ฅผ ์ํด Markov๊ฐ์ , Smoothing, Didcounting์ผ๋ก N-gram์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ ํ์ง๋ง N-gram์ ๊ทผ๋ณธ์ ์ผ๋ก ์ถํ๋น๋์ ๊ธฐ๋ฐํ๊ธฐ์ ์๋ฒฝํ ํด๊ฒฐ์ฑ ์ด ๋ ์๋ ์์๋ค.
ํ์ง๋ง DNN์ ๋์ ์ผ๋ก LM์ ์๋ํ๋ฉด Generalization์ด ๊ฐ๋ฅํ๋ค.
DNN์ ๋น์ ํ์ ์ฐจ์์ถ์์ ๋งค์ฐ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๊ฐ๊ธฐ์, ํฌ์๋จ์ด์กฐํฉ์๋ ํจ๊ณผ์ ์ฐจ์์ถ์๋ฅผ ํตํด ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
๋ฐ๋ผ์ inference time์์ ์ฒ์๋ณด๋ sequence data๊ฐ ์ฃผ์ด์ง๋๋ผ๋ ๊ธฐ์กด์ ๋นํด ๊ธฐ์กด ํ์ต์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฅญํ ์์ธก์ด ๊ฐ๋ฅํ๋ค.
์ง๊ธ๊น์ง LM์ด ์ ๋ง ๋ง์ ๋ถ์ผ(์์ฑ์ธ์, TM, OCR)์์ ์ด์์ผ๋ก ๋ค์ํ๊ฒ ํ์ฉ๋จ์ ์ ์ ์์๋ค.
์ด์ , ์ ๊ฒฝ๋ง์ ํตํด ๊ฐ์ ๋ LM์ผ๋ก ๋ท ๋ด์ฉ๋ค์์๋ ์์ฐ์ด์์ฑ(ํนํ TM;๋ฒ์ญ)์ ๋ํด ๋ค๋ค๋ณผ ๊ฒ์ด๋ค.
https://chan4im.tistory.com/201 , https://chan4im.tistory.com/202