Beam Search学习

BackGround

在生成的时候,模型的输出是一个时间步一个时间步依次获得的,而且前面时间步的结果还会影响后面时间步的结果。也就是说,每一个时间步,模型给出的都是基于历史生成结果的条件概率。

  • 为了生成完整的句子,需要一个称为解码的额外动作来融合模型多个时间步的输出,而且使得最终得到的序列的每一步条件概率连乘起来最大。

在文本生成任务中,每一个时间步可能的输出种类称为字典大小(vocabulary size,我们用V表示),进行T步随机的生成可能获得的结果总共有 V T V^T VT种。拿中文文本生成来说,V 的值大约是5000-6000,即常用汉字的个数。在如此大的基数下,遍历整个生成空间是不现实的。

贪心搜索

每一个时间步都取出一个条件概率最大的输出
在这里插入图片描述

Beam Search

思路也很简单,就是稍微放宽一些考察的范围。在每一个时间步,不再只保留当前分数最高的1个输出,而是保留num_beams个。当num_beams=1时集束搜索就退化成了贪心搜索。

  • 实际上是堆树的思想

在这里插入图片描述

  1. 在第一个时间步,A和C是最优的两个,因此得到了两个结果[A],[C],其他三个就被抛弃了;
  2. 第二步会基于这两个结果继续进行生成,在A这个分支可以得到5个候选人,[AA],[AB],[AC],[AD],[AE],C也同理得到5个,此时会对这10个进行统一排名,再保留最优的两个,即图中的[AB]和[CE];
  3. 第三步同理,也会从新的10个候选人里再保留最好的两个,最后得到了[ABD],[CED]两个结果。 可以发现,beam search在每一步需要考察的候选人数量是贪心搜索的num_beams倍,因此是一种牺牲时间换性能的方法。

Beam Search例子

上面的贪心搜索只选择了概率最大的一个,而集束搜索则选择了概率最大的前k个。这个k值也叫做集束宽度(Beam Width)。

  • k值等于2,则集束搜索的过程如下
    在这里插入图片描述

  • 得到第一个输出的概率分布[0.1,0.1,0.3,0.4,0.1][0.1,0.1,0.3,0.4,0.1],选择概率最大的前两个,0.3和0.4,即Je和moi。

  • 然后Je和moi分别作为Decoder的输入,得到两个概率分布,然后再选择概率和最大的前两个序列,0.3+0.8和0.4+0.6,即Je suis和moi suis。

以此类推,最终可以得到两个序列,即Je suis étudiant和moi suis étudiant,很明显前者的概率和最大,为2.2,所以这个序列是最终得到的结果。

缺点

Beam Search虽然比贪心强了不少,但还是会生成出空洞、重复、前后矛盾的文本。如果你有文本生成经验,一定对这些现象并不陌生。在语言模型还不像如今的BERT、GPT这么厉害的时候,这种现象更加明显。

  • 可以发现即使是如今最顶级的语言模型加上足够长的引文输入,还是无法得到高质量的生成结果。

论文认为这种问题是由于这种试图最大化序列条件概率的解码策略从根上就有问题。

他们对比了给定同样引文的情况下人类续写和机器生成的词用语言模型计算出来的概率。
如下图所示,人类选择的词(橙线)并不是像机器选择的(蓝线)那样总是那些条件概率最大的词。从生成的结果也可以看出,机器生成的结果有大量重复。

在这里插入图片描述

改进方法

随机采样

第一种方法是用随机采样(sampling)代替取概率最大的词。采样的依据就是解码器输出的词典中每个词的概率分布。相比于按概率“掐尖”,这样会增大所选词的范围,引入更多的随机性。当时那篇论文的结论就是这种随机采样的方法远好于Beam Search。但这其实也是有条件的,随机采样容易产生前后不一致的问题。

  • 而在开放闲聊领域,生成文本的长度都比较短,这种问题就被自然的淡化了。

temperature 随机采样

通过温度参数可以控制softmax函数产生的概率分布的平滑程度。温度参数(通常表示为T)是一个正数,用于调整指数运算的尺度。较高的温度会使得softmax函数的输出更加平滑,而较低的温度则会使得输出更加尖锐。

具体来说,给定输入向量 x x x,使用温度参数 T T T 的softmax函数的计算公式如下:

y i = e x i T ∑ j = 1 n e x j T , for i = 1 , 2 , . . . , n y_i = \frac{e^{\frac{x_i}{T}}}{\sum_{j=1}^{n} e^{\frac{x_j}{T}}}, \quad \text{for} \quad i = 1, 2, ..., n yi=j=1neTxjeTxi,fori=1,2,...,n

