【导读】这是一份用图片和代码详解自注意力机制的指南,请收好 。
BERT、RoBERTa、ALBERT、SpanBERT、DistilBERT、SesameBERT、SemBERT、MobileBERT、TinyBERT和CamemBERT的共同点是什么?答案并不是“ BERT” 。
而是“自注意力” 。我们不仅在讨论承载“ BERT” 的架构,更准确地说是基于 Transformer 的架构 。基于 Transformer 的架构主要用于对语言理解任务进行建模,避免使用神经网络中的递归,而是完全信任自注意力在输入和输出之间绘制全局依赖性的机制 。但是,这背后的数学原理是什么?
这就是我们今天要探讨的 。这篇文章的主要内容是带你了解自注意力模块中涉及的数学运算 。读完这篇文章,你应该就能够从零开始编写一个自注意力模块了 。
本文的目的不是要解释自注意力模块中的不同数字表示形式和数学运算,也不是为了证明Transfomer 中自注意的原因和精确程度(我相信已经有很多相关资料了) 。请注意,本文也没有详细介绍注意力和自注意力之间的区别 。
内容大纲
- 图解
- 代码
- 拓展到 Transformer
0.什么是自注意力?你可能会想,自注意力是否类似于注意力,答案是肯定的!它们从根本上来说概念和数学运算很多都是相通的 。
自注意模块接收 n 个输入,并返回 n 个输出 。这个模块会发生什么?用外行的话说,自关注机制允许输入之间彼此交互(“自我”)并找出它们应该给哪些对象更多注意力(“关注”) 。输出是这些交互作用和注意力得分的聚合 。
1.图解图解分为以下步骤:
- 准备输入
- 初始化权重
- 派生密钥,查询和值
- 计算输入 1 的注意力得分
- 计算 softmax
- 将分数与值相乘
- 总和加权值以获得输出 1
- 对输入 2 和输入 3 重复步骤4–7
注意:实际上,数学运算是矢量化的,即所有输入都经过数学运算 。我们稍后会在“代码”部分中看到这一点 。步骤1:准备输入

文章插图
图 1.1:
准备输入
在本教程中,我们从 3 个输入开始,每个输入的尺寸为 4 。
输入1:[1,0,1,0]输入2:[0,2,0,2]输入3:[1,1,1,1]步骤2:初始化权重
每个输入必须具有三个表示形式(请参见下图) 。这些表示形式称为键(橙色),查询(红色)和值(紫色) 。对于此示例,让我们假设这些表示的尺寸为 3 。因为每个输入的尺寸为 4,这意味着每组权重都必须为 4×3 。
注意:我们稍后将看到值的维数也是输出的维数 。【通俗易懂注意力机制 注意力机制详解】

文章插图
图 1.2:从每个输入得出键,查询和值表示
为了获得这些表示形式,每个输入(绿色)都将与一组键的权重,一组查询的权重(我知道这不是正确的拼写)和一组值的权重相乘 。在我们的示例中,我们如下“初始化”三组权重 。
键的权重:
[[0,0,1],
- 注意力分类及改善方法 注意力存在的症状及矫正方法
- 注意力不集中怎么缓解 注意力不集中应该怎么办
- 6-12岁孩子注意力不集中 小孩注意力不集中原因及治疗方法
- 真正稀缺的是注意力 注意力是稀缺资源
- 小朋友注意力不集中走神动作慢 小孩注意力不集中走神写作业拖拉
- 注意力的训练怎么提高 训练注意力有效方法
- 孩子总是注意力不集中上课老走神 孩子上课走神注意力不集中的表现
- 孩子注意力不集中如何帮他提高 提高孩子注意力不集中怎么训练
- 注意力稳定性的概念 注意力的概念界定
- 孩子注意力不集中怎么改掉 如何纠正孩子的注意力不集中
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
