Seq2Seq模型中的贪心搜索(Greedy Search)
1. 引入
用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文。在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同。
这里用下图来举例说明:
一个法语句子,被Seq2Seq模型翻译为不同的4句英文,我们该选择哪个结果作为最终结果呢?
上图中,给了一个公式,式中的x
表示法语句子,y
表示各个单词组成的最终的英文句子,不同的y的组合表示不同的翻译,即y1~yn表示单词序列。
解决这个问题的关键,就在于找到合适的y值,使得图中的公式值最大化。
但是具体怎么做呢?下面我们介绍一种方法:Greedy Search。
2. 贪心算法:Greedy Search
第一种选择方法,是最简单的贪心搜索,这是一种贪心算法,它最简单:每次选择输出概率值最大的那个单词组成单词序列,如下图所示:
首先,挑选第一个概率值最高的单词作为输出,并将其输入decoder,然后,再选择概率值最高的第二个,第三个,。。。
很显然,这不是一种非常好的方法。因为,贪心算法找到的并不是最优解。比如翻译出来的两句英文为:
- A. Jane is visiting Africa in September.
- B. Jane is going to be visiting Africa in September.
这两句翻译,从内容上A和B都正确,但A显的更简洁,是更好的翻译。但如果使用贪心算法,输入"Jane is"后,可能会得到"going",因为"going"更常用,所以算法最终选择的是B。
最理想的做法,是穷举每种类型的输出,然后看上一节的公式值是否为最大,这才能找到最优解,但这要穷举太多的次数,复杂度是没法接受的。
参考
- [1]. https://blog.csdn.net/weixin_38937984/article/details/102492050
- [2]. Andrew Ng Sequence Models video
Seq2Seq模型中的贪心搜索(Greedy Search)相关推荐
- Seq2Seq模型中的集束搜索(Beam Search)
1. 引入 用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文.在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同. 这里用下图来举例说明: 一个法语句子,被Seq2Se ...
- NLP自然语言处理 集束搜索(beam search)和贪心搜索(greedy search)
https://blog.csdn.net/qq_16234613/article/details/83012046 https://blog.csdn.net/weixin_38937984/art ...
- 集束搜索beam search和贪心搜索greedy search
https://blog.csdn.net/qq_16234613/article/details/83012046
- Seq2Seq模型中的label bias和exposure bias问题
从序列到序列的seq2seq模型中,存在着label bias和exposure bias问题.这两个偏差问题是由于不同的原因导致的.先给出结论在分别解释 label bias:根本原因是我们真实的目 ...
- Seq2Seq模型中的序列解码策略
导读:在序列生成类任务中,如机器翻译.自动摘要等,Seq2Seq是一种非常强大的模型.作为一种条件语言模型,它直接对P(y|x)进行建模,在生成y的过程中,始终有x作为条件.当训练好了一个这样的模型后 ...
- pytorch seq2seq模型中加入teacher_forcing机制
在循环内加的teacher forcing机制,这种为目标确定的时候,可以这样加. 目标不确定,需要在循环外加. decoder.py 中的修改 """ 实现解码器 &q ...
- 贪心搜索(greedy search)、集束搜索(beam search)、随机采样(random sample)
当我们训练完成一个自然语言生成模型后,需要使用这个模型生成新的语言(句子),如何生成这些句子,使用如下的方法:贪心搜索,集束搜索,随机搜索. 贪心搜索(greedy search)/采样(Sampli ...
- 集束搜索(beam search)和贪心搜索(greedy search)
最近读论文的时候看到文中经常用到集束搜索(beam search),可能很多人不懂这到底是个什么算法,其实很简单,顺便把贪心搜索(greedy search)也介绍一下. 贪心搜索(greedy se ...
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
最新文章
- iOS开发之圆角指定
- new Date(2019-05-10 08:00:00) 格式在IE内核或者低版本浏览器中显示NaN或者Invalid Date的问题...
- sdut 3341数据结构实验之二叉树二:遍历二叉树
- python中f点flush是什么函数_Python文件操作及内置函数flush原理解析
- 计算机要学打字吗,有了电脑打字,还需要练字吗?
- 关于 HANA CE Function
- Java Web 请求转发与请求重定向
- hdu 1760 A New Tetris Game(搜索博弈)
- Linux 学习笔记_12_文件共享服务_4_SSH
- mysql 备份优化_MySQL 备份过程优化
- 房贷提前还款怎么还?
- 10年资深面试官直言:80%人面试Java都会止步于此!
- python有什么用-Python为什么这么火?学习python有什么用?
- torch.nn.Embedding(num_embeddings, embedding_dim)的理解
- php中的refresh,PHP mysqli_refresh() 函数用法及示例
- 香港十大黄金投资公司排名榜单(2022最新版)
- 计算机图形学孔令德基础知识,计算机图形学基础教程孔令德答案
- AUTOCAD——螺旋
- 企业级360°全方位用户画像:环境搭建[五]
- 宜信大数据创新数据挖掘工程师面试经历