| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> transformer -> 正文阅读 |
|
[人工智能]transformer |
Attention在2014年由bengio团队提出。 transformer本质是一种编解码结构。 Bert?基于transformer,用于生成词向量。 transformer的编解码结构编码部分=self-Attenion?+ Feed Forward Neural Network 解码部分=self-Attenion?+ Encoder-Deccoder Attention+ Feed Forward Neural Network self-attention:? ? ? ? ?有三个不同的权值矩阵Wq、Wk、Wv 1)输入两个单词,经过embedding后(例如通过word2Vec等词嵌入方法),转换成等长的特征向量x(又称嵌入向量,均为512长度)。 2)x乘以三个权值矩阵Wq、Wk、Wv后(均为512*64维度),得到3个向量q、k、v(64维) ?3)每个词有q、k、v共3个向量,根据q和k,计算一个score=q*k 4)为了梯度稳定,对score归一化,除k向量以维度开根号,score/,dk=64,实际就是除以8。这一步的目的是缩小softmax前的差距,进而缩小softmax后的差距。实例如下:
5)softmax,得到每个kv对应的权重 6)根据权重,对各个V加权求和,得到加权特征向量 Feed Forward Neural Network:? ? 是个2层的全连接,第一层的激活函数是Relu,第二层是线性激活函数,下式中z代表self-attention的输出,FFN就是全连接结构。 ?编码部分中还有位置编码position encoding和残差的设计,即 encoding=self-attentipn+feed forward+resnet+position encodding+add & Normalize ??Multi-Head Attention? ? 多头注意力机制,transformer使用了8头,初始化8个Q、K、V矩阵,将得到的8个zi进行concat连接后,经过一个全连接层,得到最终的z
?Encoder-Decoder Attention? ? ? ?编解码注意力层,为解码器独有,接收上一层输出的Q和编码器输出的K、V Masked Multi-Head Attention? ? ?掩码多头注意力机制,在解码过程中,只能获取当前位置前面的输出,后面位置信息是masked掩码的。 两种mask:padding mask、?sequence maskpadding mask:将不同长度的序列处理成一样长度,进行对齐,短的补0,长的截断。做法是把这些位置的值加上一个非常大的负数(负无穷),经过 softmax,这些位置的概率就会接近0。
sequence mask: ? ? ?t的时刻解码器的输出只能依赖于前面的时刻。做法是产生一个上三角矩阵,上三角的值全为0,把这个矩阵作用在每一个序列上,就可以达到目的。 ? ? 在需要2种mask效果叠加的场合,2个mask相加即可。 位置编码position embedding? ? 有别于词袋模型,transformer对位置信息敏感,位置信息可以通过设计或学习得到。位置编码需要和嵌入向量相同维度,使2者可以相加。?在设计中,偶数位置,使用正弦编码,在奇数位置,使用余弦编码。 ? ? ? ? ? transformer完整结构图
? ? ?当需要多个编解码器形成堆栈时,将词嵌入(word embeddings)传递给第一个编码器。输出传递给下一个编码器,最后一个编码器的输出K、V传给所有解码器。 ? ? ? ? ? transformer是有别于cnn和rnn的一种新的结构, 优点:
缺点: ? ? ? ? 注意力只能处理固定长度的文本字符串。在输入系统之前,文本必须被分割成一定数量的段或块。这种文本块会导致上下文碎片化。例如,如果一个句子从中间分隔,那么大量的上下文就会丢失。换言之,在不考虑句子或任何其他语义边界的情况下对文本进行分隔。例如只能处理512长度的信息,有312个box时,切1段补0,;有600个box时,切2段补0。 ? ? ? ? 针对这个切断问题,提出了Transformer-XL,将上一段的信息传递到下一段。 参考文献: https://zhuanlan.zhihu.com/p/48508221 https://www.infoq.cn/article/QBloqM0Rf*SV6v0JMUlF |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 20:32:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |