【学习】注意力机制(Attention)和 自注意力机制(self-Attention)

参考B站:09 Transformer 之什么是注意力机制(Attention)

1. 注意力机制(Attention)

在这里插入图片描述
红色的是科学家们发现,如果给你一张这个图,你眼睛的重点会聚焦在红色区域

人–》看脸

文章看标题

段落看开头

后面的落款

这些红色区域可能包含更多的信息,更重要的信息

注意力机制:我们会把我们的焦点聚焦在比较重要的事物上

Q、K、V

我(查询对象 Q),这张图(被查询对象 V),图中包含的模块(K)。
我看这张图,第一眼,我就会去判断哪些东西对我而言更重要,哪些对我而言又更不重要(去计算 Q 和 V 里的事物的重要度)

重要度计算,其实是不是就是相似度计算(更接近),点乘其实是求内积(数学中的原理,两个矩阵点乘得到的值越大,证明两个矩阵越相似。)
Q 、 K = k 1 , k 2 , ⋅ ⋅ ⋅ , k n Q、K=k_1,k_2,···,k_n QK=k1k2⋅⋅⋅kn
通过点乘的方法计算Q 和 K 里的每一个事物的相似度,就可以拿到 Q 和
k 1 k1 k1的相似值 s 1 s1 s1,Q 和 k 2 k2 k2的相似值 s 2 s2 s2,Q 和 k n kn kn的相似值 s n sn sn.

进一步做 s o f t m a x ( s 1 , s 2 , ⋅ ⋅ ⋅ , s n ) softmax(s_1,s_2,···,sn) softmaxs1,s2,⋅⋅⋅,sn,便可以得到概率值 a 1 , a 2 , ⋅ ⋅ ⋅ , a n a_1,a_2,···,a_n a1a2⋅⋅⋅an
在这里插入图片描述
我们还得进行一个汇总,当你使用 Q 查询结束了后,Q 已经失去了它的使用价值了,我们最终还是要拿到这张图片的,只不过现在的这张图片,它多了一些信息(多了于我而言更重要,更不重要的信息在这里)。
V = ( v 1 , v 2 , ⋅ ⋅ ⋅ , v n ) = ( a 1 , a 2 , ⋅ ⋅ ⋅ , a n )•( v 1 , v 2 , ⋅ ⋅ ⋅ , v n ) = ( a 1 ∗ v 1 + a 2 ∗ v 2 + ⋅ ⋅ ⋅ + a n ∗ v n ) = V ′ V = (v_1,v_2,···,v_n)=(a_1,a_2,···,a_n)•(v_1,v_2,···,v_n)=(a_1*v_1 + a_2*v_2 + ··· + a_n*v_n )= V' V=(v1v2⋅⋅⋅vn=a1a2⋅⋅⋅anv1v2⋅⋅⋅vn=(a1v1+a2v2+⋅⋅⋅+anvn)=V

这样的话,就得到了一个新的 V’,这个新的 V’ 就包含了,哪些更重要,哪些不重要的信息在里面,然后用 V’ 代替 V。一般 K=V。

理解

注意力机制就是接收一个输入的东西(模型里面可能是特征),利用注意力机制找出图像中和该特征最相似的区域,该区域应该是提取出特征的区域,我们应该更加关注。

Transformer之自注意力机制(self-Attention)

Self-Attention 的关键点在于: K≈V≈Q 来源于同一个 X,这三者是同源的。
通过 X 找到 X 里面的关键点。
并不是 K=V=Q=X,而是通过三个参数 W Q , W K , W V W_Q,W_K,W_V WQ,WK,WV,接下来的步骤和注意力机制一模一样。

1.Q、K、V的获取

在这里插入图片描述
这里的 q 1 q_1 q1 q 2 q_2 q2 是由 x 1 x_1 x1 x 2 x_2 x2 W Q W_Q WQ 相乘得到的
k 1 k_1 k1 k 2 k_2 k2 是由 x 1 x_1 x1 x 2 x_2 x2 W K W_K WK 相乘得到的
v 1 v_1 v1 v 2 v_2 v2 是由 x 1 x_1 x1 x 2 x_2 x2 W V W_V WV 相乘得到的

这里的Q、K、V都来自于 x 1 x_1 x1 x 2 x_2 x2 ,所以是同源的。

2. Matmul (Q、K点乘,这里会和每个k进行点乘)

在这里插入图片描述
这里会先进行Q、K相乘,得到其相似值。

3.Scale+Softmax(对Q、K点乘结果进行softmax):

在这里插入图片描述
将Q、K相乘的相似值通过softmax,转为概率。

4. Matmul(得到的V1,并通过V1得到Z1):在这里插入图片描述

将前面softmax得到的概率值0.88,再与 v 1 v_1 v1相乘, v 1 ∗ 0.88 v_1*0.88 v10.88 得到一个新的向量值 v 1 v_1 v1
此时的 v 2 v_2 v2的概率值是0.12, v 2 ∗ 0.12 v_2*0.12 v20.12 得到一个新的向量值 v 2 v_2 v2

最终的 z 1 = v 2 + v 2 z_1= v_2 + v_2 z1=v2+v2, z 1 z_1 z1 中包含了 v 1 v_1 v1 v 2 v_2 v2的信息。

