注意力机制基本思想(二)(自注意力机制)

news2025/1/18 11:55:21

 

​🌈 个人主页十二月的猫-CSDN博客
🔥 系列专栏 🏀《深度学习基础知识》

      相关专栏: 《机器学习基础知识》

                         🏐《机器学习项目实战》
                         🥎《深度学习项目实战(pytorch)》

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

回顾 

注意力机制

看一个物体的时候,我们倾向于一些重点,把我们的焦点放到更重要的信息上

所以,现在要求我们的深度学习模型也要能够为其学习的信息提供不同的注意力分配,从而让模型能够学习到更高价值的信息并且释放更多的算力资源

机制流程

1、QK 相乘:求爱好偏向和具体内容块的相似度

2、Scale变化:未来做 softmax 的时候避免出现极端情况,公式如下图

a=\frac{q*k}{\sqrt d}

3、softmax求注意力概率分配:利用softmax函数让相似度转化为注意力的分配值(在0-1之间,总和为1)

4、MatMul生成新的查询对象:将原查询对象V乘上注意力分配值得到新的查询对象V’,此时新查询对象就带上了注意力的信息

 

问题思考

注意力机制能够正常执行关键的点在于给模型提供爱好偏向。如果爱好偏向是人为外部提供的,那么对于每一个模型、每一种应用情况,我们都必须要提供不同的爱好偏向。所以,注意力机制这个模型的泛化性是很差的,这也导致这个模型并不完全智能

总之,

问题在于:注意力机制对外界信息依赖度过高

我们的设想:

 给注意力机制模型一个信息(待查询对象),模型能够自己学习待查询对象哪里重要,然后分配注意力并给出带有注意力信息的全新查询对象

 

自-注意力机制 (Self-Attention)

概述

自注意力机制最关键的点在于:K、Q、V来源于同一个X,这三者是同源的

现在外界只提供一个待查询对象X,我们需要从这个对象中提炼出板块分配K, 爱好信息Q,以及实际查询对象V

提炼的方式:

1、分配三个参数 w_Q,w_K,w_V给Q、K、V

2、通过监督学习提供的大量数据,来学习w_Q,w_K,w_V的值

3、实现通过内部数据学习得到三个信息

详细流程 

一、Q、K、V的获取

假如,通过随机梯度等模型参数训练方法以及监督学习模型提供的参数,我们已经训练好了一个模型,有了模型的参数w_Q,w_K,w_V

此时提供Thinking、Machine两个词,让模型学习单词内部的信息。首先,通过word2dev我们先将两个词变为向量的形式X1,X2。然后再分别乘上三个参数便可以得到对应的q、k、v

二、计算各单词注意力

关键点:

1、 每一个单词都有:自己的被查询对象(v),关键判断(k),在本模型中对该单词的爱好偏向特征

2、爱好偏向特征指的是:对单词特征抽象化提取后的喜欢程度。也就是说Thinking的爱好偏向特征,在其他单词中也可能存在(高维度特征,不是具象化表明的特征)。所以q1*k2也要考虑,因为Machine单词也可能有和Thinking一样被爱好的特征

3、每一个单词最后得到的注意力得分值的含义是:该单词(内部特征)全体数据中(句子)所应该分配的注意力值

4、一个单词将融入其他单词的信息,增加了语言处理中对上下文关联信息提取的能力

三、缩放、Softmax处理

关键点:

1、这里的处理和注意力机制是完全相同的 

2、d_k指的是第k个单词转为词向量后的词向量维度

四、计算最终待查询量

关键点:

1、sum=softmax*value 

2、本质就是:原本的信息*注意力分配值=最终融入注意力的待查询信息

举例 

不做注意力,its 的词向量就是单纯的 its,没有任何附加信息。但是显然从英语语法的角度来看,its后面的那个单词远远比its本身重要,并且its本身就是为了后面的名词做准备的,所以其提供的作用本身就是上下文关联

不加入注意力机制的模型对这个上下文关联的信息无法提取,这会导致模型没有办法很好的对文本进行学习

而通过自注意力机制得到新的 its 的词向量,则会包含一定的 laws 和 application 的信息,成功联系了文本的上下文信息

 一些图解

下图的内容在上文均有涉及,仅仅为加深大家的印象,所以在此不再赘述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

河北专升本(c语言各种编程题)

目录 第一类、递归调用 第二类、特殊数字 第三类、多维数组 第四类、字符处理 第五类、数学问题 第六类、排序算法 第七类、循环问题 第八类、进制转换 第九类、实际应用 第十类、图形输出 第一类、递归调用 1.汉诺塔:请输入盘子数,输出盘子移动…

JVM 性能调优命令(jps,jinfo,jstat,jstack,jmap)

常用命令:jps、jinfo、jstat、jstack、jmap jps jps查看java进程及相关信息 jps -l 输出jar包路径,类全名 jps -m 输出main参数 jps -v 输出JVM参数jps命令示例 显示本机的Java虚拟机进程: # jps 15729 jar 92153 Jps 90267 Jstat显示主类…

【QT进阶】Qt Web混合编程之html、 js的简单交互

往期回顾 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本&…

Mamba论文笔记

Mamba论文 结合序列建模任务通俗地解释什么是状态空间模型?创新点和贡献 为什么Mamba模型擅长捕获long range dependencies? 结合序列建模任务通俗地解释什么是状态空间模型? 状态空间模型(State Space Model, SSM)是…

css设置文字撑满盒子

效果如上&#xff1a; <div style"width: 250px;background-color:red;text-align-last:justify;word-break: keep-all;">为中国崛起而读书</div>

