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)相关推荐

  1. Seq2Seq模型中的集束搜索(Beam Search)

    1. 引入 用Seq2Seq模型开发翻译系统时,假设输入一句法语,输出英文.在Decoder输出部分,选择不同的单词,输出(翻译)的结果也会不同. 这里用下图来举例说明: 一个法语句子,被Seq2Se ...

  2. NLP自然语言处理 集束搜索(beam search)和贪心搜索(greedy search)

    https://blog.csdn.net/qq_16234613/article/details/83012046 https://blog.csdn.net/weixin_38937984/art ...

  3. 集束搜索beam search和贪心搜索greedy search

    https://blog.csdn.net/qq_16234613/article/details/83012046

  4. Seq2Seq模型中的label bias和exposure bias问题

    从序列到序列的seq2seq模型中,存在着label bias和exposure bias问题.这两个偏差问题是由于不同的原因导致的.先给出结论在分别解释 label bias:根本原因是我们真实的目 ...

  5. Seq2Seq模型中的序列解码策略

    导读:在序列生成类任务中,如机器翻译.自动摘要等,Seq2Seq是一种非常强大的模型.作为一种条件语言模型,它直接对P(y|x)进行建模,在生成y的过程中,始终有x作为条件.当训练好了一个这样的模型后 ...

  6. pytorch seq2seq模型中加入teacher_forcing机制

    在循环内加的teacher forcing机制,这种为目标确定的时候,可以这样加. 目标不确定,需要在循环外加. decoder.py 中的修改 """ 实现解码器 &q ...

  7. 贪心搜索(greedy search)、集束搜索(beam search)、随机采样(random sample)

    当我们训练完成一个自然语言生成模型后,需要使用这个模型生成新的语言(句子),如何生成这些句子,使用如下的方法:贪心搜索,集束搜索,随机搜索. 贪心搜索(greedy search)/采样(Sampli ...

  8. 集束搜索(beam search)和贪心搜索(greedy search)

    最近读论文的时候看到文中经常用到集束搜索(beam search),可能很多人不懂这到底是个什么算法,其实很简单,顺便把贪心搜索(greedy search)也介绍一下. 贪心搜索(greedy se ...

  9. 【NLP】选择目标序列:贪心搜索和Beam search

    构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...

最新文章

  1. iOS开发之圆角指定
  2. new Date(2019-05-10 08:00:00) 格式在IE内核或者低版本浏览器中显示NaN或者Invalid Date的问题...
  3. sdut 3341数据结构实验之二叉树二:遍历二叉树
  4. python中f点flush是什么函数_Python文件操作及内置函数flush原理解析
  5. 计算机要学打字吗,有了电脑打字,还需要练字吗?
  6. 关于 HANA CE Function
  7. Java Web 请求转发与请求重定向
  8. hdu 1760 A New Tetris Game(搜索博弈)
  9. Linux 学习笔记_12_文件共享服务_4_SSH
  10. mysql 备份优化_MySQL 备份过程优化
  11. 房贷提前还款怎么还?
  12. 10年资深面试官直言:80%人面试Java都会止步于此!
  13. python有什么用-Python为什么这么火?学习python有什么用?
  14. torch.nn.Embedding(num_embeddings, embedding_dim)的理解
  15. php中的refresh,PHP mysqli_refresh() 函数用法及示例
  16. 香港十大黄金投资公司排名榜单(2022最新版)
  17. 计算机图形学孔令德基础知识,计算机图形学基础教程孔令德答案
  18. AUTOCAD——螺旋
  19. 企业级360°全方位用户画像:环境搭建[五]
  20. 宜信大数据创新数据挖掘工程师面试经历

热门文章

  1. Python实现人机交互剪刀石头布小游戏(七局四胜制)
  2. opencv处理图像数据时候,出现图像全黑
  3. Linux下python环境搭建
  4. 时间序列预测方法_让我们使用经典方法预测您的时间序列
  5. 无业务不技术:那些誓用区块链重塑的行业,发展怎么样了?
  6. Bot Chat(聊天机器人) HeroCard的简单用法
  7. uni.uploadFile上传手机内部图片
  8. 课外时间学点历史知识~
  9. FPGA——用VGA时序显示图像原理详解(2)
  10. 【Unity3D】学习笔记(第2记) 2D游戏开发基本技巧之背景制作