当前位置: 首页 > news >正文

注意力机制

概念没什么好说的,反正大家都会说,具体实战怎么写才是最为重要的

1.自注意力

假设有一组数据,都是一维的向量,这个向量可能是一个样本,可能是其他什么,都无所谓。

假设有一组一维向量x1,x2,x3,x4,x5;

第一步:他们两两之间先进行点积,则可以得到一个5*5的矩阵,每一个向量都有一个与其他向量对应的分数,这个分数叫做注意力分数,比如x3的注意力分数为[x3.*x1,x3.*x2,x3.*x3,x3.*x4,x3.*x5],要记住,这是内积,也就是点乘。

第二步:进行缩放,这一步可以用各种方法,比如使用softmax函数

第三步:加权求和,对每一组向量进行加权求和

#X是一维向量
def softmax(X):return np.exp(X)/np.sum(np.exp(X))def self_attention(X):output = np.zeros_like(X)for i, pivot_vector in enumerate(X):scores = np.zeros(len(pivot_vector))for j, vector in enumerate(X):#求第i向量其他向量之间的内积scores[j] = np.dot(pivot_vector, vector)scores /= np.sqrt(X.shape[1])#scores = softmax(scores)#对内积进行缩放new_vector = np.zeros(shape=pivot_vector.shape)for j, x in enumerate(X):#利用注意力分数加权求和--也就是特征的重要性程度new_vector += x * scores[j]output[i] = new_vectorreturn output

看代码比较容易理解,第二步的缩放过程就是用注意力分数除以特征个数的平方,然后经过softmax缩放,得到当前向量的分数,相当于它和其他向量之间的关系分析(姑且这么形容吧),第三步的求和,是用每一组的向量去乘以对应的分数,然后累加起来相当于关联到了了每一个特征向量的内容(个人理解),关联度是按照之前的分数来的。

查询-键-值模型

outputs = sum(C* pairwise(A, B))

这个表达式是上面那一段代码的总结,可以解释为对于A的每一个向量,与B的相关程度,然后利用这个相关程度的分数对C进行加权求和,A相当于查询(Q),B相当于键(K),C相当于值(V)

http://www.lryc.cn/news/174648.html

相关文章:

  • JVM-Java字节码技术笔记
  • C++ 友元、重载、继承、多态
  • Spring Boot 日志文件
  • vulhub venom
  • 量化交易之One Piece篇 - linux - 定时任务(重启服务器、执行程序、验证)
  • Qt5开发及实例V2.0-第二十三章-Qt-多功能文档查看器实例
  • 爬虫笔记_
  • Spring设计模式,事务管理和代理模式的应用
  • 基于海康Ehome/ISUP接入到LiveNVR实现海康摄像头、录像机视频统一汇聚,做到物联网无插件直播回放和控制
  • Linux下git安装及使用
  • python读取图片
  • 虚幻4学习笔记(15)读档 和存档 的实现
  • Spring面试题22:Spring支持哪些ORM框架?优缺点分别是什么?Spring可以通过哪些方式访问Hibernate?
  • 流行的Python库numpy及Pandas简要介绍
  • 【二、安装centOS】
  • 【动手学深度学习-Pytorch版】序列到序列的学习(包含NLP常用的Mask技巧)
  • AUTOSAR 面试知识回顾
  • 华为NFC设置教程(门禁卡/公交卡/校园卡等)
  • 基于微信小程序的音乐播放器设计与实现(源码+lw+部署文档+讲解等)
  • 如何取消显示Notepad++每行显示的CRLF符号
  • 数据结构与算法之时间复杂度和空间复杂度(C语言版)
  • TLS/SSL(十) session缓存、ticket 票据、TLS 1.3的0-RTT
  • C++设计模式_06_Decorator 装饰模式
  • MySQL 8.0数据库主从搭建和问题处理
  • 公众号迁移多久可以完成?
  • Spring Cloud Stream Kafka(3.2.2版本)使用
  • 8位微控制器上的轻量级SM2加密算法实现:C语言详细指南与完整代码解析
  • neo4j下载安装配置步骤
  • 【机组】计算机系统组成课程笔记 第二章 计算机中的信息表示
  • 指针笔试题详解