由浅到深 : Self-Attention (自注意力机制)

Self-Attention

看到下面的第一个saw是动词,第二个saw是名词。
在这里插入图片描述
因为第一个saw和第二个saw在形式上没有任何差别。如果任务是进行词性的判断,把上面的词直接输入给神经网络,那么它肯定不能够正确分析。
在这里插入图片描述
想要正确分析词性,那么该怎么办呢?
一个解决方式就是让这个词考虑其上下文信息。可以设置一个window,考虑上下文的n个词,n是可以自己指定的。

在这里插入图片描述
如果有一个任务,不是一个短的window就可以解决的,而是考虑整个序列才行,那该怎么办呢?
很直接的想法就是把window开大一点,可以包含整个序列。这样就会有一个问题,输入给model的序列会有长有短,这样就需要统计整个训练资料,找出最长的一个序列,然后将window长度设置为该序列的长度。这样就会有一个致命的缺点:FC(full connected) 的参数会很大,这样不仅运算量很大,而且容易overfitting。

有没有更好的方法考虑输入的整个序列呢?
当前是今天的重点 Self-attention
self-attention会记录整个序列的信息,你输入几个vector,它就会输出几个vector。比如下图输入输入和输出了4个vector。

那么输出的4个vector有什么特点呢?
每个self-attention后输出的vector都是考虑了整个序列后才得到的。
输出的向量经过FC层后会进行相应的判断。
在这里插入图片描述
self attention是怎么考虑整个序列的呢?
下面的图可以看出,每个b向量都考虑了a1-a4向量。
在这里插入图片描述


输出的向量 b是怎么计算的呢?

根据a1找出与其相关的其他向量,每一个向量与a1关联的程度用一个数值α来表示。
在这里插入图片描述
怎么计算两个向量之间的关联性呢,也就是如何计算的α?
以下就是常见的计算α两种方式。例如左边的:输入向量分别乘上Wq和Wk 矩阵,得到q和k两个向量。然后再将q和k向量进行点乘得到α
,在这里插入图片描述
分别计算a1与a2、a3和a4的关联性。
在这里插入图片描述

q1一般也会跟自己计算关联性
在这里插入图片描述

计算出a1和每个向量的关联性之后,会做一个softmax得到α’。然后会根据得到的α’,得出哪些向量跟a1是最有关联的。接着会根据关联性来抽取重要的信息 。
在这里插入图片描述
怎么抽取重要的信息呢?
把输入的每个向量都乘上一个Wv得到新的向量,也就是下图的v1-v4。然后再将v1和v4都去乘上对应的α’,然后将他们加起来,就能得到考虑全局信息的b向量了。
如果某一个向量得到的分数越高,比如a1和a2的关联性很强也就是a’1,2的值很大,那么得到的b1的值就可能比较接近于v2。也就是哪个向量的attention的分数越大,那么这个向量的v就会dominate抽出来的结果。
在这里插入图片描述


后续会计算 q2与k1,k2,k3,k4、q3与k1,k2,k3,k4、q4与k1,k2,k3,k4的计算结果
在这里插入图片描述


从矩阵角度进行分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Wq, Wk, Wv是通过training data找出来的

在这里插入图片描述

参考自:李宏毅

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

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

相关文章

CRM自动化意味着什么?企业如何从中受益?

客户关系管理(CRM)软件不再仅仅适用于大公司或销售周期长的行业,它越来越成为各种规模企业的重要工具。 在日常工作中,当你陷入流程的所有细节时,可能会产生不必要的工作。因此,如果你想要CRM提供的组织和…

Redis的持久化策略:RDB与AOF(面试题详解)

文章来源:Redis持久化的两种方式:RDB与AOF(详解),订正了一些错误 一、概述: RDB和AOF持久化的由来? 因为Redis中的数据是基于内存的,所以如果出现服务器断电或者服务器宕机&#xf…

数据结构堆详解

[TOC]堆详解 一,堆 1.1堆的概念 堆的性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 1.2堆的存储模式 我们前面的文章提到过,二叉树的两种存储模式,一个是顺序存储,一…

【Java集合类面试八】、 介绍一下HashMap底层的实现原理

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 介绍一下HashMap底层的…

华为OD技术面试-最短距离矩阵(动态规划、广度优先)

背景 记录2023-10-21 晚华为OD三面的手撕代码题,当时没做出来,给面试官说了我的想法,评价:解法复杂了,只是简单的动态规范 或 广度优先算法,事后找资料记录实现方式。 题目 腐烂的橘子 问题描述&#xff…

