美文网首页
聊天机器人-Noisy Channel Model

聊天机器人-Noisy Channel Model

作者: 魏鹏飞 | 来源:发表于2019-10-09 17:00 被阅读0次

    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}

    相关文章

      网友评论

          本文标题:聊天机器人-Noisy Channel Model

          本文链接:https://www.haomeiwen.com/subject/mwpwpctx.html