z 1 z_1 z1表示的就是 thinking 的新的向量表示,对于 thinking,初始词向量为 x 1 x_1 x1

现在我通过 thinking machines 这句话去查询这句话里的每一个单词和 thinking 之间的相似度,新的 z 1 z_1 z1依然是 thinking 的词向量表示,只不过这个词向量的表示蕴含了 thinking machines 这句话对于 thinking 而言哪个更重要的信息。

举个例子:
在这里插入图片描述
这里的 its 做了自注意力,其包含了这句话所有词的信息,并且对Law的相似度最高,所以这里的its最有可能代表its。
但是如果不做自注意力,这里的 its 就是单纯的三个字母 its,并没有包含任何信息。
也就是说 its 有 law 这层意思,而通过自注意力机制得到新的 its 的词向量,则会包含一定的 laws 和 application 的信息

自注意力矩阵表示:

Q 、K、V的获取

在这里插入图片描述

Z矩阵的获取

在这里插入图片描述

Z矩阵的表示

在这里插入图片描述
最终Z矩阵中就有每个单词和每个单词联系的概率值。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter多入口点entrypoint

native中引擎对象本身消耗内存(每个引擎对象约莫消耗42MB内存) 多引擎:native多引擎>启动>flutter多入口点entrypoint>多main函数>多子包元素集>多(子)程序 单引擎(复用):native单引擎>复用启动>flutter多入口点entrypoint>多m…

算法学习 | day36/60 背包问题/分割等和子集

一、题目打卡 1.1 二维背包问题 题目链接&#xff1a;46. 携带研究材料&#xff08;第六期模拟笔试&#xff09; #include<iostream> #include<vector> using namespace std;int n, bagweight;// bagweight代表行李箱空间 void solve() {vector<int> weight…

AI的力量感受(附网址)

输入 科技感的 二维码&#xff0c;生成如下&#xff0c;还是可以的 输入金属感 的芯片&#xff0c;效果就很好了 金属感 打印机&#xff0c;细节丰富&#xff0c;丁达尔效应 就有点跑题了 金属感 扫码仪 还有点像 3D 封装长这样&#xff0c;跑题比较严重 总之&#xff0c;AI还…

基于单片机分舱式电开水炉位控制系统

**单片机设计介绍&#xff0c;基于单片机分舱式电开水炉位控制系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机分舱式电开水炉位控制系统概要主要涉及通过单片机对电开水炉的各个舱位进行精确控制&#xff0c;实现水位、温度…

ids工业相机与电控位移台同步控制及数据采集

通过VS2017和OpenCV&#xff0c;实现ids工业相机与电控位移台同步控制及数据采集 目录项目环境配置代码流程及思路项目架构项目开发运行效果开发关键ids相机配置位移台环境配置相机头文件相机参数设置保存图像函数设置电控位移台头文件电控位移台设置参数最后就是通过main函数进…

2024.4.1-day06-认识 CSS(三大特性、引入方式)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; day06-认识 CSS(三大特性、引入方式) 文章目录 day06-认识 CSS(三大特性、引入方式)作业…

【频繁模式挖掘】FP-Tree算法(附Python实现)

一、实验内容简介 该实验主要使用频繁模式和关联规则进行数据挖掘&#xff0c;在已经使用过Apriori算法挖掘频繁模式后&#xff0c;这次使用FP-tree算法来编写和设计程序&#xff0c;依然使用不同规模的数据集来检验效果&#xff0c;最后分析和探讨实验结果&#xff0c;看其是…

非线性方程组求解与优化的关系 Nonlinear Optimization

解非线性方程&#xff08;Nonlinear Equations&#xff09;的技术在其动机、分析和算法实现方面与优化技术&#xff08;Optimization&#xff09;有重叠。 相似点&#xff1a; 在优化和非线性方程中&#xff0c;牛顿法是许多重要算法的核心。诸如线搜索、信赖域和每次迭代中线…

nacos分布式程序开发实例

1.通过windows docker desktop 完成 nacos 的安装/启动/配置 &#xff08;1&#xff09;先安装docker desktop docker-toolbox-windows-docker-for-windows-stable安装包下载_开源镜像站-阿里云 &#xff08;2&#xff09;配置docker 国内镜像源 Docker 镜像加速 | 菜鸟教程…

未来的技术发展趋势

文章目录 前言一、人工智能技术势必聚焦安全能力二、单云环境逐渐让位于多云环境三、后量子密码或将在美大范围普及总结前言 2023 年,与网络空间安全息息相关的人工智能等技术发展迅猛,新的信息安全时代已然拉开大幕。在目睹了 ChatGPT、“星链”和量子通信等技术展现出的巨…

[开源] 基于GRU的时间序列预测模型python代码

基于GRU的时间序列预测模型python代码分享给大家&#xff0c;记得点赞哦 #!/usr/bin/env python # coding: utf-8import time time_start time.time() import numpy as np import matplotlib.pyplot as plt import pandas as pd import math from keras.models import Sequent…

Android Studio中查看和修改project的编译jdk版本

android studio中查看和修改project的编译jdk版本操作如下&#xff1a; File->settings->Build,Execution,deployment->Build Tools->Gradles 进入Gradles页面可以查看并修改project的编译jdk版本&#xff0c;如图所示