positional encoding位置编码详解:绝对位置与相对位置编码对比

本文转载自公众号夕小瑶的卖萌屋,专业带逛互联网算法圈的神操作

-----》我是传送门

关注后,回复以下口令:

回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读)

回复【入群】:加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群(大V、顶会审稿人云集)

回复【0511】:领取算法岗面试手册(刷offer神器)

回复【0424】:领取刷论文神器(挖掘每日、每月必刷重磅论文)

目录

前言

Why

What

绝对位置编码

相对位置编码

Sinusoidal Position Encoding

Complex embedding

How


前言

相信熟悉BERT的小伙伴对positional encoding(位置表示) 肯定都不会陌生~ 虽然positional encoding只是BERT中比较小的一个组成部分,但是实际上却暗藏玄机。所以,今天呢我们就把positional encoding单独拎出来对其进行一个全面的剖析~~

  • Why?为什么需要positional encoding

  • What?两种positional encoding方式:绝对位置编码与相对位置编码

  • How?不同方法优缺点对比

Why

众所周知,文本是时序型数据,词与词之间的顺序关系往往影响整个句子的含义。举个栗子:

小夕/是/一个/萌/妹子。一个/妹子/是/萌/小夕??萌/小夕/是/一个/妹子??

为了避免不必要的误会,所以我们在对文本数据进行建模的时候需要考虑词与词之间的顺序关系。

可是,要建模文本中的顺序关系必须要用positional encoding吗?

答案是No!

只有当我们使用对位置不敏感(position-insensitive)的模型对文本数据建模的时候,才需要额外使用positional encoding。

什么是对位置敏感的模型??什么又是对位置不敏感的模型??

如果模型的输出会随着输入文本数据顺序的变化而变化,那么这个模型就是关于位置敏感的,反之则是位置不敏感的。

用更清晰的数学语言来解释。设模型为函数,其中输入为一个词序列,输出结果为向量。对的任意置换,都有

则模型是关于位置不敏感的。

在我们常用的文本模型中,RNN和textCNN都是关于位置敏感的,使用它们对文本数据建模时,模型结构天然考虑了文本中词与词之间的顺序关系。而以attention为核心的transformer则是位置不敏感的,使用这一类位置不敏感的模型的时候需要额外加入positional encoding引入文本中词与词的顺序关系。

What

对于transformer模型的positional encoding有两种主流方式:

绝对位置编码

现在普遍使用的一种方法Learned Positional Embedding编码绝对位置,相对简单也很容易理解。直接对不同的位置随机初始化一个postion embedding,加到word embedding上输入模型,作为参数进行训练。

相对位置编码

使用绝对位置编码,不同位置对应的positional embedding固然不同,但是位置1和位置2的距离比位置3和位置10的距离更近,位置1和位置2与位置3和位置4都只相差1,这些关于位置的相对含义模型能够通过绝对位置编码get到吗?使用Learned Positional Embedding编码,位置之间没有约束关系,我们只能期待它隐式地学到,是否有更合理的方法能够显示的让模型理解位置的相对关系呢?

所以就有了另一种更直观地方法——相对位置编码。下面介绍两种编码相对位置的方法:Sinusoidal Position Encoding和Complex embedding。

Sinusoidal Position Encoding

使用正余弦函数表示绝对位置,通过两者乘积得到相对位置:

这样设计的好处是位置的psotional encoding可以被位置线性表示,反应其相对位置关系。

Sinusoidal Position Encoding虽然看起来很复杂,但是证明可以被线性表示,只需要用到高中的正弦余弦公式:(注意:长公式可以左右滑动噢!)

对于位置的positional encoding

其中

将公式(5)(6)稍作调整,就有

注意啦,和相对距离是常数,所以有

其中为常数。

所以可以被线性表示。

计算和的内积,有

其中.

和的内积会随着相对位置的递增而减小,从而表征位置的相对距离。但是不难发现,由于距离的对称性,Sinusoidal Position Encoding虽然能够反映相对位置的距离关系,但是无法区分方向/(ㄒoㄒ)/~~

更加直观的对其可视化[1],可以看到图像关于对称,无法区分前后关系。

Complex embedding

为了更好的让模型捕获更精确的相对位置关系,比如相邻,前序(precedence)等,ICLR 2020发表的文章《Encoding Word Oder In Complex Embeddings》使用了复数域的连续函数来编码词在不同位置的表示。

不管是Learned Postional Embdedding还是Sinusoidal Position Encoding,某个词在位置上的表示为其word embedding加上对应位置的embedding,即:

同word embedding 都是从整数域到实数域的一个映射。

对于word embedding来说,这样的设计是合理的。因为不同词的index是独立的,仅和我们具体使用的词典怎么排序有关系,某个词是否在另外一个词前面或者相邻没有任何的信息。但是位置的index并不是满足独立的假设,其顺序关系对文本的正确理解有非常重要的影响。

所以,为了解决pos index的依赖问题(position-insensitive problem),文章使用了关于位置的连续函数来表征词在的表示,即:

把公式(13)展开有

其中是关于位置在复数域上的函数。

为了让上述函数更好的表征位置的相对信息,要求函数满足以下两个性质:

  1. Position-free offset transformation

存在一个函数 使得

其中在不影响理解的情况下,我们把简写成。也就是说,词在pos或者pos+k的表示可以由只和相对位置k有关的一个变换得到,而与具体这个词无关。

  1. Boundedness

要求函数有界。非常合理的一个限制。

最后,论文证明了在复数域上满足这个两个条件的函数一定为下面这样的形式:

将其改写成指数的形式,则为

其中,为振幅,为角频率,为初相,都是需要学习的参数~~

将式(17)代入(14)有

要表征词在pos上的embedding,需要学习的参数有, 以及。以此类推,要表示词表中所有的词,那么需要学习的参数量为????.由于参数量较大,论文后续还提出了一些减小参数量的方法,有兴趣的同学可以看具体查阅原文哦~~~

How

以上三种positional encoding都不同程度、各有侧重的编码了文本数据中的顺序关系,那么到底哪个更好?我们在平时使用的时候应该如何选择呢?

结果导向的话,肯定是哪种方法效果好选哪种啦~~在《Attention is all you need》[2]里面提到,Learned Positional Embedding和Sinusoidal Position Encoding两种方式的效果没有明显的差别。在论文[3],实验结果表明使用Complex embedding相较前两种方法有较明显的提升。(不过介于这个方法还比较新,大家可以多多尝试对比)。

从方法的可理解性上,相比相对位置编码的两种方法,Learned Positional Embedding更加的简单直接,易于理解。从参数维度上,使用Sinusoidal Position Encoding不会引入额外参数,Learned Positional Embedding增加的参数量会随线性增长,而Complex Embedding在不做优化的情况下,会增加三倍word embedding的参数量。在可扩展性上,Learned Positional Embedding可扩展性较差,只能表征在以内的位置,而另外两种方法没有这样的限制,可扩展性更强。

讲了这么多,相信大家对positional encoding已经有了充分的理解~~至于到底应该如何选择,还是需要基于大家对方法的理解实际问题实际分析哦????

本文转载自公众号夕小瑶的卖萌屋,专业带逛互联网算法圈的神操作

-----》我是传送门

关注后,回复以下口令:

回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读)

回复【入群】:加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群(大V、顶会审稿人云集)

回复【0511】:领取算法岗面试手册(刷offer神器)

回复【0424】:领取刷论文神器(挖掘每日、每月必刷重磅论文)

参考文献

[1] 可视化: https://kazemnejad.com/blog/transformer_architecture_positional_encoding/#what-is-positional-encoding-and-why-do-we-need-it-in-the-first-place[2] Attention is all you need: https://arxiv.org/pdf/1706.03762.pdf

[3] Complex Embeddings: https://openreview.net/pdf?id=Hke-WTVtwr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

## 作为多目标优化的多任务学习:寻找帕累托最优解+组合在线学习:实时反馈玩转组合优化-微软研究院+用于组合优化的强化学习:学习策略解决复杂的优化问题

NIPS 2018:作为多目标优化的多任务学习:寻找帕累托最优解多任务学习本质上是一个多目标问题,因为不同任务之间可能产生冲突,需要对其进行取舍。本文明确将多任务学习视为多目标优化问题,以寻求帕累托最优解。而经过实验…

手把手教你求职进入BAT

“ 最近利用部分的时间,帮助了好几位读者朋友进入了自己心仪的公司,以下我会谈到,求职简历方面给到他们的建议。 如果你本身具备很强的实力,不要因为对求职简历细节不重视,反而痛失良机。 求职加薪,除了…

one-hot(独热)、bag of word(词袋)、word-Embedding(词嵌入)浅析

