讲义链接

1、NLG的定义及应用场景

NLG是指,生产出任何新文本。被用于以下场景:

1. 机器翻译
2. 摘要
3. 对话(任务型、闲聊型、问答型)
4. 创意写作:写故事,写诗
5. 生成式,相比于抽取式
6. 图像描述

2、语言模型

2.1 LM

语言建模(Language Modeling)是指,在给定词语的情况下,预测下一个词的概率,用公式表示为:

P ( y t ∣ y 1 , . . . , y ( t − 1 ) ) P(y_t|y_1,...,y_(t-1)) P(yt​∣y1​,...,y(​t−1))

而语言模型(Language Model)是只一种系统,用以预测上述概率的分布。

2.2 RNN-LM

如果用RNN网络来预测上述概率,那么这个语音模型就称为RNN-LM。

2.3 Conditional LM

如果出了已出现的词,我们还知道其他的输入条件,那么我们就可以进行条件语言建模(ConditionalLanguageModel),用公式表示为

P ( y t ∣ y 1 , . . . , y ( t − 1 ) , x ) P(y_t|y_1,...,y_(t-1),x) P(yt​∣y1​,...,y(​t−1),x)

这种建模方法在很多应用中都有用到:

  • 机器翻译:x是源句子,y是目标句子
  • 摘要生成:x是输入文本,y是摘要文本
  • 对话:x是历史聊天记录,y是下一句话

2.4 泛RNN语言模型的训练

一般模型有两部分组成:编码器(RNN)和解码器(RNN)。

有一种训练方式,是将真正的生成句子输入解码器中,而不是解码器生成的句子。这种训练方式是Teacher Forcing

以NeuralMachineTranslation为例:

3、解码算法

语言模型训练好之后,我们会通过解码算法来生成文本。

这里会介绍两种解码算法,贪心解码(Greedy Decoding)算法和簇搜索(Beam Search)算法

3.1 贪心解码算法

一种比较简单的算法,就是在每一步中预测最有可能的那个词. 这个词会被作为下一次预测时的输入。

上述过程是重复进行的,直到预测出结束符<END>或者生成的词个数已经达到设定的最大值。

整个过程如下图所示:

GreedyDecoding算法的缺点在于,由于没有backtracking回溯过程,即每一次的最好并不是全局的最佳,所以文本生成的效果不是特别好,比如会出现不符合语法逻辑、不自然、不合理的情况。

3.2 beam search解码算法

搜索算法旨在从若干可能的句子里,一次就找出可能性比较高的句子,这个句子可能并不是最优的结果。

核心思想:在每一步解码过程中,跟踪k个最可能的部分序列(我们称之为假设 hypotheses ),这个k就是 束大小,beam size

生成阶段的循环过程结束时,选择概率最大的句子片段(这里的片段是因为还要考虑到生成长度,所以我们会进行一些调整)

举个例子如下图,此时k=2

蓝色的数字值是该句子的得分$score(y_i|y_1,..,y_(i-1),x)$,通过如下公式计算得到:

∑ i = 1 t log ⁡ P L M ( y i ∣ y 1 , … , y i − 1 , x ) \sum_{i=1}^{t} \log P_{\mathrm{LM}}\left(y_{i} | y_{1}, \ldots, y_{i-1}, x\right) i=1∑t​logPLM​(yi​∣y1​,…,yi−1​,x)

每个时间步都只保留了k=2个节点往下继续搜索。最后pie对应的路径打分最高,最后的句子是

he hit me with a pie

从图中可以看出,不同路径预测输出结束标志符的时间点可能不一样,比如第三步时,已经有I was hit这样一个结果还不错的句子产生了,这样一句预测完成的句子,称之为完全路径

为了从不同长度的完全路径中挑选一个最佳答案,我们会根据生成句子的长度进行分值的归一化,

