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

机器学习(李宏毅)——self-Attention

一、前言

本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!!

二、大纲

  • 何为self-Attention?
  • 原理剖析
  • self-Attention VS CNN、RNN、GNN

三、何为self-Attention?

2014年就提出,但发扬光大是在2017年的Transformer 论文《Attention Is All You Need》。广泛应用在seq2seq模型中,这里就不得不举几个seq2seq的应用场景。

  • seq2seq(sequence to sequence)
    顾名思义就是输入是序列,输出也是序列,简言之输入是一排向量,输出是另外一排向量,例如:

在这里插入图片描述

四、原理剖析

  • 划重点:self-attention的精髓就是考虑上下文语义信息。

那如何考虑上下文语义信息呢? 对,就是计算相关性。
在这里插入图片描述
例如输入是一个句子,那就不单单考虑一个词了,而是和句子中不同位置的词语计算相关性,对应输出得分。

那如何计算相关性呢?
那就有百百中做法,现在举两种常见方法:
在这里插入图片描述
1、Dot-product
设有两个矩阵Wq和Wk,输入经过它们得到输出,再做点乘能够计算成输入的相关性a,具体这两个矩阵长啥样就是我们要训练出来的。

2、Additive
设有两个矩阵Wq和Wk,输入经过它们得到输出,然后相加并送入激活函数tanh,再经过W得到输出a。

感觉抽象的话,就只需要记住这步操作就是要把计算相关性的矩阵参数学出来,这是目的。

知道怎么计算了,那就实做一下。
在这里插入图片描述
说明: 要计算a1和a2、a3、a4的相关性,那就采用上述的dot-product方法两两计算,再送入softmax。q常称为query,k称为key。

接下来,再找一个v矩阵,可以理解v这个矩阵是输入的资讯,根据q和k内积的相关性得分来抽取资讯。
在这里插入图片描述
位置咨询(Positional Encoding)
在这里插入图片描述
位置资讯就是在输入时候加入e,是人为设置的。

以上就是self-attention的原理了。

小结
self-attention就是找三个矩阵q、k、v,前两个用于计算相关性,后一个的资讯信息。一言以蔽之就是根据相关性把资讯抽出来。优点是平行计算,加快速度。

变种(Multi-head Self-attention)

  • multi-head Self-attention
    就是q,k,v可以分成多个,相互独立进行运算
    在这里插入图片描述

五、self-Attention 对比

self-Attention VS CNN
self-attention 应用在目标检测、CNN上,CNN的感受野考虑的是周围8个像素的资讯,self-attention则计算整图并动态生成感受野,其实就是挑选与当前像素相关的像素。
在这里插入图片描述

self-Attention VS RNN
RNN一步步往下,并不是并行化,而self-attention并行给出输出,一次到位速度取胜。
在这里插入图片描述

self-Attention VS GNN
因为图有边相接,所以self-attention与哪个节点有关可以直接表达出来。
在这里插入图片描述

六、小结

至此,self-attention的技术介绍完毕,整体理解运算过程,记住q,k,v三个主要的矩阵,重点应用于seq2seq模型,尤其是现在爆红的chatGPT也是用的Transformer,而transformer的核心就是self-attention。

相关文章:

机器学习(李宏毅)——self-Attention

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 二、大纲 何为self-Attention?原理剖析self-Attention VS CNN、RNN、GNN 三、何为self-Attenti…...

Android和DLT日志系统

1 Linux Android日志系统 1.1 内核logger机制 drivers/staging/android/logger.c static size_t logger_offset( struct logger_log *log, size_t n) { return n & (log->size - 1); } 写的off存在logger_log中(即内核内存buffer)&am…...

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图,我的百度网盘已登录设备列表,有一个手机,2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的?下面分别给出android APP中采集手机信…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络(RNN)的时间序列预测模型,由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据,并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能,从而在实际应用中表…...

伺服报警的含义

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是设置伺服报警信号的…...

Linux | 文件描述符

文章目录 Linux | 文件描述符1. 文件描述符概述2. 与文件描述符关联的数据结构2.1 进程级的文件描述符表(struct files_struct)2.2 文件描述符表项(struct fdtable)2.3 文件对象(struct file)2.4 索引节点&…...

蓝桥杯-洛谷刷题-day5(C++)(为未完成)

1.P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 i.题目 ii.代码 #include <iostream> #include <string> using namespace std;int N, Na, Nb; //0-"剪刀", 1-"石头", 2-"布", 3-"蜥", 4-"斯"&#xff1…...

