前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【NLP】Transformer理论解读

【NLP】Transformer理论解读

作者头像
zstar
发布于 2022-09-16 06:59:15
发布于 2022-09-16 06:59:15
6350
举报
文章被收录于专栏:往期博文往期博文

前言

Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,目前已经在目标检测、自然语言处理时序预测等多个深度学习领域获得了应用,成为了新的研究热点。

论文题目:Attention Is All You Need 论文地址:https://arxiv.org/pdf/1706.03762v5.pdf

模型结构

不同于传统神经网络的CNN和RNN,Transformer是一种全新的Sequence to Sequence的结构,论文中的网络结构图如下:

图中,左半部分为编码器(Encoder)结构,后半部分为解码器(Decoder)结构。这里的Nx表示编码器和解码器分别有N个,论文中使用的是6个。注意这N个结构并不是简单copy,而是每个单独进行训练。

这张图乍一看有点复杂,下面将根据输入-输出的步骤,对各模块进行拆解分析。

Input Embedding

首先,输入的文字内容,需要进行词嵌入(Word Embedding)的操作,这个在NLP中比较常见。

One-Hot Encoding

在词嵌入之前,首先需要对输入的句子进行独热编码,即每一个单词仅有一个为1,其余为0。

Word Embedding

独热编码带来的问题是如果句子中的词很多,那么对于每一个词来说存在大量0,太浪费存储空间。 于是一个改进想法就是,设计一个可学习的权重矩阵W,将词向量与这个矩阵进行点乘,得到新的表示结果。

10000 和权重矩阵W

[ w00, w01, w02 w10, w11, w12 w20, w21, w22 w30, w31, w32 w40, w41, w42 ]

点乘的结果为[w00, w01, w02],这样就成功将1x5的数据降维成了1x3,完成了Embedding。

Position Encoding

有了词向量之后,下面就需要进行位置编码(Position Encoding),这是因为Transformer处理的都是高度并行化的数据,不像RNN一样,输入的内容是有先后顺序的,是一句话的所有内容一起输入,因此需要对其进行位置编码,防止位置发生错乱。

位置编码的公式如下[2]:

pos代表的是词在句子中的位置,

d_{model}

是词向量的维度(通常经过word embedding后是512),2i代表的是d中的偶数维度,2i + 1则代表的是奇数维度,这种计算方式使得每一维都对应一个正弦曲线。

这样就保证了不同位置在所有维度上不会被编码到完全一样的值,从而使每个位置都获得独一无二的编码。同时,它将允许模型通过相对位置轻松学习。

之后,将位置编码的结果和Embedding的结果进行相加,得到的结果输入到模型中。

Self-Attention

多头注意力机制(Multi-Head Attention)是Transformer的核心机制,在此之前,首先需要理解自注意力机制(Self-Attention)。

如下图[3]所示,对于输入的x,乘上w做词嵌入(就是上面提到的操作),得到模型输入的向量a。 然后,对于每一个a,分别乘上

W^q

W^k

W^v

,得到三个向量q,k,v。

之后,将每一个q分别点乘k,这样可以得到注意力矩阵。所得结果/根号d,d就是q和k的维度,这样是做一个标准化,方便计算。

对于得到的注意力

\alpha

,再进行一个soft-max归一化。

然后,将每个词的注意力分别乘以v,然后进行累加,得到输入的b向量。

论文里给出的公式如下:

例如,下图中展示

b^1

的计算步骤。

同理,

b^2

也可以类似得到。

以此类推,通过Self-Attention层之后,输入的a可以转化成b。

上面展现了单行句子输入的场景,而在实际过程中,可以利用线性代数中的矩阵乘法,来实现多行句子一起输入并行处理,这样也能够更好得发挥GPU并行计算的性能。

Multi-Head Attention

理解了Self-Attention之后,多头注意力机制(Multi-Head Attention)就比较容易理解。 如下图所示,所谓多头,就是使用多组不同的

W^q

W^k

W^v

,这样就得到了不同的注意力。

直观描述,不同的注意力头的关注点会不同,从而可以提取一段文本中不同的信息。

Add&Norm

Add&Norm包含两个结构:Add和Layer Norm。

Add比较简单,主要是应用到了残差网络(ResNet)的思想,将输入前的向量a直接复制一份添加到输出的b上,这样可以有效防止梯度消失的问题。

Layer Norm计算方式也比较简单,就是对每一个向量做一个标准化(减均值/标准差)。

对于Norm通常用的更多的是Batch Norm,也就是在图像领域频繁使用的BN层。它的方法是对于每一个批次的同维数据做一个标准化,下图是Layer Norm和Batch Norm的直观对比。

