深度学习中transformer的原理和方法(李宏毅视频课笔记)

Y_蒋林志 Y_蒋林志     2022-12-20     723

关键词:


0 前言

本节学习的是Transformer。Google于2017年6月发布在arxiv上的一篇文章《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全self-attention的结构代替了lstm,这也是现在主流的BERT模型的基础。本文由整理李宏毅老师视频课笔记和个人理解所得,详细讲述了Transformer的原理及实现方法。我会及时回复评论区的问题,如果觉得本文有帮助欢迎点赞 😃。

1 RNN to CNN

一般常用的就是RNN,输入是一串Vector Sequence,输出也是一串Vector Sequence。RNN常用于处理输入是有序的情况,但是RNN有问题——不易被平行化(并行运算)。如图,就单向RNN而言,当仅需要输出 b 4 b^4 b4时,则需要等候 a 1 , a 2 , a 3 , a 4 a^1, a^2, a^3, a^4 a1,a2,a3,a4的输入。即使是双向的RNN, b 1 , b 2 , b 3 , b 4 b^1, b^2, b^3, b^4 b1,b2,b3,b4也不能同时计算:

所以有人想使用CNN来代替RNN,输入不变,三角形代表是一个Filter(不止一个),以3个向量为一组进行扫描。多使用几组Filter也可以做到,输入是一个Sequence,对应输出是一个Sequence:

表面上CNN和RNN一样,但是一层CNN的一个输出只考虑三个输入的Vector,但是RNN(双向的)却要考虑整个句子。所以考虑增加CNN的层数,这样就是可以使得感受野增大,即可以考虑所有的输入。CNN的好处是可以平行化,每一个Filter(三角形)都可以单独运算,并不需要等之前或者之后的Filter计算结束。

2 Self-Attention

2.1 Base Method

CNN需要叠很多层,如果只要求一层就要获得所有输入的信息怎么做呢?这里就是引入Self-Attention Layer,可以完美替代双向RNN:

输入是 x i x^i xi,通过一个embedding(映射)W矩阵得到 a i a^i ai,然后将 a i a^i ai输入到self-attention layer,分别乘上三个不同的变换,获得三个不同的vector,即 q i , k i , v i q^i,k^i,v^i qi,ki,vi,代表不同的三种意思:

接下来要做拿每一个query q q q去对每一个key k k k做attention(4对4),以 q 1 q^1 q1为例,如下图,得到4个attention:
我们已知attention的本质就是匹配度,那么就需要定义匹配度的计算:
α 1 , i = q 1 ⋅ k i / d \\alpha_1, i=q^1 \\cdot k^i / \\sqrtd α1,i=q1ki/d
其中d是 q q q k k k的维度。关于除以 d \\sqrtd d 有个这样的解释: q q q k k k的内积的值和维度d大小关系很大,这样除了之后方差就会为1了。当然定义别的匹配度也可以。

接下来通过一个Softmax Layer得到对应的概率值 α ^ 1 , 1 α ^ 1 , 2 α ^ 1 , 3 α ^ 1 , 4 \\beginarrayllll\\hat\\alpha_1,1 & \\hat\\alpha_1,2 & \\hat\\alpha_1,3 & \\hat\\alpha_1,4\\endarray α^1,1α^1,2α^1,3α^1,4

α ^ 1 , 1 α ^ 1 , 2 α ^ 1 , 3 α ^ 1 , 4 \\beginarrayllll\\hat\\alpha_1,1 & \\hat\\alpha_1,2 & \\hat\\alpha_1,3 & \\hat\\alpha_1,4\\endarray α^1,1α^1,2α^1,3α^1,4与各自的 v v v相乘之后相加( b 1 = ∑ i α ^ 1 , i v i b^1=\\sum_i \\hat\\alpha_1, i v^i b1=iα^1,ivi 等价于weight sum),得到一个向量 b 1 b^1 b1

这样Self-Attention就输出一个vector,而且产生这个 b 1 b^1 b1已经考虑了所有输入的信息,如果只想考虑local的信息,只需要将 α ^ 1 , 1 α ^ 1 , 2 α ^ 1 , 3 α ^ 1 , 4 \\beginarrayllll\\hat\\alpha_1,1 & \\hat\\alpha_1,2 & \\hat\\alpha_1,3 & \\hat\\alpha_1,4\\endarray α^1,1α^1,2α^1,3α^1,4中不需要的变成0就可以了。需要什么信息,就获取什么信息。

因为信息是已知的,在同一个时间如下图可以计算 b 2 b^2 b2,并不冲突:

总而言之,输入了 x 1 , x 2 , x 3 , x 4 x^1, x^2, x^3 ,x^4 x1,x2,x3,x4,输出了 b 1 , b 2 , b 3 , b 4 b^1, b^2, b^3, b^4 b1,b2,b3,b4,和RNN做了一样的工作,但是可以平行计算的:

2.2 Matrix Representation

接下来用矩阵的形式表述Self-Attention是怎么做平行化的。将所有的 q q q收集起来作为一个 Q Q Q矩阵,每一列作为一个 q q q,同理可以得到其他的矩阵:

接下来表述 α i , j \\alpha_i,j α查看详情

深度学习入门基础二简单理解transformer

【深度学习入门基础】二、简单理解Transformer文章目录【深度学习入门基础】二、简单理解Transformer自注意力层多头注意力Transformer输入(输出)嵌入位置编码Add和NormFeedForwardLinearNxseq2seq模型和marked注意力机制训练其他这... 查看详情

深度学习入门基础二简单理解transformer

【深度学习入门基础】二、简单理解Transformer文章目录【深度学习入门基础】二、简单理解Transformer自注意力层多头注意力Transformer输入(输出)嵌入位置编码Add和NormFeedForwardLinearNxseq2seq模型和marked注意力机制训练其他这... 查看详情

pytorch深度学习项目实战100例——基于transformer实现twitter文本隐喻二分类|第43例

前言大家好,我是阿光。本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~✨ 查看详情

transformer入门篇-深度万字长文带你轻松入门深度学习框架

前言transformer结构是google在17年的AttentionIsAllYouNeed论文中提出,在NLP的多个任务上取得了非常好的效果,可以说目前NLP发展都离不开transformer。最大特点是抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。由于其出色... 查看详情

数据并行:提升训练吞吐的高效方法|深度学习分布式训练专题

数据并行是大规模深度学习训练中非常成熟和常用的并行模式。本文将介绍数据并行的原理和主流实现方案,使用数据并行加速训练过程中需要注意的问题,以及如何优化数据并行进一步提高训练速度。希望能帮助用户... 查看详情

深度学习基础-机器学习基本原理(代码片段)

前言深度学习是机器学习的一个特定分支。我们要想充分理解深度学习,必须对机器学习的基本原理有深刻的理解。大部分机器学习算法都有超参数(必须在学习算法外手动设定)。机器学习本质上属于应用统计学,其更加强调... 查看详情

深度学习transformer相关知识学习

CNN和Transformer的区别:1)CNN卷积归纳偏置对于规模较小的数据集较为有用,但对于较大的数据集(千万级规模数据集)而言,Transformer学习相关模式就足够了,甚至更加有效;2)CNN提取局部信息,Transf... 查看详情

深度学习transformer相关知识学习

CNN和Transformer的区别:1)CNN卷积归纳偏置对于规模较小的数据集较为有用,但对于较大的数据集(千万级规模数据集)而言,Transformer学习相关模式就足够了,甚至更加有效;2)CNN提取局部信息,Transf... 查看详情

机器学习vs深度学习:了解两者的异同

在人工智能领域中,机器学习和深度学习是两个重要的概念。尽管它们都可以用于处理复杂的数据和任务,但它们在其基本原理、算法和应用方面有着显著的不同之处。在本文中,我们将详细介绍机器学习和深度学习... 查看详情

transformer机器学习模型,不懂就看这里!

近年来,Transformer机器学习模型已经成为深度学习和深度神经网络技术进步的主要亮点之一。它主要用于自然语言处理中的高级应用。谷歌正在使用它来增强其搜索引擎结果。OpenAI使用Transformer创建了著名的GPT-2和GPT-3模型。自从2... 查看详情

中公的深度学习培训怎么样?有人了解吗?

深度学习作为实现机器学习的技术,拓展了人工智能领域范畴,主要应用于图像识别、语音识别、自然语言处理。推动市场从无人驾驶和机器人技术行业扩展到金融、医疗保健、零售和农业等非技术行业,因此掌握深度学习的AI... 查看详情

深度学习一些小点

1.PyTorch中transforms的二十二个方法 https://nickhuang1996.blog.csdn.net/article/details/936109102.第三篇)pytorch数据预处理三剑客之——Dataset,DataLoader,Transform https://blog.csdn.net/qq_27825451/article/details 查看详情

深度学习之目标检测常用算法原理+实践精讲

...,一步步带大家了解和完成目标检测实战案例,尽快进入深度学习领域.课程目录:第1章课程介绍本章节主要介绍课程的主要内容、核心知识点、课程涉及到的应用案例、深度学习算法设计通用流程、适应人群、学习本门课程的前... 查看详情

深度学习transformer架构解析(代码片段)

文章目录一、Transformer背景介绍1.1Transformer的诞生1.2Transformer的优势1.3Transformer的市场二、Transformer架构解析2.1认识Transformer架构2.1.1Transformer模型的作用2.1.2Transformer总体架构图2.2输入部分实现2.2.1文本嵌入层的作用2.2.2位置编码器的... 查看详情

《自然语言处理实战入门》深度学习基础----attention注意力机制,transformer深度解析与学习材料汇总

...制attention注意力是一种稀缺的资源自注意力多头注意力2.Transformer模型的主要结构transform内部张量数据流转注意力计算自注意力的步骤计算自注意力的步骤【矩阵实现】位置编码(positionalencoding)残差链接,标准化解码器线性变... 查看详情

深度学习梯度下降和反向传播原理

梯度下降和反向传播1.梯度是什么?2.偏导的计算2.1常见的导数计算2.2多元函数求偏导3.反向传播算法3.1计算图和反向传播3.2神经网络中的反向传播3.2.1神经网络的示意图3.2.2神经网络的计算图1.梯度是什么?梯度:是一个向量ÿ... 查看详情

《自然语言处理实战入门》深度学习基础----attention注意力机制,transformer深度解析与学习材料汇总

...制attention注意力是一种稀缺的资源自注意力多头注意力2.Transformer模型的主要结构transform内部张量数据流转注意力计算自注意力的步骤计算自注意力的步骤【矩阵实现】位置编码(positionalencoding)残差链接,标准化解码器线性变... 查看详情