目录 词袋模型 one-hot word-embedding 我们知道,传统的数据挖掘任务面向的是结构化数据。结构化数据很好理解,就是很有结构的数据嘛。 比如下面这张银行客户数据库中的表格: 编号 姓名 年龄 年收入 职业 有无欠贷 01 夕小瑶 16(…

德勤发布《 2020 亚太四大半导体市场的崛起》报告,美国收入占比达到47%,中国大陆仅占 5%

德勤发布《 2020 亚太四大半导体市场的崛起》报告(以下简称《报告》),《报告》指出: 亚太地区半导体市场正在全球加速崛起,中国大陆、日本、韩国和中国台湾,占据全球半导体总收入前六大国家/地区的四席。美…

干货 | 机器学习算法在饿了么供需平衡系统中的应用

干货 | 机器学习算法在饿了么供需平衡系统中的应用 image:url(https://ask.qcloudimg.com/avatar/1292807/6341kxs4h2.png?imageView2/2/w/72)">用户1292807发表于携程技术中心订阅830作者简介陈宁,饿了么人工智能与策略部高级算法专家,负责供…

研讨会 | “人工智能与行业知识图谱技术实战”研讨会

人工智能时代2017年7月,国务院《新一代人工智能发展规划》明确提出“建立新一代人工智能关键共性技术体系”的重点任务和设立“新一代人工智能重大科技项目以及“1N”人工智能项目群”,特别强调“研究跨媒体统一表征、关联理解与知识挖掘、知识图谱构建与…

Sigmoid函数与Softmax函数的区别与联系

目录 缘起逻辑回归 Sigmoid Softmax 缘起逻辑回归 逻辑回归模型是用于二类分类的机器学习模型(不要说逻辑回归可以做多类分类啊喂,那是二类分类器的组合策略问题,而与逻辑回归分类器本身的构造没有半毛钱关系啊)。 我们知道&…

数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区

机器学习就是样本中有大量的x(特征量)和y(目标变量)然后求这个function。(了解更多可以看: https://zhuanlan.zhihu.com/p/21340974?refermlearn ) 求函数的方法,基于理论上来说&am…

阿里P8高级架构师教你如何通过BAT面试顺利拿到offer

“ 在开始面试之旅之前还是要多说几句,选公司是要看时机的 ,建议先去小公司试试水,找找感觉,其次建议选熟人内推,也是对面试成功率有帮助的,那么就开始今天的面试之旅吧。 一:招聘方式 BAT技术…

论文浅尝 | SenticNet 5: 借助上下文嵌入信息为情感分析发现概念级别的原语

Citation: Cambria E, Poria S, Hazarika D, et al.SenticNet 5: discovering conceptual primitives for sentiment analysis by meansof context embeddings[C]//AAAI. 2018.概述目前大部分的人工智能的研究都集中在基于统计学习的方法,这些方法需要大量的训练数据…

文本匹配(语义相似度)综述

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…

大型网站架构设计

“ 大型网站的架构设计,涉及到的面非常多,并不像大家想象的那样,就是一个网站这么简单,今天抛砖引玉,希望能给想从事互联网行业的同学一点初步的概念。 架构设计,其实就要清楚整个大型网站技术架构的演变…

强化学习之原理与应用

PaddlePaddle原创2019/02/20 17:23强化学习之原理与应用强化学习特别是深度强化学习近年来取得了令人瞩目的成就,除了应用于模拟器和游戏领域,在工业领域也正取得长足的进步。百度是较早布局强化学习的公司之一。这篇文章系统地介绍强化学习算法基础知识…

论文浅尝 | 基于多原型mention向量的文本-实体联合学习

链接:http://anthology.aclweb.org/P/P17/P17-1149.pdf概述在知识库和文本的联合表示中,歧义是个困扰的难题。同一个 mention 可能在不同的语境下表述不同实体,同一个实体又有多种 mention 表示,如下图。本文提出了一个新的表示方…

NLP预训练模型综述:从word2vec, ELMo到BERT

目录 前言 word2vec 模型 负采样 char-level与上下文 ELMo BERT 深层双向的encoding 学习句子与句对关系表示 简洁到过分的下游任务接口 前言 还记得不久之前的机器阅读理解领域,微软和阿里在SQuAD上分别以R-Net和SLQA超过人类,百度在MS MARCO…

一篇文章了解架构设计的本质

“ 大型网站的架构设计,涉及到的面非常多,并不像大家想象的那样,就是一个网站这么简单,今天抛砖引玉,希望大家正确看待架构设计。 什么是架构设计的本质? 任何系统,自然情况下,都是…

看完这篇Linux基本的操作就会了

只有光头才能变强这个学期开了Linux的课程了,授课的老师也是比较负责任的一位。总的来说也算是比较系统地学习了一下Linux了~~~ 本文章主要是总结Linux的基础操作以及一些简单的概念~如果不熟悉的同学可下个Linux来玩玩(或者去买一个服务器玩玩【学生版的不是很贵】…

论文浅尝 | 基于知识图的问答变分推理

Zhang Y, Dai H, Kozareva Z, et al. Variational Reasoning for Question Answering with Knowledge Graph. Proceedings of 32th AAAI 2018动机传统的知识图谱问答主要是基语义解析的方法,这种方法通常是将问题映射到一个形式化的逻辑表达式,然后将这个…

阿里P8架构师谈:分布式架构设计(文章合集)

Docker容器 阿里P8架构师谈:Docker简介、组成架构、使用步骤、以及生态产品 阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景 消息中间件 阿里P8架构师谈:消息中间件介绍、典型使用场景、以及使用原则 阿里P8架构师谈:分布…

NLP史上最全预训练模型汇总

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…