| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> NLP之Transformer -> 正文阅读 |
|
[人工智能]NLP之Transformer |
总体来看,Transformer这个模型架构还是遵循着Encoder-Decoder的格式。此外,Transformer由注意力机制模块组成,因此在学习Transformer之前有必要对注意力机制有个了解(点这里)。 参考文档: Transformer1 Transformer结构对注意力机制就有初步了解之后,就可以进行Transformer的学习了! 1.1Self-attentionSelf-attention,又称自注意力,内部注意力,谷歌的这篇Transformer全是self-attention。自注意力就是 A t e n t i o n ( X , X , X ) Atention(X,X,X) Atention(X,X,X),即在序列内部做注意力,寻找序列内部的联系(从Transformer的成功来看self-attention在NLP上还是很有作用的)。 与self-attention相对的是Context-attention,即发生在Encoder和Decoder之间的注意力,比如之前关于Seq2Seq中引入的注意力机制就是Context-attention。 Note:
1.2 Scaled dot-product attention在Transformer论文中,注意力函数选择的是缩放乘性注意力——
论文中也给出了相关的图:
Q
、
K
、
V
Q、K、V
Q、K、V是什么?
Self-attention:
Encoder-Decoder-attention: Note:
1.3 Multi-head self-attention
Multi-head attention公式如下:
1.4 Residual connection
1.5 Positional Encoding到目前为止我们发现Transformer似乎没有表达序列位置信息的能力,要知道序列次序信息在NLP中是十分重要的,之前RNN结构可以天然利用次序信息,可放到Transformer里似乎没有办法了,那怎么办呢? 谷歌在文章中又引入了位置编码,positional encoding来缓解Transformer的硬伤——无法对位置信息很好的建模。 具体地,谷歌采用正弦和余弦来编码位置信息: Note:
1.6 Layer Normalization不同于BN,Layer Normalization做的是层归一化,即对某一层的所有神经元输入进行归一化,或者说每
h
i
d
d
e
n
_
s
i
z
e
hidden\_size
hidden_size个数求平均/方差。它在training和inference时没有区别,只需要对当前隐藏层计算mean and variance就行。不需要保存每层的moving average mean and variance,此外,其增加了gain和bias作为学习的参数。 1.7 MaskingTransformer也需要用到掩码技术(Masking)去对某些值进行掩盖,使其不产生效果。 1.7.1 Padding Mask由于序列的长短不一,因此为了对齐,需要对较短的序列进行填充。在注意力机制中,我们会在缺省的位子上加上一个很大的负数,这样在注意力机制的softmax步骤中就会使得这些位子的注意力权重为0,使得我们的注意力不会放在这些位子上。 1.7.2 Sequence Mask在RNN为原型的Seq2Seq中,我们在t时刻是看不到未来时刻的标签的,但这在Transformer中会出问题,为了让Decoder在解码过程中不会使标签过早的提前暴露,需要对输入进行一些mask。 Sequence Mask需要在softmax运算之前使用: 1.8 Position-wise Feed-Forward NetworksTransformer的模型结构中会有Position-wise Feed-Forward Networks的存在,这是一个两层全连接层中间接一个RELU非线性层构造而出的,表达式为: 1.9 Linear&Softmax层
2 总结2.1 Transformer模型下面总结下Transformer整个模型:
Decoder部分:
2.2 Transformer流程了解整个模型之后,我们再结合图示和具体例子对整体流程有个更深一步的了解,详见Transformer流程详解,这是网上一个博主写的,很清晰详细,点赞!!! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 15:29:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |