Transformer

本文详细介绍了注意力机制在解决信息瓶颈、梯度消失问题以及增强神经网络可解释性方面的关键作用。通过RNN和Transformer模型的对比,展示了注意力机制如何通过加权平均处理输入向量,以及Transformer模型如何利用BytePairEncoding和PositionalEncoding来改进模型性能。同时讨论了Transformer的优缺点,如模型并行性和参数敏感性等。
摘要由CSDN通过智能技术生成

注意力机制

原理介绍

需要注意力机制的原因:

信息瓶颈——从encoder到decoder无法保证所有的信息都顺利传达,可以有所缺失

以下是部分背景

使用方法(通过翻译句子的rnn例子)

第一步:

传统意义上的前文“多个机场都被关闭了”给出后,RNN算出一个向量,在这个向量基础上算出接下来可能给出的字的概论

在注意力机制下,我们把这个向量和之前给出的向量做点积,7个(给定长度方便计算)得出的值所形成的向量即为注意力分数

然后将这个向量变成一个概论分布(即比例不变,但他们的和为1),如值越高代表输出端(decoder端)会更加关注这些位置的向量(与这些位置的相关程度越高)

接下来再将这个概率分布以向量形式给出

将这个向量与最初的向量s1拼接,表示decoder端的状态,用于预测下一步需要生成的单词,在“多个机场都被关闭了”这个例子中得出的答案是“many”,我们也可以从结果反证,在概率分布那一步中第一个词与“多”和“个”相关性较高,mang可反翻译成多个。

本质

对输入(value)向量的加权平均,是一个动态选择的过程

注意力机制的各种变式

前提

两个向量维度不一样

解决方法:中间加入权重矩阵

其余讲者略..........

注意力机制的特点

解决信息瓶颈问题——可以关注到输入端所有的位置

缓解RNN梯度消失的问题——在输入和输出端提供直接连接的方法

给神经网络黑匣子模型提供一定的可解释性

Transformer模型结构

概述

产生原因

因为传统的RNN模型存在很多确定,所以一位大佬发布一篇《注意力是你所需要的全部》的论文,提出了Transformer来进行机器翻译,模型大概如下

主要结构

输入层——两点不同于RNN

1.采用Byte Pair Encoding (BPE)的文本切分方式

2.加入位置向量,表示其在文本序列的位置

主要图层部分

多个Encoder Block或Decoder Block堆叠而成

输出层

线性层的变换

输入编码(BPE,PE)

前提:按空格切分的问题——词表数量太大,单数复数成两个词

Byte Pair Encoding (BPE)方式

理论

将语料库中所有的单词拆分成一个一个的字母,放到一个新的库(下文称词表库)中,再将两个相邻字母拼到一起组成一个byte gram(两个字母的组合块),统计出现频率最高的byte gram,将其加入词表库中,如在语料库中某个单词全都出现在词表库中的byte gram中,将这个单词从词表库中剔除,一直循环,生成的词表库即为将来所用的语料库。

例子

es出现数量最多,词表库加入es,又因为单词中的s全是以es形式出现,所以词表库中删去s(图中未展现)

然后est数量最多,加入est

优点

解决出现语料库中没有的单词的情况——找不到单词对应向量问题(简称OOV问题)

让模型学会low和lowest之间的关系

位置编码(Positional Encoding)

传统RNN对不同位置的同一单词识别为一个东西,但实际它们应该有所区别

解决方法

在原有的embedding上加入位置向量,根据不同位置向量对不同位置进行区分

位置函数:

(没搞懂但感觉不重要)

Encoder Block

整体结构

Add&Norm模块

Add:残差连接

Norm:正则化

Multi-Head Attention模块

前提:query向量,key向量,value向量

都是通过线性变换从输入的原始向量得到的,以便用于注意力的计算。

计算过程

将Q与K向量点积

再经过softmax操作,得出了和每个位置相关的注意力分布

将注意力分布和他对应的value矩阵相乘,得出输出(进行加权平均)

加入scaled系数

原因:随着输入矩阵的维度d变大,Q,K的乘积方差会随之变大,导致概论分布过于尖锐(如直接变成1),导致梯度越来越小,不利于参数更新

解决方法:(即加入scaled系数)

使得注意力分数的方差始终为1

多头注意力机制

目的:

旨在增强模型对不同关注方向的表达能力,提高模型对序列中不同部分的建模能力。

V,Q,K每个头都要乘对应的多个权重矩阵,即上图的Linear,不同组的Linear和VQK(一整个即为一头)都要进行上文提出的计算,得到多个结果(多个头得到的结果)

将每个头得到的结果拼接起来,并通过线性变换进行整合。这个线性变换将多头的输出映射到最终的模型输出空间。

相关函数:

总结

可多个堆叠(原论文堆了6个)

Decoder Block

修改一:加了一个Masked

mask限制得到的Q,K相乘得到的注意力分数的上三角部分变成无穷大,经过softmax后相关概论变成0

使得模型无法在当前输出步骤时看到后面的词

修改二:

中间模块的输入query向量来自decoder,而K和V向量来自encoder最后一层输出

也可以进行堆叠(原文堆叠了6层)

优化Tricks(小技巧)

(自行了解。。。)

实验结果及可视化

实验结果

评测指标有提升

花费计算机资源降低

结果可视化

making与difficult相关程度高

its和low相关程度高(原文中its代指low)

Transformer的优缺点

优点

  1. 模型能力强
  2. 适合并行计算,适配CPU计算
  3. 通过注意力模块很好建模不同单词间的关系

缺点

  1. 对参数很敏感,优化过程困难
  2. 对特长文本无力(复杂程度是N平方)
  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值