一. 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转化成另一种序列的形式,大致如下图:
通常encoder可以是CNN或RNN,如果是CNN通常会是看图说故事的任务,如果是RNN有可能是机器翻译、摘要提取等,这里列出我之前在网路上到的任务[1]:
二. 注意力机制
但如果只是一般的Seq2Seq 模型,其实产生的效果有限,当输入资讯过长时,会lost掉一些讯息,为了解决这样的问题,发展了注意力的机制。
注意力机制其实就是让神经网路在计算时可以了解这个input的单元与哪一个output单元的关系比较相关,愈相关的应该要在输出这个单元时多参考这个input,以图片举例来说,下图白点的地方就是注意力较大的地方,像左上一现在注意力在动物上面时,可以准确输出动物这个特徵,图片来源如[2]:
又以机器翻译为例,'我'应该会有较多的注意力放在'I'这个单词上,'有'应该会有较多的注意力放在'had'这个单词上:
这样可以让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
Genero 套件里如果在 server 上安装的,大多套件就是可执行档,以 -i 参数进行安装。...
找救援 意识到有问题时,首先寻找有没有专案遇到同样的问题——有使用 Ruby on Rails 的大...
如果是 debian 了话,要在 /etc/apt/source.list 加入 deb http:...
昨天我们以setInterval的方式,将指针放到时钟上并设定间隔,每秒钟执行1次setTime函式...
有趣的toy datasets make_moons() make_circles() 取自skle...