聊天机器人-Noisy Channel Model

1. Noisy Channel Model

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

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

  • 机器翻译:
    P(中文|英文) ∝ P(英文|中文)*P(中文)
    P(英文|中文)定义为翻译模型,P(中文)定义为语言模型。

  • 拼写纠错:
    P(正确的写法|错误的写法) ∝ P(错误的写法|正确的写法)*P(正确的写法)
    P(错误的写法|正确的写法)定义为编辑距离,P(正确的写法)定义为语言模型。

  • 语音识别:
    P(文本|语音信号) ∝ P(语音信号|文本)*P(文本)
    P(语音信号|文本)定义为翻译模型或Recognition Model,P(文本)定义为语言模型。

  • 密码破解:
    P(明文|密文) ∝ P(密文|明文)*P(明文)
    P(密文|明文)定义为翻译模型,P(明文)定义为语言模型。

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

  • 1st order markov (Bigram)
    P(休息|今天, 是, 国庆, 我们, 都)\approx P(休息|都)\tag{3.1.1}

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}

  • 2st order markov (Trigram)
    P(休息|今天, 是, 国庆, 我们, 都)\approx P(休息|我们, 都)\tag{3.2.1}

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}

  • 3st order markov
    P(休息|今天, 是, 国庆, 我们, 都)\approx P(休息|国庆, 我们, 都)\tag{3.3.1}

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(估计语言模型概率)

  • Unigram
    P(w_1, w_2, w_3, w_4, w_5...w_n)=P(w_1)P(w_2)P(w_3)...P(w_n)
    P(w_1) = \frac{\#w_1}{V}, w_1为单词个数,V为词表个数。

  • Bigram
    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_2|w_1) = \frac{\#(w_1,w_2)}{\#w_1}, (w_1,w_2)为前后相邻单词个数,w_1为单词个数。

  • N-gram
    当N=3时,同理。但是有时\#(w_1,w_2,w_3,w_4,w_5)w_5时,可能语料库中没有出现过。

5. Evaluation of Language Model


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

  • 理想情况下
    1. 假设有两个语言模型A,B
    2. 选定一个特定的任务比如拼写纠错
    3. 把两个模型A,B都应用在此任务中
    4. 最后比较准确率,从而判断A,B的表现
image.png

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

评估方法

6. Smoothing(平滑方法)

  • Add-one Smoothing
    P_{MLE}(w_i|w_{i-1})=\frac{c(w_{i-1},w_i)}{c(w_{i-1})}\\ P_{Add-1}(w_i|w_{i-1})=\frac{c(w_{i-1},w_i)+1}{c(w_{i-1})+V}, V词表大小\tag{6.1}
语料库 概率
今天 上午 的 天气 很好 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}
  • Add-K Smoothing
    P_{Add-1}(w_i|w_{i-1})=\frac{c(w_{i-1},w_i)+k}{c(w_i)+kV}, V词表大小\tag{6.2}
训练集语料库 验证集语料库 如何选择k?
今天 上午 的 天气 很好 k=1,2,3...,100...
我 很 想 出去 运动 今天 上午 想 出去 运动 比较验证集中:f(k)=perplexity=2^{-x}
但 今天 上午 有 课程 明天 才 开始 NLP minimizef(k)
NLP 明天 才 开始 \hat{k}=\arg\min_kf(k)
  • Interpolation
    核心思路:在计算Trigam概率时同时考虑Unigram, Bigram, Trigram出现的频次。

\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)
  • Good-Turning Smoothing
    定义:N_c出现c次的单词个数。
    例:Tom I am I am Tom I do not eat
统计单词出现次数 给出定义解释
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}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342