self-attention - 李宏毅笔记

简介: self-attention - 李宏毅笔记

1.简介


在最常见的深度学习应用中图像识别,语音识别


图像识别


我们通常是输入一张图片,一组向量,加入到模型,模型为我们输出一个类别class或者scalar


164d24162e3147a9b5baba684a1cea34.png


语音识别


我们通常是输入一段语音,一序列的向量,加入到模型,模型为我们输出一个类别class或者scalar

29e883bbbdcf478eace7656d1e77e920.png

1.1 不同输入的向量表示方法


在日常的深度学习中,我们对模型有不同的输入,比如文本,图片,语音,图等等,我们需要对这样的输入转化为能被模型更好处理的向量。


对于图片来说,图片本质就是一个向量集组合而成的,因此不需要做处理


对于文本来说,我们需要对文本的单词,把单词映射到一组向量中,用不同的向量表示来代表一个单词。

713f115d81114e7f90f2fbe32ff081de.png

我们将apple,bag,cat,dog用不同的向量形式表示:

0ee8532ae6f64e86990c44258a5f25dd.png


self-attention就是一种新的向量计算公式,将输入层的输入的向量,通过不同的self-attention公式计算出,新的向量表示方式

74b13849b57b4e6a8869c8da86411bc0.png

1.2 为什么用self-attention


在我们输入的某一段文本时,譬如:this is a cat。


其中这个is,不只是单独一个向量独立的,它其实也是由上下文this和a cat共同去确定的。


在文本也好,语音,图片都是如此,而self-attention计算公式,就是考虑到上下文对当前向量的影响。有点类似于RNN中的LSTM但是效果比LSTM更好。


2.self-attention原理


这里借用一下b站up主“狗中赤兔”说的。


我们可以假设self-attention是一个渣男从备胎中选择一个适合的自己的对象,适合度越高的备胎,渣男投入的时间金钱就会越多(注意力为越多)

e4e799db9d6146bdae8da783ff7bb4f2.png


渣男根据自身条件Q与备胎的条件K,计算其相似度(二个矩阵的相似度,也就是矩阵相关性),最后我们用计算出的相似度给匹配到的备胎V进行加权,就知道,渣男该为那个备胎付出更多的时间金钱了。


2.1 self-attention计算流程


2.1.1 渣男自身条件q与备胎条件k计算相似度


1687253017594.png

e21f22630d684ac0a11563b61776ebd8.png

2.1.2 渣男对每个备胎的相似度整合进行归一化处理


1687253046675.png


fbe9805956254aa89dcafdfa664832e4.png


2.1.3 渣男将不同备胎的相似度对匹配到的备胎进行加权处理

a9a50605d7ec4602a3f5987db757e6bc.png


1687253087218.png



8c88d9e3b52a4f8b869adc4560163d45.png

1687253101968.png

8c88d9e3b52a4f8b869adc4560163d45.png

2.2 Multi-head Self-attention


在self-attention还有一种self-attention的变体叫Multi-head Self-attention(多头)。

步骤 1:

4144d311ac2545049acfa59633c140d8.png


步骤 2:


493ae74995294b1ebca846295b8b5fe3.png


步骤 3:

3daab81bafc943cab375e5c9fbfd24df.png


3.self- attention 与cnn,rnn


3.1 self-attention的应用


沿着self-attention出现了二种结构的变体


  • Transformer
  • BERT

3.1 self-attention vs cnn


在cnn中的卷积计算,其实也是一种注意力的计算,只不过是均匀的注意力乘积,也就是说cnn其实是self-attention的一种

self-attention 与cnn对比,数据集小的情况下,cnn精度更高,数据集更大的情况下,self-attention精度更高

f28ec43a98f74836ad8d7e6e8dfd73a7.png

3.1 self-attention vs rnn



RNN和self-attention的本质区别是,RNN必须把最左边的输入存入Memory里面然后一路带到最右边才能被最后的输出考虑,有这种序列的信息;而对于Self-attention的每一个Vector对于所有的输入都是一视同仁的,产生这种“天涯若比邻“的效果。


对于上下文来说rnn,认为上下文距离越近,影响越大,而self-attention对上下文不考虑距离,每一个词的影响都是一视同仁看待。


相关文章
|
Web App开发 存储 Android开发
update_engine简介
update_engine简介
360 5
|
人工智能 机器学习/深度学习 自然语言处理
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第一章未来十年重构商业的 六大技术1.4超越深度学习:人工智能的未来…
带你读《创新之巅: 未来十年重构商业的六大战略性技术》第一章未来十年重构商业的 六大技术1.4
|
算法 JavaScript 测试技术
经典算法面试题目-设计算法移除字符串中重复的字符(1.3)
题目 Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer.
931 0
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
273 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
371 38
Meta SAM3开源:让图像分割,听懂你的话
|
12天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
666 220