聊天机器人-Noisy Channel Model

2019-10-09  本文已影响0人  魏鹏飞

1. Noisy Channel Model

公式:P(text|source)∝ P(source|text)P(text)\tag{1.1}

应用场景:语音识别、机器翻译、拼写纠错、OCR、密码破解...(信号到文本)

2. Language Model (NLP最为重要的概念)

语言模型用来判断:是否一句话从语法上通顺。
比较:
P(今天是周三) VS P(今天周三是)
P(人工智能是趋势) VS P(趋势人工智能是)

一个翻译系统一个单词一个单词翻译后,需要把这些单词转换成一个通顺的句子。


目标:Compute the probability of a sentence or sequence of words. P(s)=P(w_1,w_2,w_3,w_4,w_5...w_n)

举例:
P(人工智能是趋势)=P(人工智能)P(是|人工智能)P(趋势|人工智能, 是)

语料库:
....今天是国庆我们都休息................................
.....................................................
.....................................................
.....................................................
今天是国庆我们都放假....................................
.....................................................
.....................................................

P(休息|今天, 是, 国庆, 我们, 都) = 1/2
P(出门|今天, 是, 国庆, 我们, 都) = 0
关键词:Sparsing


3. Markov Assumption(马尔科夫假设) 与 Unigram、Bigram、N-gram

P(w_1,w_2,w_3,w_4,w_5...w_n)=P(w_1)P(w_2|w_1)P(w_3|w_2)...P(w_n|w_{n-1})\\ =P(w_1)\prod_{i=2}^nP(w_n|w_{n-1}) \tag{3.1.2}

P(w_1,w_2,w_3,w_4,w_5...w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1, w_2)...P(w_n|w_{n-1}, w_{n-2})\\ =P(w_1)P(w_2|w_1)\prod_{i=3}^nP(w_n|w_{n-1}, w_{n-2}) \tag{3.2.2}

P(w_1,w_2,w_3,w_4,w_5...w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1, w_2)P(w_4|w_1, w_2, w_3)...P(w_n|w_{n-1}, w_{n-2}, w_{n-3})\\ =P(w_1)P(w_2|w_1)P(w_3|w_1, w_2)\prod_{i=4}^nP(w_n|w_{n-1}, w_{n-2}, w_{n-3}) \tag{3.3.2}


(使用1st)比较:今天是周三 VS 今天周三是

给出概率:
P(是|今天)=0.01
P(今天)=0.002
P(周三|是)=0.001
P(周三|今天)=0.0001
P(周日)=0.02
P(是|周三)=0.0002

P(今天是周三) = P(今天)P(是|今天)P(周三|是) = 0.002 * 0.01 * 0.001

P(今天周三是) = P(今天)P(周三|今天)P(是|周三) = 0.002 * 0.0001 * 0.0002


4. Estimating Probability(估计语言模型概率)

5. Evaluation of Language Model


Q:训练出来的语言模型效果好还是坏?

image.png

如何不依赖于具体任务,对语言模型进行评估呢?
答:Perplexity越小越好。
Perplexity = 2^{-x}, x: average\ log\ likelihood\tag{5.1}

评估方法

6. Smoothing(平滑方法)

语料库 概率
今天 上午 的 天气 很好 P_{Add-1}(上午|今天)=\frac{2+1}{2+17}=\frac{3}{19}
我 很 想 出去 运动 P_{Add-1}(的|今天=\frac{0+1}{2+17})=\frac{1}{19}
但 今天 上午 有 课程 ...
NLP 明天 才 开始 P_{Add-1}(有|今天)=\frac{1}{19}
训练集语料库 验证集语料库 如何选择k?
今天 上午 的 天气 很好 k=1,2,3...,100...
我 很 想 出去 运动 今天 上午 想 出去 运动 比较验证集中:f(k)=perplexity=2^{-x}
但 今天 上午 有 课程 明天 才 开始 NLP minimizef(k)
NLP 明天 才 开始 \hat{k}=\arg\min_kf(k)

\begin{cases} \lambda_1+\lambda_2+\lambda_3=1 \\ P(w_n|w_{n-1}, w_{n-2})=\lambda_1P(w_n|w_{n-1}, w_{n-2})+\lambda_2P(w_n|w_{n-1})+\lambda_3P(w_n) \end{cases}\tag{6.3}

问题 解决方案(重要的事情说三遍)
C(in the kitchen)=0 C(the kitchen)=3 C(kitchen)=4 C(arboretum)=0 公式(6.3)
P(kitchen | in the)=0 P(arboretum | in the)=0 公式(6.3)
未来数据量多些时,kitchen的概率其实要比arboretum概率大的 公式(6.3)
统计单词出现次数 给出定义解释
Tom : 2次,I : 3次 N_3=1: 有多少单词出现3次
am : 2次,do : 1次 N_2=2: 有多少单词出现2次
not : 1次,eat : 1次 N_1=3: 有多少单词出现1次

假设你在钓鱼,已经抓到了18只鱼: 10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼......

没有出现过的单词 出现过的单词
P_{MLE}=0 \\ P_{GT}=\frac{N_1}{N} P_{MLE}=\frac{c}{N} \\ P_{GT}=\frac{(c+1)N_{c+1}}{N_c*N}
P_{MLE}(飞鱼)=\frac{0}{18}=0\\P_{GT}(飞鱼)=\frac{N_1}{N}=\frac{3}{18}=\frac{1}{6} P_{MLE}(草鱼)=\frac{1}{18}\\P_{GT}(草鱼)=\frac{(c+1)N_{c+1}}{N_c*N}=\frac{(1+1)*1}{3*18}=\frac{1}{27}
上一篇下一篇

猜你喜欢

热点阅读