束集搜索(Beam search)

        在seq2seq任务重,传统的获取decoder输出的结果过程中,在每一个时间步上,我们只选择概率最大的那个词,作为当前时间步的输出,即在每一个时间步上我们取到的都是最大概率的词。等到解码器获取到 <EOS> 词元结束循环的时候,我们获取到的句子,不一定是最准确的,获得的这个句子可能不通顺。因为贪心的策略,局部最优并不能获取全局最优的结果。

1. 如何解决贪心带来的问题

1.1 计算所有输出的概率       

        我们可以计算全部的输出的概率乘积,选择最大的那一个作为句子的输出,但是我们输出的句子通常都比较长,而且再这样的情况下我们需要计算的数据量会非常大。

1.2 Beam search

        beam search是基于上述贪心策略和1.1中提及方法的的兼顾,我们使用 Beam width 表示每次时间步保存最大概率的个数,即例如当 Beam width = 3 的时候,当前时间步保存了三个,在下一个时间步上也是一样保存三个,即我们通过约束搜索空间的大小来实现提高算法效率

         Beam width = 1 的时候,就是贪心策略,当 Beam width = 所有候选词的时候,就是1.1中计算全部的概率

例如上图,我们的 Beam width = 1 时,我们的输出序列会是 ABB ,并不会得到最好的结果(BBB)。当 Beam width = 2 时,我们在第一个时间步上有最大两个概率 [0.6, 0.4] 故保存 [A, B],目前序列为A和B;在第二个时间步上有最大两个概率 [0.36, 0.36] 故保存 [B, B],目前序列为AB和BB;在第三个时间步上有最大两个概率 [0.324, 0.144] 故保存 [B, B],目前序列为ABB和BBB;所以当 Beam width = 2 时可以获得最好的结果。

1.3 Beam search在seq2seq中如何工作

        进一步,我们再看这个例子,输入句子起始 <s> ,输出只会是 [x, y, w, </s>] 这四个中的一个,我们取 Beam width = 3 

        第一个时间步:选择概率最大的三个词保存 [x, y, w],并把 [x, y, w] 依次作为下一个时间步输入;

        第二个时间步:由 [x, y, w] 依次作为输入分别得到九个输出,选择概率最大的三个保存 [x, y, y],并把 [x, y, y] 依次作为下一个时间步输入;

        第三个时间步:由 [x, y, y] 依次作为输入分别得到九个输出,选择概率最大的三个保存 [x, y, y],并把 [x, x, x] 依次作为下一个时间步输入;

        ...

        重复上述步骤,直到获得结束符 </s> 为当前输出序列为最大概率时候,或者是当前输出序列达到最大句子长度时结束,如果是第二种结束情况的话,输出序列为最大概率的那一个序列。

所以,输出的情况可能是两种:

        1. 输出序列没有达到最大长度的时候,搜索空间中最大概率的序列是以结束符 </s> 结尾的,并将这个序列作为输出序列;

        2. 输出序列达到最大长度的时候,在搜索空间中选择最大概率的序列,并将这个序列加上结束符 </s> 作为输出序列;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

环境配置:Ubuntu18.04 ROS Melodic安装

前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统&#xff0c;其核心代码采用C编写&#xff0c;并以BSD许可发布。ROS起源于2007年&#xff0c;是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年&#xff0c;ROS团队从…

MySQL事务原理的分析

1.事务 并发连接下考虑事务。 事务的本质是并发控制的单元&#xff0c;是用户定义的一个操作序列。这些操作要么都做&#xff0c;要么都不做&#xff0c;是一个不可分割的工作单位。 事务控制语句 ACID特性 原子性&#xff1a;要么都做&#xff0c;要走么都不做。在事务执…

计算机毕业设计 | SSM 医药信息管理系统(附源码)

1&#xff0c; 概述 1.1 课题背景 本系统由说书客面向广大民营药店、县区级医院、个体诊所等群体的药品和客户等信息的管理需求&#xff0c;采用SpringSpringMVCMybatisEasyui架构实现&#xff0c;为单体药店、批发企业、零售连锁企业&#xff0c;提供有针对性的信息数据管理…