那这里为什么不用BN层呢? 这是因为在NLP任务中,输入是动态的。对于BN来说,只有在Batch_Size足够大的情况下,效果才会好。下图就展示了一种特殊情况,对于特别长的句子来说,后面的Batch_Size相当于1,这样效果不好。

Masked Multi-Head Attention

后面的Feed Forward就是一个普通的前馈神经网络,没有特殊之处。这样左侧编码器部分就分析完了,进入到右侧的解码器部分。

在解码器部分可以看到,里面的结构和编码器大致相当,唯一不同的是多了一个Masked Multi-Head Attention。

Masked Multi-Head Attention就是在Multi-Head Attention的基础上增加了一个遮罩(Masked),因为在训练中,处理当前词时,后面的词并不应该存在,但是训练集中后面的词(ground truth)是存在的,不可以做attention,所以要遮盖掉。

至此,关于Transformer的各模块就全部分析完成。

总结

Transformer的出现颠覆了以往CNN提取特征的模式,不过,我也听说Transformer因其巨大的特征量导致非常难以训练。关于这一点,后续我将通过实验去证实。

References

[1]https://www.jianshu.com/p/e6b5b463cf7b [2]https://www.bilibili.com/video/BV1Di4y1c7Zm [3]https://www.bilibili.com/video/BV1J441137V6 [4]https://mp.weixin.qq.com/s/73RAMVGpguFw-fteQwFTIw

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
携程后台产品经理面经
1.笔试 笔试一共90分钟,30道单选加3道简答。 单选主要是行测相关,提前刷刷题找到做题套路并且保证速度,问题不大,一定要给后面简答留够时间。 简答三道题: 1)目前某生活类APP投入重金切入打车市场。请分析,作为携程,是否有必要重金切入该市场?为什么? →依据现状应该是要答切入的,有个同学写的不建议,笔试结果显示一首凉凉送给你~ 2)订单日转化率= 当日订单量/当日用户访问数量。根据公式列举出导致订单日转化率降低的所有可能性。 3)请估算一下北京市有多少酒店并写出估算思路。 2.面试 携
牛客网
2018/05/30
1.3K0
去哪儿2018暑期产品实习生面经
【现状】 走完所有面试后gg了 【流程】 网申——笔试——一面——二面——HR面——offer 去哪儿的面试是一次性走完的,如果一面或者二面面完后,面试官跟你说“回去等消息”吧,就是gg的意思。 【笔试】4.2 20道单选+4道主观题 去哪儿单选不是行测,都是跟产品或者时事有关系的问题,比如: 1、以下对区块链描述正确的是什么 2、以下哪个产品是去哪儿的主要竞争对手 3、产品经理的上下游是什么 4、需求文档是写给谁看的 主观题也比较难: 1、酒店订单具有时序规律性,设计一套预测某城
牛客网
2018/05/30
7890
【春招】【腾讯止步总监面/附京东网易游戏面试题】
腾讯校招暑期实习生和外包很不一样,最关键是HC。面试流程:1.网申 2.笔试 3.群面 4.初试(一般是组长面) 5.复试(一般是总监面) 6.HR面。网申过后笔试,笔试题目有点不记得了,但是听说不太重要,因为很多大佬笔试不做然后去参加霸面。 群面: 关于PGC视频节目的题目,分析如何做一款节目。大概的思路框架:分析提干抽出有用信息-选定用户群体-找到相应场景解决某种需求。当时我觉得是个偏leader的角色,加上不断修正团队思路,且说了一些关于商业化的东西。总体而言还行,大家对我的评价都不错,然后就从上午等
牛客网
2018/05/30
2K3
携程2018暑期产品实习面经
【现状】 一面后状态变为“本轮已淘汰,进入人才库” 【流程】 网申——笔试——各地一面——远程二面/多面——HR面——offer 携程的面试流程挺奇怪的,部门随机分配,每个站点面完以后,会推到相应的部门远程面试,面试几轮也不确定,流程不透明。 【笔试】3.29 30道单选(行测)+4道主观题 1、是否建议携程重金切入打车市场,为什么建议or不建议 2、某日携程酒店日转化率降低,根据公式列举导致订单日转化率降低的所有可能性;如果订单总量没有变化,请分析订单日转化率降低的具体原因 3、估算
牛客网
2018/05/30
1.1K0
蘑菇街、华为、携程面经
昨天面试了3场,分别是蘑菇街、华为、携程,今天趁着还有点印象,整理一下面经,回馈牛友们 一.蘑菇街 蘑菇街没有走内推,官网投递的,预约的是中午12点电话面试,面试时间就11分钟,目前面试时间最短的了,问题如下: 1.自我介绍 2.项目中用到了哪些技术,最大的难点是什么,怎么学习新技术 3.说一下IOC和AOP,解释了一番,貌似面试官不满意 4.数据结构和算法了解吗,给他解释了一下快排 5.你还有什么想问的嘛 总结:最后我问面试官给个面试评价,面试官说你IOC和AOP回答错了,等通知吧,,, 晚上一查,面试失
牛客网
2018/04/28
1.3K0
滴滴、携程、小米面经
网申情况介绍 春招实习生网申一般在4月初开始,上一篇面经主要是聊了很多自己的看法之类的,这一次面经就写自己的其他面试的经过以及面试题吧 笔试介绍 笔试的话,携程、去哪儿的笔试题还是比较友好的,没有很多行测题,选择题也是考验一个行业术语解释,题量还可以,主观题比较多,不过主观题也比较适合PM答。 小米笔试题是邮件发过去的,一个是做一个音乐软件的竞品分析,另一个附加题是画一个原型图 面试问题 携程 携程的问题就是深挖简历,携程大多数事业群只有一面,那一面也不是很难,个人感觉还是比较水一些,不过也是看面试官
牛客网
2018/06/07
1.1K0
产品岗秋招提前批面经-上篇(含阿里美团头条...)
你要尽全力保护你的梦想。那些嘲笑你梦想的人,他们必定会失败,他们想把你变成和他们一样的人。我坚信,只要我心中有梦想,我就会与众不同。你也是。——《当幸福来敲门》
牛客网
2018/09/20
9820
依图产品一面加二面面经(攒人品贴)
时间一天天过去,好像什么都没变,但当你某天回首,却发现一切怎么都不同了。——《生活大爆炸》
牛客网
2018/09/20
8930
【干货】程序媛小姐姐的算法岗暑期实习指南
今天和大家分享一名程序媛小姐姐的算法岗暑期实习指南,包括时间线,笔经面经,满满的干货不容错过,话不多说进入正题:
秋枫学习笔记
2022/09/19
6750
【实习】2019届腾讯实习生面试感悟,产品岗
【实习】2019届腾讯实习生面试感悟 流程 (笔试——)群面——初试——复试——终面(HR面)——offer 背景介绍 楼主工科背景,觉得实在不喜欢编代码这种无聊的生活与工作,天秤座的好奇宝宝,就想做互联网产品了,无奈前期积累不是很多,好在面试前突击了几天,我是04.11在成都参加的腾讯实习生的面试,腾讯的面试走到了HR面,无奈被拒!!!但是结果是结果,要从过程中吸取经验的嘛。 群面:(收集了同学们遇到的几道题) 1. 校园生活中遇到的觉得最烦人、最困难的事情是什么?如何用互联网思维去解决这个问题
牛客网
2018/05/30
2.3K0
江浙沪的java春招实习综合面经
搜狐焦点 爱奇艺散招,快手,金陵科技, 地平线, 有赞,YuxiSoft,搜狐,科大讯飞,腾讯微信,趋势,酷家乐,旷世Face++,携程,爱奇艺内推,去哪儿,阿里,京东,美团点评,网易,
牛客网
2018/07/24
7490
京东技术研发产品经理面经~
京东技术研发产品经理岗面经: 介绍:笔试-初试-复试-HR面试-offer 四月中旬接到电话、邮箱和短信通知去成都面试,经历过腾讯和阿里的面试打击之后,我其实已经佛系求职了。那天初试时间是14:00,我13:30才到成都东,不过也很庆幸自己没有放弃,还是买了从重庆到成都的车 票。 初试: 面试官问题: 1.自我介绍 2.说一下你收获最多的一段实习经历 3.问个老套的问题,你觉得天猫和京东的异同点在哪里?有哪些可优化的地方? 4.说说你认为用户选择使用京东的原因 5.你的兴趣爱好是什么? 6.(接上一条,我说
牛客网
2018/06/13
1.4K0
春招大战腾讯阿里京东面试经验贴-产品小白的进阶之路
春招大战腾讯阿里京东面试经验贴-产品小白的进阶之路       后续会持续更新如何在实习期中脱颖而出,实习期间的收获与成长等,欢迎订阅。 3月10号之前,我没有做过任何关于春招的准备,我甚至都不知道产品经理具体是干嘛的。 经过2个月的辛苦准备和焦灼奋战,经历了阿里和腾讯的失败,最终获得京东软件产品经理的暑期实习资格。 我想说我是幸运的。幸运的是我的努力换来了一个好结果。 但我仅仅是幸运吗? 和那么多优秀的进入阿里腾讯等的同学相比我还有很多不足,但我还是想把我两个月里快速成长的过程和经验分享出来。这期间有焦
牛客网
2018/07/04
1.2K0
爱奇艺产品经理暑期实习面经
【背景】 985的硕士通信专业,求职方向主要在产品经理方向。今天和大家分享一下爱奇艺暑期实习的面试经历,就是那个精英实习项目。 【网申】 爱奇艺的暑期实习,感觉是简历轮筛选的比较严重。在此呢,还是建议大家简历地方好好准备,楼主当时简历大概修改了,有半个月吧,要反复修改,反复修改,这样才能保证,网上是不会挂掉。另外,如果现在再看这片面经的你如果还没有到求职的时候,尽可能的出去实习,多丰富自己的实习经历。 【一面】 下面进入正题,当时爱奇艺的面试是在一个酒店里面,也是很流水线式的面试,包括了两轮面试。大概之后会
牛客网
2018/07/04
6142
今日头条Android开发岗实习生面试
实习僧上投递的简历,6.25下午投递,当天被查看,6.26上午收到面试邀请,约定面试时间7.4  14:00
牛客网
2018/07/24
1.3K0
顺丰科技AI产品经理面经
面试公司:顺丰科技 面试岗位:产品经理(AI方向) 工作地点:深圳 面试结果:通过,但放弃了offer 今天来回顾一下我的顺丰科技的暑期实习的面试之旅,一共三面,2轮专业+1轮hr面,因为不在本地所以均为电面,历时大概半个月左右,最后通过了面试,由于一些个人的因素放弃了offer,但面试过程中还是学到了比较多的,所以也是写下来当作一个复盘。 暑期实习一开始投递简历的时候,和大家一样的策略采取了海投的策略,选择顺丰的AI产品经理,一是因为个人比较喜欢深圳二是比较看好AI的未来,觉得做AI
牛客网
2018/07/05
3K0
京东技术研发产品经理面经~
四月中旬接到电话、邮箱和短信通知去成都面试,经历过腾讯和阿里的面试打击之后,我其实已经佛系求职了。那天初试时间是14:00,我13:30才到成都东,不过也很庆幸自己没有放弃,还是买了从重庆到成都的车票。
牛客网
2018/07/24
4750
春招伪产品面经
本人背景: 科班出身,之前受家庭观念影响一直投身科研,但是自身一直并不喜欢,后经女票点醒,毅然决定转向产品,这里分享一下我在简历上0产品经验的情况下如何找产品的经历  前期准备: 前期准备非常重要,我3月份打算转之后,由于比较急躁,马不停蹄的去参加了腾讯的提前批和网易游戏的面试,结果都在群面就挂了…… 群面的经验后面再提,这里主要需要提一下,产品可能没有太多硬技能要求,但是软实力要求特别高,如果你没有真的去了解产品类的工作,没有足够的相关思考,那面试时你现场应变的时候,是很难把问题想全面想深入的,产品
牛客网
2018/05/30
5130
一个三本学生的面试之旅
前言 首先先自我介绍一下,我是一个来自三本院校的学生,大学的专业是计算机科学与技术,也就是你们口里面经常调侃的"三本狗" 和 "码农"。今年大四,我也面临着找实习单位的难题。仔细数一数,我也面试了6家,但只收到了一家offer。说实话,自己很沮丧的,没想到自己可以这么差劲。 我为什么会去写一篇文章呢?其实挺简单的,反思自己,不要抱怨。今天在android学习群里面,看着大家在讨论关于外包公司的问题,我也阐明了一些自己的观点。诸如外包公司很垃圾,疯狂加班,学不到什么东西,技术太落后了。可是说着说着,负
用户2032165
2018/06/05
1.2K0
网易PM599产品岗面经
【网申】 网申就不具体说了,主要是修改好自己的简历,只要网申都是会有笔试的,所以从笔试开始说~ 【笔试】 网易真的很注重笔试,靠笔试就筛去了很大一部分的人,最后差不多剩200个人参加面试。笔试都是问答题,没有选择题,且内容都是与自己选择的对应领域有关的,例如我选择的是内容领域,题目就分别是关于云音乐、云课堂、云阅读、网易漫画的,四选二,所以在笔试之前要对产品有相关了解。 答题的技巧主要就是要把自己的思路表达清楚,这个没有标准答案,从产品定位到市场表现,把自己的储备有逻辑的表达出来就可以。很幸运~自己成
牛客网
2018/06/13
5840
相关推荐
携程后台产品经理面经
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档