LVS 负载均衡集群(NAT模式)

一、环境准备 四台主机&#xff08;一台 LVS、两台 RS、一台客户端&#xff09; 1.1.LVS 主机 LVS 主机&#xff08;两块网卡&#xff09; 第一块&#xff1a;NAT模式&#xff08;内网&#xff09; 第二块&#xff1a;添加网卡&#xff08;仅主机模式&#xff09;&#xff0…...

开源的轻量级分布式文件系统FastDFS

FastDFS 是一个开源的轻量级分布式文件系统&#xff0c;专为高性能的分布式文件存储设计&#xff0c;主要用于解决海量文件的存储、同步和访问问题。它特别适合以中小文件&#xff08;如图片、视频等&#xff09;为载体的在线服务&#xff0c;例如相册网站、视频网站等。 FastD…...

解决 DeepSeek 官网服务器繁忙的实用方案

解决 DeepSeek 官网服务器繁忙的实用方案 大家在使用 DeepSeek 时&#xff0c;是不是经常遇到官网服务器繁忙&#xff0c;等半天都加载不出来的情况&#xff1f;别担心&#xff0c;今天就给大家分享一个用 DeepSeek 硅基流动 Cherry Studio 解决这个问题的实用方案&#xff…...

Terraform 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案

1. 如何高效管理 Terraform 状态&#xff1f; 使用远程后端&#xff0c;如 S3 或 GCS&#xff0c;存储 Terraform 状态文件。这可以支持协作并确保团队工作时状态的一致性。使用 DynamoDB 或 GCS 锁定状态以防止同时修改状态。 示例&#xff1a; backend "s3" {bu…...

嵌入式八股文面试题(二)C语言算法

相关概念请查看文章&#xff1a;C语言概念。 1. 如何实现一个简单的内存池&#xff1f; 简单实现&#xff1a; #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…...

#渗透测试#批量漏洞挖掘#LiveBos UploadFile 任意文件上传漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 漏洞背景 漏洞成因 影响评估 检测方案 …...

ds-download-link 插件:以独特图标选择,打造文章下载链接

源码介绍 “ds-download-link”插件为 WordPress 网站提供了在文章编辑器中添加下载链接的功能&#xff0c;每个下载链接都支持图标选择&#xff0c;并能将这些链接以美观的样式展示在文章前端页面。以下是该插件的主要特性和功能&#xff1a; 后台功能 在文章编辑器下方添加…...

介绍下SpringBoot在分布式架构中,如何实现读写分离

在分布式架构中&#xff0c;Spring Boot 可以通过多种方式实现读写分离&#xff0c;以提升系统性能和扩展性。以下是常见的实现方法&#xff1a; 1. 使用多数据源 通过配置多个数据源&#xff0c;将读操作和写操作分别路由到不同的数据库实例。 实现步骤&#xff1a; 配置多…...

判断函数是否为react组件或lazy包裹的组件

function Modal(){return <p>123</p> } 实参里填入函数名,是false 实参里填入标签形式的函数,是true isValidElement(Modal)//false isValidElement(<Modal></Modal>)//true 官方说明 isValidElement – React 中文文档 但是官方并不建议用isValidE…...

【大数据安全分析】大数据安全分析技术框架与关键技术

在数字化时代,网络安全面临着前所未有的挑战。传统的网络安全防护模式呈现出烟囱式的特点,各个安全防护措施和数据相互孤立,形成了防护孤岛和数据孤岛,难以有效应对日益复杂多变的安全威胁。而大数据分析技术的出现,为解决这些问题带来了新的曙光。 大数据分析在网络安全…...

PHP 中的除以零错误

除以零错误&#xff08;Division by zero&#xff09;是指数字除以零的情况&#xff0c; 这在数学上是未定义的。在 PHP 中&#xff0c;处理这种错误的方式取决于 PHP 版本&#xff1a; PHP 7&#xff1a; 使用 / 运算符会产生一个警告 (E_WARNING) 并返回 false。 使用 intd…...

【QT】控件 -- 多元素类 | 容器类 | 布局类

&#x1f525; 目录 一、多元素类1. List Widget -- 列表2. Table Widget -- 表格3. Tree Widget -- 树形 二、容器类1. Group Box -- 分组框2. Tab Widget -- 标签页 三、布局类1. 垂直布局【使用 QVBoxLayout 管理多个控件】【创建两个 QVBoxLayout】 2. 水平布局【使用 QHBo…...

数据结构——【二叉树模版】