通过调整温度参数 T T T 的值,可以改变输出向量 y y y 中每个元素的相对大小。当温度参数 T T T 较高时,指数运算的结果会变得更加平均,导致概率分布更加均匀,各个类别的概率差异较小。而当温度参数 T T T 较低时,指数运算的结果会更加集中,导致概率分布更加尖锐,各个类别的概率差异较大。

需要注意的是,当温度参数 T T T 趋近于无穷大时,softmax函数的输出将趋近于均匀分布,即每个类别的概率接近于 1 n \frac{1}{n} n1,其中 n n n 是类别的数量。而当温度参数 T T T 趋近于零时,softmax函数的输出将趋近于一个独热编码,即只有最大值对应的类别的概率接近于1,其他类别的概率接近于0。

top-k采样

这个方法就是在采样前将输出的概率分布截断,取出概率最大的k个词构成一个集合,然后将这个子集词的概率再归一化,最后从新的概率分布中采样词汇。

  • 这个办法据说可以获得比Beam Search好很多的效果,但也有一个问题,就是这个k不太好选。

因为这个概率分布变化比较大,有时候可能很均匀(flat),有的时候比较集中(peaked)。对于集中的情况还好说,当分布均匀时,一个较小的k容易丢掉很多优质候选词。但如果k定的太大,这个方法又会退化回普通采样。

在这里插入图片描述

top-p采样

在这里插入图片描述

  • 累加概率,前若干个词多概率进行累加一直到达到p的阈值,然后取出前面这若干个词,重新进行概率归一化,并把剩下词的概率设为0。

惩罚重复

为了解决重复问题,还可以通过惩罚因子将出现过词的概率变小或者强制不使用重复词来解决。惩罚因子来自于同样广为流传的《CTRL: A Conditional Transformer Language Model for Controllable Generation》[2]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/223049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round 913 (Div. 3) A~E

目录 A. Rook 问题分析: B. YetnotherrokenKeoard 问题分析: C. Removal of Unattractive Pairs 问题分析: D. Jumping Through Segments 问题分析: E. Good Triples 问题分析: A. Rook 问题分析: 给一个棋子将其同行同列的位置输出 #include<bits/s…

ABAP 字符串空白值保留长度或者用其他字符替代

保留空白值在字符串的长度。 DATA lv_char1 TYPE string VALUE Hello. DATA lv_char2 TYPE string VALUE World. DATA LV_CHAR3 TYPE C LENGTH 50.DATA(lv_string3) |{ lv_char1 } { lv_char2 }!|.WRITE: / lv_string3.DATA(lv_string2) lv_char1 && | { lv_char3 } …

6个实用又好用的交互原型工具!

在 UI/UX 设计中&#xff0c;原型设计是至关重要的一步。正如用户体验中的其它环节一样&#xff0c;有无数的交互原型工具可以帮助你完成原型设计。市场上有太多的交互原型工具&#xff0c;如果你不知道选择哪一种&#xff0c;那么我们将为你介绍 6 个实用又好用的交互原型工具…

获取文本框中录入得 方法,执行该方法

最近一个同事问我如何将大文本中输入得方法&#xff0c;变成一个真正得方法执行&#xff0c; 于是在控制台临时测试了一下我的想法 解释一下这个过程&#xff0c; 1、从大文本框中获取到一个字符串 var a"function(){alert(2)}" 2、将字符串转换成真正可执行的方…

半导体湿法清洗工艺

随着技术的不断变化和器件尺寸的不断缩小&#xff0c;清洁过程变得越来越复杂。每次清洗不仅要对晶圆进行清洗&#xff0c;所使用的机器和设备也必须进行清洗。晶圆污染物的范围包括直径范围为0.1至20微米的颗粒、有机和无机污染物以及杂质。 清洁方法可分为湿法或干法。湿法清…

在Linux系统中更换yum源为阿里云

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

html和css小练习

