DL之self-attention:self-attention自注意力机制的简介、应用之详细攻略

简介: DL之self-attention:self-attention自注意力机制的简介、应用之详细攻略

self-attention的简介


      一个self-attention模块接收n个输入,然后返回n个输出。这个模块中发生了什么呢?用外行人的话说,self-attention机制允许输入与输入之间彼此交互(“self”),并找出它们应该更多关注的对象(“attention”)。输出是这些交互和注意力得分的总和。



1、self-attention的影响


      BERT, RoBERTa, ALBERT, SpanBERT, DistilBERT, SesameBERT, SemBERT, MobileBERT, TinyBERT, CamemBERT……共同之处是BERT,但是最底层则是self-attention。

      “BERT”的架构,更准确地说是基于Transformer的架构。基于Transformer的架构主要用于建模语言理解任务,避免了神经网络中的递归,而是完全依赖于self-attention机制来绘制输入和输出之间的全局依赖关系。



2、self-attention模块思路的8个步骤及其代码实现


DL之self-attention:self-attention模块思路的8个步骤及其代码实现

https://yunyaniu.blog.csdn.net/article/details/103496234

image.png


1、准备输入

image.png


2、初始化权重

每个输入必须有三个表示(见下图)。这些表示称为键(key,橙色)、查询(query,红色)和值(value,紫色)。在本例中,我们假设这些表示的维数是3。因为每个输入的维数都是4,这意味着每组权重必须是4×3。

注:在神经网络设置中,这些权重通常是很小的数字,使用适当的随机分布(例如高斯、Xavier和Kaiming分布)进行随机初始化。

3、推导key, query 和 value

image.png

image.png


注:在实践中,偏差向量(bias vector )可以添加到矩阵乘法的乘积。

4、计算输入1的注意力得分

为了获得注意力得分,我们首先在输入1的查询(红色)和所有键(橙色)之间取一个点积。因为有3个键表示(因为有3个输入),我们得到3个注意力得分(蓝色)。

image.png

从查询1中计算注意力得分(蓝色)

5、计算softmax

image.png

在所有注意力得分中使用softmax(蓝色)。

6、将分数与值相乘

每个输入的softmaxed attention 分数(蓝色)乘以相应的值(紫色)。结果得到3个对齐向量(黄色)。在本教程中,我们将它们称为加权值。

image.png

由值(紫色)和分数(蓝色)的相乘推导出加权值表示(黄色)

7、将权重值相加,得到输出1

image.png

将所有加权值(黄色)按元素指向求和,结果向量[2.0,7.0,1.5](深绿色)是输出1,该输出基于输入1与所有其他键(包括它自己)进行交互的查询表示。

8、对输入2和输入3重复步骤4-7

image.png

已经完成了输出1,我们对输出2和输出3重复步骤4到7。



self-attention的应用领域


更新……



相关文章
|
5月前
|
机器学习/深度学习 人工智能 关系型数据库
简化版Transformer :Simplifying Transformer Block论文详解
在这篇文章中我将深入探讨来自苏黎世联邦理工学院计算机科学系的Bobby He和Thomas Hofmann在他们的论文“Simplifying Transformer Blocks”中介绍的Transformer技术的进化步骤。这是自Transformer 开始以来,我看到的最好的改进。
63 0
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
解码注意力Attention机制:从技术解析到PyTorch实战
解码注意力Attention机制:从技术解析到PyTorch实战
191 0
|
机器学习/深度学习
随笔:注意力机制Attention
随笔:注意力机制Attention
117 0
随笔:注意力机制Attention
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制(Self-Attention)的基本知识
自注意力机制(Self-Attention)的基本知识
268 0
自注意力机制(Self-Attention)的基本知识
|
机器学习/深度学习
DL之self-attention:self-attention自注意力机制模块思路的8个步骤及其代码实现
DL之self-attention:self-attention自注意力机制模块思路的8个步骤及其代码实现
|
机器学习/深度学习 自然语言处理 BI
ICLR2022顶会论文分享-PoNet:使用多粒度Pooling结构替代attention的网络
近年来,在机器学习领域Transformer模型已成为最先进的(SOTA) 序列建模模型,包括在自然语言处理 (NLP)、计算机视觉、语音处理、基因组数据等都有着广泛的应用。
914 0
ICLR2022顶会论文分享-PoNet:使用多粒度Pooling结构替代attention的网络
|
机器学习/深度学习 自然语言处理 算法
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略(二)
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略(二)
|
机器学习/深度学习 自然语言处理 算法
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略(一)
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略
DL之Attention:Attention注意力机制的简介、应用领域之详细攻略(一)
|
机器学习/深度学习 算法 数据挖掘
DL之BN-Inception:BN-Inception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略(一)
DL之BN-Inception:BN-Inception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
|
机器学习/深度学习 算法 计算机视觉
DL之BN-Inception:BN-Inception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略(二)
DL之BN-Inception:BN-Inception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
DL之BN-Inception:BN-Inception算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略(二)