#思路 1、二叉树不同于数的构建&#xff0c;在树节点类中&#xff0c;有数据&#xff0c;左子结点&#xff0c;右子节点三个属性&#xff0c;在树类的构造函数中&#xff0c;添加了变量maxNodes&#xff0c;用于后续列表索引的判断 2.GetTreeNode()函数是常用方法&#xff0c;…...

centos7 curl#6 - Could not resolve host mirrorlist.centos.org; 未知的错误 解决方案

问题描述 centos7系统安装完成后&#xff0c;yum安装软件时报错“curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”” [root192 ~]# yum install vim -y 已加载插件&#xff1a;fastestmirror Determining fastest mirrors Could not retrieve mirro…...

【前端发展路径】技术成长路径、职业方向分支、行业趋势与建议、学习资源推荐

前端开发是一个快速发展的领域,技术栈和职业路径也在不断演进。以下是前端开发的典型发展路径,分为技术成长和职业方向两个维度,供参考: 一、技术成长路径 1. 初级阶段(入门) 核心技能: HTML/CSS:语义化标签、布局(Flex/Grid)、响应式设计、CSS 预处理器(Sass/Less…...

NO.15十六届蓝桥杯备战|while循环|六道练习(C++)

while循环 while语法形式 while 语句的语法结构和 if 语句⾮常相似&#xff0c;但不同的是 while 是⽤来实现循环的&#xff0c; if 是⽆法实现循环的。 下⾯是 while 循环的语法形式&#xff1a; //形式1 while ( 表达式 )语句; //形式2 //如果循环体想包含更多的语句&a…...

kotlin标准库里面也有很多java类

Kotlin 标准库中确实存在许多与 Java 类直接关联或基于 Java 类封装的结构&#xff0c;但这并不是“问题”&#xff0c;而是 Kotlin 与 JVM 生态深度兼容和互操作性的体现。以下从技术原理和设计哲学的角度详细解释&#xff1a; 一、Kotlin 与 JVM 的底层关系 Kotlin 代码最终…...

Flutter 双屏双引擎通信插件加入 GitCode:解锁双屏开发新潜能

在双屏设备应用场景日益丰富的当下&#xff0c;移动应用开发领域迎来了新的机遇与挑战。如何高效利用双屏设备优势&#xff0c;为用户打造更优质的交互体验&#xff0c;成为开发者们关注的焦点。近日&#xff0c;一款名为 Flutter 双屏双引擎通信插件的创新项目正式入驻 GitCod…...

01、单片机上电后没有正常运行怎么办

单片机上电后没有运转, 首先要检查什么? 1、单片机供电是否正常? &电路焊接检查 如果连最基本的供电都没有,其它都是空谈啊!检查电路断路了没有?短路了没有?电源合适吗?有没有虚焊? 拿起万用表之前,预想一下测量哪里?供电电压应该是多少?对PCB上电压测量点要…...

使用 EMQX 接入 LwM2M 协议设备

LwM2M 协议介绍 LwM2M 是一种轻量级的物联网设备管理协议&#xff0c;由 OMA&#xff08;Open Mobile Alliance&#xff09;组织制定。它基于 CoAP &#xff08;Constrained Application Protocol&#xff09;协议&#xff0c;专门针对资源受限的物联网设备设计&#xff0c;例…...

【Elasticsearch】bool查询

Elasticsearch 的bool查询是构建复杂查询条件的核心工具之一。它允许通过布尔逻辑组合多个查询子句&#xff0c;以实现精确的搜索需求。bool查询支持四种主要的子句类型&#xff1a;must、should、filter和must_not。每种子句类型都有其特定的作用和行为。 1.bool查询的基本结构…...

Redis 常见面试题汇总(持续更新)

文章目录 01、Redis 支持哪些数据类型&#xff1f;02、谈谈对 Redis 的 AOF 机制的 rewrite 模式的理解&#xff1f;03、请列举几个 Redis 常见性能问题和解决方案04、Redis 使用的最大内存是多少&#xff1f;内存数据淘汰策略有哪些&#xff1f;05、请谈谈 Redis 的同步机制。…...

蓝桥杯备赛 Day13.1走出迷宫

链接&#xff1a;走出迷宫 题目描述 小明现在在玩一个游戏&#xff0c;游戏来到了教学关卡&#xff0c;迷宫是一个N*M的矩阵。 小明的起点在地图中用“S”来表示&#xff0c;终点用“E”来表示&#xff0c;障碍物用“#”来表示&#xff0c;空地用“.”来表示。 障碍物不能通…...