1 t ∑ i = 1 t log ⁡ P L M ( y i ∣ y 1 , … , y i − 1 , x ) \frac{1}{t} \sum_{i=1}^{t} \log P_{\mathrm{LM}}\left(y_{i} | y_{1}, \ldots, y_{i-1}, x\right) t1​i=1∑t​logPLM​(yi​∣y1​,…,yi−1​,x)

不同大小的k对结果有什么影响呢?

如果k越小的话,每次考虑的范围就越小,出现的问题约同贪心解码(k=1时就回退到贪心解码)

k越大的话,每一步都需要更多假设,会造成更多计算量

不仅如此,对NMT来说,k越大,BLEU 值会越小,因为即使对长度进行了归一化,但是k越大,越偏向生成短文本。NMT的六大挑战一文中,对比了不同k情况下的BLEU值,

可以看到,k越大,生成质量越差,特别是如果没有进行长度归一化,结果会更差。当然不同场景下,最优k值也是不同的,比如Czech–English的翻译中,k选4最好,而English– Romanian翻译中,k=30会得到最好的结果。

此外,在闲聊型对话任务中,k越大,生成的答案通用性越强(示例见下图)

当一方说,“我大多情况下都以生鲜为主,不怎么去杂货店买东西”,可以看到k比较小的时候,回答都是比较有主题的,比如围绕饮食、健康开展的。而随着k变大,回复也变得含含糊糊,不会答错但是也没那么相关,有一点答非所问。

3.3 基于采样的解码算法

因为beam seach中每次要进行khypothese,所以可能不会那么efficient.这就推进了基于采样的解码算法诞生。

3.3.1 PureSampling

每一个时间步 t t t下,从分布 P t P_t Pt​中随机选一个作为下一个词.和贪心解码算法一样,也是每次只选一个词,但是随机的而不是选概率最大。

3.3.2 Top-n Sampling

每一个时间步 t t t下,从分布 P t P_t Pt​中,按照概率选取 n n n个,再从中随机选一个。

可以看到当 n = 1 n=1 n=1时就是贪心,当 n = 1 n=1 n=1时就是pure sample

n n n越大,生成的文本更具有多样性,当然也更加危险,因为不知道会出来什么玩意儿。

n n n越小,生成的文本更加具有通用性,虽然可能有点跑偏,但是生成的文本比较安全,不会出错。

3.3.3 不是解码算法的 Softmax temperature

beam searchsampling的解码算法中,我们都是根据概率大小进行选择的。在softmax过程中,我们还会做一点变化,引入了一个温度参数 τ \tau τ

P t ( w ) = exp ⁡ ( s w / τ ) ∑ w ′ ∈ V exp ⁡ ( s w ′ / τ ) P_{t}(w)=\frac{\exp \left(s_{w} / \tau\right)}{\sum_{w^{\prime} \in V} \exp \left(s_{w^{\prime}} / \tau\right)} Pt​(w)=∑w′∈V​exp(sw′​/τ)exp(sw​/τ)​

τ \tau τ越大, P t P_t Pt​分布就会越平滑,词表中每个词被选中的概率就会比较平均,所以生成的结果越具有多样性。

τ \tau τ越小, P t P_t Pt​分布就会越尖锐,词表中每个词被选中的概率就会不平均,总有一些词选不到,而另外一些词总被选到,所以生成的结果越比较常见。

3.4 解码算法总结

贪心解码算法非常简单,但是效果也不好

束搜索效果比较好,但是也会出现回答太普通,太短等问题。

采样方法则是结果更具有多样性