怎样找外企/远程的工作

“如果你既不想卷,又不想参与职场的勾心斗角,也不算行业大牛,还不愿意冒太高风险,那还有一种渠道,就是找海外公司的远程工作,比如我有几个程序员朋友,都是拿着硅谷动辄 20w 刀的薪水&#xff0c…

头脑风暴之约瑟夫环问题

一 问题的引入 约瑟夫问题的源头完全可以命名为“自杀游戏”。本着和谐友爱和追求本质的目的,可以把问题描述如下: 现有n个人围成一桌坐下,编号从1到n,从编号为1的人开始报数。报数也从1开始,报到m人离席&#xff0c…

重生奇迹mu宠物带来不一样的体验

重生奇迹mu宠物有什么作用? 全新版本中更是推出了各种宠物,在玩游戏时还可以带着宠物,一起疯狂的刷怪等等,可以为玩家带来非常不错的游戏体验,那么下面就来给大家说说各种宠物适合做什么事情。 1、强化恶魔适合刷怪 …

爱创科技携手洽洽食品,探索渠道数字化最优解!

坚果的下半场,是从吃到喝。 消费升级大潮下,健康养生理念逐渐深入人心。以“天然健康”为核心的食品新消费潮流正加速形成,一个个打着“美味与营养”黄金设定的品类风口正被不断创建,其中人气有增无减的当属植物基饮品。据相关报告…

HarmonyOS鸿蒙原生应用开发设计- HarmonyOS Sans 字体

HarmonyOS设计文档中,为大家提供了独特的字体,开发者可以根据需要直接引用。 开发者直接使用官方提供的字体内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的字体侵权意外情况等,减少自主创…

【Linux驱动】Linux设备树(二)—— 添加设备树节点

了解了设备树的基本语法以后,就可以试着自己手动添加一个节点了,添加完节点以后,需要重新编译生成 .dtb 文件,然后保存到uboot的加载目录下。 目录 1、查看绑定信息文档 2、添加设备树节点 3、编译设备树文件(.dtb) 4、替换设…

JAVA基础(JAVA SE)学习笔记(七)面向对象编程(进阶)

前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段:Java面向对象编程 6.面向对象编程(基础) 7.面向对象编程&…

IP协议(下)

目录 一、IP分片 1.为什么需要IP分片 2.IP报头信息 二、分片的组装 1.接收方怎么知道一个报文被分片了 2.同一个报文的分片怎么全部识别出来的 3.报文如何排序,如何得知报文有没有收全 4.怎么将各分片正确组装 5.怎么确定合成的报文是正确的 6.总结 三、…

SSM - Springboot - MyBatis-Plus 全栈体系(三十五)

第八章 项目实战 四、后台功能开发 2. 首页模块开发 2.1 查询首页分类 2.1.1 需求描述 进入新闻首页,查询所有分类并动态展示新闻类别栏位 2.1.2 接口描述 url 地址:portal/findAllTypes 请求方式:get 请求参数:无 响应数据&#xff…

【Python · PyTorch】数据基础

数据基础 1. 数据操作1.1 入门1.2 运算符1.3 广播机制1.4 索引和切片1.5 节省内存1.6 转化为其他Python对象 2. 数据预处理2.1 读取数据集2.2 处理缺失值2.3 转换为张量格式 本文介绍了PyTorch数据基础,Python版本3.9.0,代码于Jupyter Lab中运行&#xf…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[5]客户端与服务端连接

红队专题 招募六边形战士队员端操作系统SystemInfo类获取系统信息发送系统信息头文件声明头文件调用 未找到来自 OleAcc.dll 的导入LINK 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 端 发送连接->进入主线程->返回socket->…

[SWPUCTF 2023 秋季新生赛] web题解

文章目录 colorful_snakeNSS_HTTP_CHEKER一键连接!ez_talkPingpingpingUnS3rialize查查needIf_elseRCE-PLUSbackup colorful_snake 打开题目,查看js源码 直接搜flag 把那三行代码复制到控制器,得到flag NSS_HTTP_CHEKER 都是http请求基本知识 抓包按照…

【保姆级教程】:docker搭建MongoDB三节点副本集

容器可以理解为一个进程,镜像是把环境,组件等都配置好,运行成容器的,容器里面运行服务,也可以说是一个进程。镜像是模板,镜像是实例。 一个镜像可以创建多个实例。也就是多个容器,容器之间相互…

驱动作业10.23

现象 test.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include "head.h"in…