专栏首页悦思悦读什么是Transformer?| 小白深度学习入门

什么是Transformer?| 小白深度学习入门

什么是Transformer

Transformer是什么?一句话来讲,就是完全利用attention机制来解决自然语言翻译问题。

当然这说了跟没说一样,attention机制也许大家知道,但attention何德何能,能干掉良好运行多年的RNN/LSTM呢?也许我们可以通过内窥Transformer的架构来解释这个问题。

Transformer的结构

先来看结构,Transformer总体分为encoder和decoder部分,每块各有多个层。

encoder里的每层有self attention和feed forward两层。其中encoder输入是n个词向量,n是输入最长的句子里单词数量。

decoder的输出则是类似传统的seq2seq结构,是一个一个目标语言的单词。

Self Attention

self attention究竟什么意思?很简单,self attention假设:一个句子中每个单词的含义,都部分取决于该句子里其他词。

这听着像是废话,但如果我们想用词向量来表示一个词,那很直观我们可以得出,一个句子中的一个词向量,他的计算是依赖于该句子的其他词向量的。

那具体怎么计算每个词向量呢?这个计算过程就是self attention encoding的目的,即,将句子中每个原始词向量按照attention加权相加,求出新的词向量

Attention加权相加

attention加权相加又是什么意思?句子里每个词(包括目标词自己)都对目标词有一个attention(这是个标量,即权重a),同时每个词都有自己的一个词向量表示(这个向量我们用V表示)。

每个V是靠着这个简单的word embedding过程得来的。那么每个a怎么来的?

因为这个a是表示当前attention的词对目标词权重,那很直观的,这个a值应该只凭当前词和目标词关系算出来。

怎么算呢?我们假设目标词本身有个向量(即下图中的q),而句子中每个词有个专门用来算别的词的向量(即下图中的k),这俩都是word embedding得到的。

它俩(q和k)一乘,就得到当前词对目标词的权重a(即下图中的q x k,它是一个向量,不同的值对应不同颜色的竖线,蓝色表示整数,蓝色越深则值越大,橘色表示复数,颜色越深则值越小)。

得到了所有词对目标词的权重之后,还有个问题,这些权重加起来应该等于1。于是我们在权重计算之后套一个softmax,解决问题。

Multi-heading

那什么是multi-heading?multi-heading就是同样这个取新词向量Z的事儿,咱们干8遍,得到Z1 ~ Z8。

得到这8个值之后,将每个词的所有Z连在一起,粘成一个巨大的词向量。这个词向量作为后续feed forward层的输入。可以说是相当简单粗暴了。

Position Encoding

咱们刚才聊了这么多,有个问题一直忽略了——这个模型只知道词和词之间的影响力,但它根本没考虑这些词的顺序。顺序多么重要,怎么可能不在考虑范围内!

Transformer解决的方法也是很直白,你不是不知道位置信息吗?好,我给你每个词都加上一个位置信息。这就是Position Encoding!

注意,这个加是在原有词向量上叠加一个同维度表示位置的向量,不是粘在后边。

这个位置向量怎么生成?论文里写了算法,这里不展开,感兴趣同学可以去看。关于这个方法的直观理解是什么呢?文章里这句话有意思了,大家仔细读读:

The intuition here is that adding these values to the embeddings provides meaningful distances between the embedding vectors once they’re projected into Q/K/V vectors and during dot-product attention.

什么意思呢?就是说原本在高维空间里,词向量之间都是以原点为起点的向量,现在通过这种方法,让词向量之间产生了距离。

也就是,一句话里的各个词向量通过这种方法,实际上组成了一个高维的像蛇一样的线段,而这条高维空间的“蛇”就表示这句话本身。

本文分享自微信公众号 - 悦思悦读(yuesiyuedu),作者:暴走三轮车

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 句子相似度的计算 | NLP基础

    自然语言处理的终极目标是让计算机理解人类所使用的语言。但是由于人类语言的多样性,语义的多样性等原因使得这一目标复杂度极高,目前还无法直接建模和解决。

    叶锦鲤
  • 什么是胶囊网络?| 小白深度学习入门

    胶囊网络(CapsNet)于2011年在Geoffrey Hinton的一篇名为《Transforming Autoencoders》的论文中首次出现。

    叶锦鲤
  • 数据密封舱——保证混合云安全

    如今云计算已经被很多公司所接受,许多公司都已经在或者准备将云计算部署在自己的某些业务当中。这个时候云计算商业模式的选择,就会成为一个问题。 公有云,私有云,混合...

    叶锦鲤
  • 高性能缓存库Memcached 基础教程

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://louluan.blog.c...

    亦山
  • 转移桌面文件到其他磁盘

    在使用Windows系统时,大家一般有一个习惯,习惯于把文件扔在桌面上,而桌面默认存储路径是C盘,久而久之文件越来越多,C盘可用内存也会越来越少,有没有一种方法...

    啤酒单恋小龙虾
  • 美国免费为全世界提供GPS服务,为什么中国还要搞“北斗”?

    摘要:12月27日,在国务院新闻办公室新闻发布会上,中国卫星导航系统管理办公室主任、北斗卫星导航系统新闻发言人冉承其宣布——北斗三号基本系统完成建设,于今日开始...

    钱塘数据
  • Go语言开发调试高阶

    最近在二次开发一个分布式系统,几个组件互相依赖。由于本地环境(windows系统)限制,无法像Linux环境那样,快速搭建目标程序所依赖的分布式环境。 而在远端...

    nevermosby
  • 学界 | Facebook 最新研究:自主学习一个会和世界互动的智能体

    AI 科技评论按:本文由来自 Facebook 人工智能研究院的研究员 Dhruv Batra 和 Devi Parikh 共同撰写,文中介绍了 Faceboo...

    AI科技评论
  • 【DOTA之后新里程碑】DeepMind强化学习重大突破:AI在多人射击游戏完胜人类!

    【新智元导读】继OpenAI之后,DeepMind也在多智能体强化学习方面秀肌肉:首次在第一人称射击游戏的多人模式中完胜人类,而且没有使用大量训练局数,轻松超过...

    新智元
  • Zookeeper安装部署调试命令

    下载地址: http://www.apache.org/dyn/closer.cgi/zookeeper/ 我选用清华的镜像 https://mirrors...

    Albert陈凯

扫码关注云+社区

领取腾讯云代金券