Git常见命令行操作和IDEA图形化界面操作

设置Git用户名和标签 在安装完Git以后需要设置用户和签名&#xff0c;至于为什么要设置用户签名可以看一下这篇文章【学了就忘】Git基础 — 11.配置Git用户签名说明 - 简书 (jianshu.com) 基本语法&#xff1a; git config --global user.name 用户名 git config --global u…

漳州不饱和聚酯树脂首次出口非洲

我可以确认&#xff0c;2024年4月中旬左右&#xff0c;漳州新阳科技有限公司制造的不饱和聚酯树脂产品首次出口至非洲市场。这批树脂共计167.2吨&#xff0c;经过漳州市古雷海关的监管放行后&#xff0c;被运往非洲国家阿尔及利亚和莫桑比克。这一举动标志着漳州企业在拓展国际…

深度学习基础之《TensorFlow框架(12)—图片数据》

一、图像基本知识 1、如何转换图片文件 回忆&#xff1a;之前我们在特征抽取中讲过如何将文本处理成数据 思考&#xff1a;如何将图片文件转换成机器学习算法能够处理的数据&#xff1f; 我们经常接触到的图片有两种&#xff0c;一种是黑白图片&#xff08;灰度图&#xff09;…

element-ui form表单自定义label的样式、内容

element-ui form表单自定义label的样式、内容 效果截图 代码 <el-form size"small" :inline"true" label-width"120px"><el-form-item prop"name"><div slot"label"><i style"color: red;"…

数据结构·一篇搞定顺序表!

大家好啊&#xff0c;几日不见&#xff0c;甚是想念&#xff0c;从这一篇文章开始&#xff0c;我们就要进入数据结构了哦&#xff0c;那么我们废话不多说&#xff0c;今天我们一起来搞定顺序表&#xff01;&#xff01;&#xff01; 1. 顺序表概念及结构 顺序表是一种线性结…

自定义数据 微调CLIP (结合paper)

CLIP 是 Contrastive Language-Image Pre-training 的缩写&#xff0c;是一个擅长理解文本和图像之间关系的模型&#xff0c;下面是一个简单的介绍&#xff1a; 优点&#xff1a; CLIP 在零样本学习方面特别强大&#xff0c;它可以&#xff08;用自然语言&#xff09;给出图像…

【文件系统】 F2FS文件系统学习

一、基本介绍 1、F2FS History F2FS&#xff08;Flash Friendly File System&#xff09;是专门为Nand Flash设计的一个日志型文件系统&#xff0c;于2012年12月合入Linux3.8内核&#xff0c;Google也在2018年&#xff08;Android P&#xff09;将其吸收到安卓原生版本中&…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时&#xff0c;他们不会从头开始思考。就像你在阅读这篇文章时&#xff0c;你会根…

最新版的GPT-4.5-Turbo有多强

OpenAI再次用实力证明了&#xff0c;GPT依然是AI世界最强的玩家&#xff01;在最新的AI基准测试中&#xff0c;OpenAI几天前刚刚发布的GPT-4-Turbo-2024-04-09版本&#xff0c;大幅超越了Claude3 Opus&#xff0c;重新夺回了全球第一的AI王座&#xff1a; 值得一提的是&#xf…

Assign Memory Resources to Containers and Pods

minikube addons enable metrics-server minikube addons enable metrics-server 是一个命令&#xff0c;用于在 Minikube 环境中启用 metrics-server 插件。 Minikube 是一个工具&#xff0c;可以在本地轻松创建和管理单节点 Kubernetes 集群&#xff0c;适合开发和测试。Mini…

二叉树进阶题目

1还原二叉树 #include<bits/stdc.h> using namespace std; const int N1e310; char pre[N],mid[N]; int w[N]; int ans; struct node{int l,r; }t[N]; int build(int prel,int prer,int midl,int midr){int ascpre[prel];int posw[asc];if(midl<pos)t[asc].lbuild(pre…

从 Elastic 的 Go APM 代理迁移到 OpenTelemetry Go SDK

作者&#xff1a;来自 Elastic Damien Mathieu 正如我们之前所分享的&#xff0c;Elastic 致力于帮助 OpenTelemetry&#xff08;OTel&#xff09;取得成功&#xff0c;这意味着在某些情况下构建语言 SDK 的分发版本。 Elastic 在观察性和安全数据收集方面战略性地选择了 OTel…

深入挖掘C语言 ----动态内存分配

开篇备忘录: "自给自足的光, 永远都不会暗" 目录 1. malloc和free1.1 malloc1.2 free 2. calloc和realloc2.1 calloc2.2 realloc 3. 总结C/C中程序内存区域划分 正文开始 1. malloc和free 1.1 malloc C语言提供了一个动态开辟内存的函数; void* malloc (size_t s…

Python中的迭代器:深入理解与实用指南

文章目录 1. 迭代器的基本概念2. Python中的迭代器实例3. 自定义迭代器3.1 例子3.2 详细过程 4. 迭代器的高级应用5. 常见问题与解答 迭代器是Python中非常核心的概念之一&#xff0c;在面试中也会被问到。下面我会详细介绍什么是迭代器&#xff0c;使用方法&#xff0c;以及使…

爬虫 | 基于 requests 实现加密 POST 请求发送与身份验证

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在实现一个简单的 Python 脚本&#xff0c;用于向指定的 URL 发送 POST 请求&#xff0c;并通过特定的加密算法生成请求头中的签名信息。这个脚本的背后是与某个特定的网络服务交互&#xff0c;发送特定格式的 JSON 数据…