CH1-语言模型和解码算法
讲义链接
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∑tlogPLM(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) t1i=1∑tlogPLM(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
中每次要进行k
个hypothese
,所以可能不会那么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 search
和sampling
的解码算法中,我们都是根据概率大小进行选择的。在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′∈Vexp(sw′/τ)exp(sw/τ)
τ \tau τ越大, P t P_t Pt分布就会越平滑,词表中每个词被选中的概率就会比较平均,所以生成的结果越具有多样性。
τ \tau τ越小, P t P_t Pt分布就会越尖锐,词表中每个词被选中的概率就会不平均,总有一些词选不到,而另外一些词总被选到,所以生成的结果越比较常见。
3.4 解码算法总结
贪心解码算法非常简单,但是效果也不好
束搜索效果比较好,但是也会出现回答太普通,太短等问题。
采样方法则是结果更具有多样性
CH1-语言模型和解码算法相关推荐
- OCR文字识别—基于CTC/Attention/ACE的三大解码算法
本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...
- 【深度学习】OCR文字识别—基于CTC/Attention/ACE的三大解码算法
本文全面梳理一下OCR文字识别三种解码算法,先介绍一下什么是OCR文字识别,然后介绍一下常用的特征提取方法CRNN,最后介绍3种常用的解码算法CTC/Attention/ACE. 什么是OCR文字识别 ...
- UA MATH636 信息论8 线性纠错码的解码算法
UA MATH636 信息论8 线性纠错码的解码算法 standard array decoding syndrome decoding 考虑BSC,上一讲提到了ML decoder与MAP deco ...
- 从编解码算法到全链路RTC架构,揭秘淘系直播技术演进之路
从2016年直播元年至今,纯粹的直播已经逐渐失去竞争力,越来越多形式创新映入眼帘,而众多企业开始走向内容垂直化--秀场.游戏.电商.广电等内容特点深度结合.伴随2020年疫情爆发,电商为人们日常生活提 ...
- 语音编码 c语言,语音编解码算法G.723.1在DSP - 嵌入式新闻 - 电子发烧友网
1 引言 G.723.1是删组织于1996年推出的一种低码率的语音编码算法标准,也是目前该组织颁布的语音压缩标准中码率最低的一种标准.G.723.1主要用于对语音及其它多媒体声音信号的压缩,目前在一些 ...
- 区块链100讲:16进制数据的编码/解码算法
众所周知,计算机存储和处理的都是二进制数据.为了简洁,实际上使用最多的是二进制的一个变种--16进制.比如笔者的名字叫嘉文,中文拼音是jiawen(全小写),在计算机里存储的就是 6A69617765 ...
- LZW 编解码算法实现与分析
实验目的 掌握词典编码的基本原理,用C/C++/Python等语言编程实现LZW解码器并分析编解码算 法. 方法解释 算法说明 所用功能代码 词典树数组结构体 struct {int suffix;/ ...
- 【实验三】LZW编解码算法实现与分析
一.实验目的 1.掌握词典编码的基本原理,用C/C++/Python等语言编程实现LZW解码器并分析编解码算法. 2.选择十种不同格式类型的文件,使用LZW编码器进行压缩得到输出的压缩比特流文件.对各 ...
- 实验三 LZW编解码算法实现与分析
LZW简述 本部分参考wiki https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch LZW压缩算法在1978年提出,由 Abr ...
最新文章
- msm(CentOS 6)及jvm虚拟机性能监控(04)_recv
- 【leetcode】42. Trapping Rain Water 计算坑洼地的积水量
- 如何配note,打补丁
- c++ 中变量成员的初始化时机
- TransactionScope和分布式事务的注意点
- 关闭所有的screen
- 小米路由插件二维码2020_入门级Mesh首选?华来小方Mesh路由深度解析
- pe卸载win10更新补丁_禁用Win10系统更新
- 2021-06-01-HPC-performance-test
- PDF convert(多个pdf合并的脚本)
- 几种投影的特点及分带方法
- ValueError: decision_function_shape must be either ‘ovr‘ or ‘ovo‘, got None.
- Windows11分辨率无法调整,缩放不能选择调整
- Android Studio简易音乐播放器设计作业
- 单片机编程软件很简单(17),Keil单片机编程软件之编译、链接
- 我的世界不退出服务器切换账号,我的世界服务器退出指令
- 白色用rgba怎么设置html,转换RGB到RGBA的白色
- Ubuntu下安装adobe reader
- 射影几何 -- 空间射影几何 3
- 教育界「拼多多」卖课套路解析
热门文章
- 跟益达学Solr5之索引网络上远程文件
- 超级好用的提高个人生产力工具
- 简述HTTP请求过程
- springboot启动不打印日志信息_springboot项目大量打印debug日志问题
- 达美乐中国特许经营商达势股份拟在香港上市,多次因虚假广告被罚,年亏损4.7亿元
- 百人计划(图形部分)移动端TB(D)R架构基础
- jjk网络验证系统v21开源
- 华丽秒杀iOS 最流畅桌面TSF Shell UI试用体验
- 视频截取gif方法分享,利用gif制作工具在线制作动图
- 鸿蒙系统手机mate30lite,为鸿蒙铺路 华为Mate 30 Lite要用鸿蒙系统