CH1-语言模型和解码算法相关推荐

  1. OCR文字识别—基于CTC/Attention/ACE的三大解码算法

    本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...

  2. 【深度学习】OCR文字识别—基于CTC/Attention/ACE的三大解码算法

    本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...

  3. UA MATH636 信息论8 线性纠错码的解码算法

    UA MATH636 信息论8 线性纠错码的解码算法 standard array decoding syndrome decoding 考虑BSC,上一讲提到了ML decoder与MAP deco ...

  4. 从编解码算法到全链路RTC架构,揭秘淘系直播技术演进之路

    从2016年直播元年至今,纯粹的直播已经逐渐失去竞争力,越来越多形式创新映入眼帘,而众多企业开始走向内容垂直化--秀场.游戏.电商.广电等内容特点深度结合.伴随2020年疫情爆发,电商为人们日常生活提 ...

  5. 语音编码 c语言,语音编解码算法G.723.1在DSP - 嵌入式新闻 - 电子发烧友网

    1 引言 G.723.1是删组织于1996年推出的一种低码率的语音编码算法标准,也是目前该组织颁布的语音压缩标准中码率最低的一种标准.G.723.1主要用于对语音及其它多媒体声音信号的压缩,目前在一些 ...

  6. 区块链100讲:16进制数据的编码/解码算法

    众所周知,计算机存储和处理的都是二进制数据.为了简洁,实际上使用最多的是二进制的一个变种--16进制.比如笔者的名字叫嘉文,中文拼音是jiawen(全小写),在计算机里存储的就是 6A69617765 ...

  7. LZW 编解码算法实现与分析

    实验目的 掌握词典编码的基本原理,用C/C++/Python等语言编程实现LZW解码器并分析编解码算 法. 方法解释 算法说明 所用功能代码 词典树数组结构体 struct {int suffix;/ ...

  8. 【实验三】LZW编解码算法实现与分析

    一.实验目的 1.掌握词典编码的基本原理,用C/C++/Python等语言编程实现LZW解码器并分析编解码算法. 2.选择十种不同格式类型的文件,使用LZW编码器进行压缩得到输出的压缩比特流文件.对各 ...

  9. 实验三 LZW编解码算法实现与分析

    LZW简述 本部分参考wiki https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch LZW压缩算法在1978年提出,由 Abr ...

最新文章

  1. msm(CentOS 6)及jvm虚拟机性能监控(04)_recv
  2. 【leetcode】42. Trapping Rain Water 计算坑洼地的积水量
  3. 如何配note,打补丁
  4. c++ 中变量成员的初始化时机
  5. TransactionScope和分布式事务的注意点
  6. 关闭所有的screen
  7. 小米路由插件二维码2020_入门级Mesh首选?华来小方Mesh路由深度解析
  8. pe卸载win10更新补丁_禁用Win10系统更新
  9. 2021-06-01-HPC-performance-test
  10. PDF convert(多个pdf合并的脚本)
  11. 几种投影的特点及分带方法
  12. ValueError: decision_function_shape must be either ‘ovr‘ or ‘ovo‘, got None.
  13. Windows11分辨率无法调整,缩放不能选择调整
  14. Android Studio简易音乐播放器设计作业
  15. 单片机编程软件很简单(17),Keil单片机编程软件之编译、链接
  16. 我的世界不退出服务器切换账号,我的世界服务器退出指令
  17. 白色用rgba怎么设置html,转换RGB到RGBA的白色
  18. Ubuntu下安装adobe reader
  19. 射影几何 -- 空间射影几何 3
  20. 教育界「拼多多」卖课套路解析

热门文章

  1. 跟益达学Solr5之索引网络上远程文件
  2. 超级好用的提高个人生产力工具
  3. 简述HTTP请求过程
  4. springboot启动不打印日志信息_springboot项目大量打印debug日志问题
  5. 达美乐中国特许经营商达势股份拟在香港上市,多次因虚假广告被罚,年亏损4.7亿元
  6. 百人计划(图形部分)移动端TB(D)R架构基础
  7. jjk网络验证系统v21开源
  8. 华丽秒杀iOS 最流畅桌面TSF Shell UI试用体验
  9. 视频截取gif方法分享,利用gif制作工具在线制作动图
  10. 鸿蒙系统手机mate30lite,为鸿蒙铺路 华为Mate 30 Lite要用鸿蒙系统