[Day21] NLP会用到的模型(四)-Seq2Seq

一. Sequence to Sequence

在说明transformer之前,先介绍一下何谓Sequence to Sequence的模型。Sequence to Sequqnce 简写为 Seq2Seq, 於2014时 Yoshua Bengio 团队的paper有提到这样的一个架构,主要是处理机器翻译的问题。

各位可以看成Seq2Seq的input与output只要是sequence的形式其实就可以使用这样的model,通常架构会是有一个encoder与一个decoder组成,encoder可以当作是机器正在消化input的资讯,再由decoder转化成另一种序列的形式,大致如下图:
https://ithelp.ithome.com.tw/upload/images/20210921/20140426bjZuWexJjz.png

通常encoder可以是CNN或RNN,如果是CNN通常会是看图说故事的任务,如果是RNN有可能是机器翻译、摘要提取等,这里列出我之前在网路上到的任务[1]:

  • 输入一句英文,输出一句法文,就写好了一个翻译系统
  • 输入一个问题,输出一句回覆,就架好一个聊天机器人
  • 输入一篇文章,输出一份总结,就构成一个摘要系统
  • 输入几个关键字,输出一首短诗,就成就了一名诗人

二. 注意力机制

但如果只是一般的Seq2Seq 模型,其实产生的效果有限,当输入资讯过长时,会lost掉一些讯息,为了解决这样的问题,发展了注意力的机制。

注意力机制其实就是让神经网路在计算时可以了解这个input的单元与哪一个output单元的关系比较相关,愈相关的应该要在输出这个单元时多参考这个input,以图片举例来说,下图白点的地方就是注意力较大的地方,像左上一现在注意力在动物上面时,可以准确输出动物这个特徵,图片来源如[2]:
https://ithelp.ithome.com.tw/upload/images/20210921/20140426bRVb22ntWu.png

又以机器翻译为例,'我'应该会有较多的注意力放在'I'这个单词上,'有'应该会有较多的注意力放在'had'这个单词上:
https://ithelp.ithome.com.tw/upload/images/20210921/201404267Gdxv43Vo0.png

这样可以让seq2seq的model更能知道哪些output可以参考input的哪些资讯,而Bahdanau 和 Bengio 在2014年也确实发表了一篇基於注意力机制的机器翻译的paper: “Neural Machine Translation by Jointly Learning to Align and Translate”,效果确实有明显的提升


今天概略说明了seq2seq的模型与为何有注意力机制,明天会开始介绍transformer与bert的核心: self-attention

参考资讯

[1] http://zake7749.github.io/2017/09/28/Sequence-to-Sequence-tutorial/
[2] https://zhuanlan.zhihu.com/p/31547842


<<:  企划实现(6)

>>:  [Day-12] 条件运算子以及switch

Genero Package 套件安装与更新方法

Genero 套件里如果在 server 上安装的,大多套件就是可执行档,以 -i 参数进行安装。...

[DAY6] 万事起头难

找救援 意识到有问题时,首先寻找有没有专案遇到同样的问题——有使用 Ruby on Rails 的大...

MSP430 在 linux 上的环境设定

如果是 debian 了话,要在 /etc/apt/source.list 加入 deb http:...

菜鸟日记Day 28-如何为时钟刻上数字?

昨天我们以setInterval的方式,将指针放到时钟上并设定间隔,每秒钟执行1次setTime函式...

sklearn dataset make_moons() make_circles()

有趣的toy datasets make_moons() make_circles() 取自skle...