第十四篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像特征提取与描述

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文目录前言一、OpenCV图像特征提取与描述介绍二、OpenCV图像特征提取与描述初步示例代码三、扩展思路介绍四、特征点筛选和匹配优化示例代码五、多尺度特征提取示例代码六、非局部特征描述子示例代码…

七、类与对象

文章目录 类与对象1.1 自定义类1.2 第一个类1.3 private变量1.4 变量默认值1.5 构造方法1.6 类和对象的生命周期 类与对象 本文为书籍《Java编程的逻辑》1和《剑指Java&#xff1a;核心原理与应用实践》2阅读笔记 将客观世界中存在的一切可以描述的事物称为对象&#xff08;实…

Unity3D判断屏幕中某个坐标点的位置是否在指定UI区域内

系列文章目录 unity工具 文章目录 系列文章目录前言一、使用rect.Contains()判断1-1、转换坐标1-2、代码如下&#xff1a;1-3、注意事项1-3、测试效果如下 二、使用坐标计算在不在区域内2-1、方法如下&#xff1a;2-2、注意事项 三、使用RectTransformUtility.ScreenPointToLo…

【PTA函数题】6-2 约瑟夫环之循环链表

n个人围成一圈&#xff08;编号依次为&#xff1a;0,1,2...n-1&#xff09;,从第一个人开始报数&#xff0c;1&#xff0c;2&#xff0c;……数到m者出列&#xff0c;再从下一个开始重新报数&#xff0c;数到m者再出列……。 下面的程序中&#xff0c;用不带附加表头的循环单链…

在 MacOS 上虚拟化 x86Linux 的最佳方法(通过 Rosetta)

categories: [VM] tags: MacOS VM 写在前面 买了 ARM 的 mac, 就注定了要折腾一下虚拟机了… 之前写过一篇文章是通过 utm 虚拟化archlinux, 其实本质上还是调用了 qemu-system-x86_64, 所以速度并不快, 后来想着能不能借用 Rosetta 的优势即原生转译, 来虚拟化 Intel 的 Linu…

正点原子-STM32定时器学习笔记(1)未完待续

1. 通用定时器简介&#xff08;F1为例&#xff09; F1系列通用定时器有4个&#xff0c;TIM2/TIM3/TIM4/TIM5 主要特性&#xff1a; 16位递增、递减、中心对齐计数器&#xff08;计数值&#xff1a;0~65535&#xff09;&#xff1b; 16位预分频器&#xff08;分频系数&#xff…

Mybatis中的sql-xml延迟加载机制

Mybatis中的sql-xml延迟加载机制 hi&#xff0c;我是阿昌&#xff0c;今天记录一下关于Mybatis中的sql-xml延迟加载机制 一、前言 首先mybatis技术本身就不多介绍&#xff0c;说延迟加载机制之前&#xff0c;那要先知道2个概念&#xff1a; 主查询对象关联对象 假设咱们现…

架构整洁之道-软件架构-展示器和谦卑对象、不完全边界、层次与边界、Main组件、服务

6 软件架构 6.9 展示器和谦卑对象 在《架构整洁之道-软件架构-策略与层次、业务逻辑、尖叫的软件架构、整洁架构》有我们提到了展示器&#xff08;presenter&#xff09;&#xff0c;展示器实际上是采用谦卑对象&#xff08;humble object&#xff09;模式的一种形式&#xff…

Spring Boot整合MyBatis Plus实现基本CRUD与高级功能

文章目录 1. 引言2. 项目搭建与依赖配置2.1 添加MyBatis Plus依赖2.2 配置数据源与MyBatis Plus 3. 实现基本CRUD功能3.1 创建实体类3.2 创建Mapper接口3.3 实现Service层3.4 控制器实现 4. 高级功能实现4.1 自动填充功能4.2 乐观锁功能4.3 逻辑删除功能 5. 拓展&#xff1a;My…