目录 1、css代码 2、html代码 效果图 彩妆热卖产品列表 1、css代码 body {background-color: rgb(238, 231, 225);}* {padding: 0;margin: 0;list-style: none;text-decoration: none;}div {width: 400px;margin: 60px auto;}li {line-height: 40px;border-bottom: 1px das…

AI文本生成工具-免费AI文本生成软件

在当今数字时代&#xff0c;人工智能技术的快速发展不仅改变了我们的生活方式&#xff0c;还在创作领域崭露头角。其中&#xff0c;AI文本生成技术的迅猛发展引起了广泛关注。本文将深入探讨AI文本生成的方法、工具以及一些关键技巧&#xff0c;帮助读者更好地了解并利用这一前…

QT图标工具

Qt图标工具 1.开发环境&#xff1a; Qt5.12.9 vs2019 涉及QT内容&#xff1a; qss: Model/view 使用QListView来显示图标。 使用Model&#xff08;继承QAbstractListModel&#xff09;访问图片列表。 使用FilterModel&#xff08;继承QSortFilterProxyModel&#xff09;来过滤…

智能化转型比想象中更难,九牧智能马桶深陷口碑危机

智能化浪潮正深刻改变着消费者日常生活的方方面面&#xff0c;也推动着传统卫浴品牌面向智能化转型的步伐。 而在一众耳熟能详的中国卫浴品牌中&#xff0c;九牧可以称得上是面向数字化、智能化、高端化转型的先锋。 就在近日&#xff0c;九牧刚刚举行了一场盛大的第1000万套…

Windows 10 11黑屏死机的修复经验分享

1. 执行快速重启 有时,您所需要的只是重新启动。 您可能会惊讶地发现,只需快速重新启动即可解决 Windows 操作系统上的许多问题,尤其是在系统已经运行了一段时间的情况下。 因此,在进行任何复杂的操作之前,请重新启动电脑,看看它是否修复了电脑上的黑屏错误并使一切恢复…

1.1 计算机和编程语言

计算机与编程语言的用处 计算机与大家的生活息息相关&#xff0c;例如银行的ATM机就是计算机、日常使用的手机等。大家大部分情况都是使用现有的软件&#xff0c;只有在特定场景、特定需求的环境下才会编写软件 课程目的 计算机是怎么工作的计算机擅长干什么&#xff0c;计算…

【STM32】小车

一、安装及基本技能 1.环境安装 MDK的下载与安装&#xff1a; 下载链接&#xff1a;Arm Keil | Keil STM32G0xx_DFP 【STM32】两个版本MDK搭建和三种调试器的使用-CSDN博客 安装完MDK后要导入MDK Keil中 导入下载的MDK【记得保存路径中不要有中文】 安装DFP包提示SVDConv …

数字堡垒:上海迅软科技揭示企业数据安全的几大守护方式

在数字化时代&#xff0c;数据已成为许多企业宝贵的资产。对企业而言&#xff0c;如何保护企业的数据安全是至关重要的一件事。但是&#xff0c;数据同时也面临着许多安全威胁&#xff0c;如数据泄露、数据损坏、盗窃等。而企业失去数据或数据遭到未经授权的访问都可能导致严重…

什么是 shell 脚本?

一、什么是 shell&#xff1f; Shell 是一个应用程序&#xff0c;它负责接收用户输入的命令&#xff0c;然后根据命令做出相应的动作&#xff0c; Shell 负责将应用层或者用户输入的命令传递给系统内核&#xff0c;由操作系统内核来完成相应的工作&#xff0c;然后将结果反馈给…

代码随想录算法训练营第38天| 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

JAVA代码编写 动态规划&#xff08;Dynamic Programming&#xff09; 一个问题可以划分为多个子问题&#xff0c;且子问题之间有关联&#xff0c;就可以使用动态规划。 动态规划问题步骤&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式…

一文秒懂 springsecurity6.2实现自定义登录页

前言 springsecurity原理和基础这里暂时不讲&#xff0c;网上资料太多了&#xff0c;这个大家可以自行查找学习&#xff0c;基本上没什么太大区别&#xff0c;看几篇文章就了解了&#xff0c;这篇文章主要是针对自定义登录页做一个demo&#xff0c;通过这个小 demo&#xff0c…

无线4G电表有哪些优势?

无线4G电表是一种电力管理技术&#xff0c;它具有许多优势&#xff0c;使其成为现代社会中的重要应用。无线4G电表的主要特点是利用4G网络进行数据传输和通信&#xff0c;以取代传统的有线连接方式。那么&#xff0c;无线4G电表有哪些优势呢&#xff1f; 首先&#xff0c;无线4…

提高企业邮箱安全性的策略与技巧

提高企业邮箱的安全性的方法大体相同&#xff0c;每家邮箱供应商也可能会有自己独有防护措施。 为了增强Zoho Mail企业邮箱的安全性&#xff0c;您可参考以下建议&#xff1a; 采用强密码&#xff1a;创建包含大写字母、小写字母、数字和特殊字符的复杂密码&#xff0c;并定期…

vue中实现数字+英文字母组合键盘

完整代码 <template><div class"login"><div click"setFileClick">欢迎使用员工自助终端</div><el-dialog title"初始化设置文件打印消耗品配置密码" :visible.sync"dialogSetFile" width"600px&quo…
最新文章