67 自注意力【动手学深度学习v2】

news2024/9/23 19:15:04

67 自注意力【动手学深度学习v2】

深度学习学习笔记
学习视频:https://www.bilibili.com/video/BV19o4y1m7mo/?spm_id_from=autoNext&vd_source=75dce036dc8244310435eaf03de4e330

给定长为n 的序列,每个xi为长为d的向量,自注意力将xi 既当key又当value又当query,这样对每个序列抽取特征得到y1-yn。
yi对应xi抽取的特征,xi是query , key-value是x1~xn。
给定一个序列,对序列中的每个元素输出,有点像RNN,不需要额外的key’-value,query都是一个东西,都是self就不要decode encode。
在这里插入图片描述

跟CNN,RNN对比
CNN 计算复杂度O(knd^2) K 是看的窗口大小(每次看K大小)。并行度是每个输出可以做并行计算。最长路径是假设有个信息要传递到很后的地方,最长序列传过去是n/k。
RNN计算复杂度O(nd^2) 每次矩阵乘法是d^2,并且要做n次。并行度O(1) 也就是很糟糕,必须等上一个时刻做完才能做下一个。最长路径是 x1的信息要一直传递到xn,要经过O(n)的序列。 RNN强时序的模型对序列的记忆比较好,特别擅长记忆一下序列。
自注意力机制(self attention) O(n^2d) 算output时query要和所有的input的做乘法,input长度是d,所有自注意力在序列比较长时,计算量比较大。并行度O(n)每次算yi 时不影响,可以继续算别的。 最长路径O(1)到任何的信息到任何一个输出直接就过去了,不需要再绕,即使在很远的地方也立即抓取过来。
于是自注意力机制比较适合长的序列,是因为设计使得它可以看得比较宽,最长路径是O(1)。
TPU是巨大的矩阵乘法做运算,非常适合attention /transformer这样的架构。
在这里插入图片描述
位置编码
和CNN/RNN相比,自注意力没有记录位置信息。加入位置信息的办法是位置编码,不改变注意力机制本身,将位置编码信息放到输入里面。假设有n个输入序列,每个序列d 个特征(n*d),位置编码矩阵也是同样大小的P,包含很多位置信息,将P+X再作为自编码的输入。
奇数列是个sin函数,偶数列是一个cos函数。
在这里插入图片描述
x坐标是行数(对应每个样本),曲线分别对应第6-9维。每次加进去一点点信息。
在这里插入图片描述
用sin,cos的好处是编码的是相对的位置信息,位置编码i+q可以线性的投影到i的位置信息,投影矩阵和序列中位置i是不相关的 ,这样在一个序列中假设一个词在序列中后两个位置相对应的时候,他们 不论出现在序列的哪个位置,对于位置信息,他们可以通过同样的线性变换w找出来。这样编码,用线性w 建模会比较好找这些句子的相对位置。
在这里插入图片描述

自注意力池化层将 xi 既当key,value又当query来抽取对应的yi 作为特征,自注意力池化层就可以给一个序列就能输出它的元素。可以完全并行,最长序列为1,也就说可以看到整个序列的信息。
计算复杂度比较高。
没有位置信息,在输入里面加入位置编码,这样在处理时是有时序信息的。编码用的sin,cos函数,使得序列在哪里相对位置都没有变。
在这里插入图片描述

QA:

  1. 给一篇文章,给几个问题,在文章中找到答案,类似于nlp中的问答。做一些推理会比较困难(chatGPT?)
  2. 自注意力机制可以理解为一个网络层,就像CNN或RNN的一层理解,他就是一个layer

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

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

相关文章

Java中的异常处理

1.概述 在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号,那么运行出来结果…

二叉树和堆的讲解和实现(图解+代码/C语言)

今天和大家分享的是二叉树的实现,关于遍历二叉树部分均采用递归的方式实现,最后附上部分OJ题供大家练习。 文章目录一、树的概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示二、二叉树的概念及结构2.1 概念2.2 二叉树的性质2.3 二叉树的存储结构2.…

proxy代理与reflect反射

proxy代理与reflect 在这之前插入一个知识点arguments,每个函数里面都有一个arguments,执行时候不传默认是所有参数,如果传了就是按顺序匹配,箭头函数没有 代理函数 代理对象也就是生成一个替身,然后这个替身处理一切的…

【深度学习】认识神经网络

上一章——过拟合与正则化 从本章开始我们将学习深度学习的内容:包括神经网络和决策树等高级算法 文章目录神经网络的生物学原理神经网络的算法结构案例——图像感知神经网络的前向传播神经网络的生物学原理 在最开始,人们想要构建一个能够模拟生物大脑…

Python __doc__属性:查看文档

在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如:import string print(string.__all__)程序执行结果为:[ascii_lett…

Zabbix 构建监控告警平台(六)

监控TCP连接监控MySQL监控php-fpm监控 Apache监控 MySQL A-B监控磁盘I/O1.监控TCP连接 1.1 tcp状态简介 netstat中的各种状态: CLOSED 初始(无连接)状态。 LISTEN 侦听状态,等待远程机器的连接…

自动驾驶规控课程学习——决策规划

行为决策系统的规划1 行为决策基础1.1 基本概念与任务行为类型:系统输入输出:输入:定位、感知、地图等输出:决策意图小例子:1.2决策系统的评价与挑战评价指标挑战(1)决策密度(2&…

卡尔曼滤波器与DSP实现

卡尔曼滤波器是利用系统状态方程,结合测量结果对系统状态进行进行最优估计的算法。本文介绍它的主要公式,并举例在C6000 DSP上实现。 推荐资料 KalmanFilter.NETUnderstanding Kalman Filters卡尔曼滤波与组合导航原理 “If you can’t explain it sim…

rust 程序设计语言入门(1)

本文是阅读《Rust程序设计语言》的学习记录,配合视频《Rust编程语言入门教程》食用更佳 环境搭建 windows下载rustup_init.exe,点击安装,默认选择msvc的toolchain,一路default即可 解决下载慢的问题,在powershell中修…

libxlsxwriter条件格式

今天来看一个libxlsxwriter的高级用法:一个条件格式的示例。 说它“高级”,也是基于非Excel专家的小白们的视角。对,没错,本小白正是这样的小白。 1 一个简单的问题 来看我们今天的场景问题:有一列数据,有…

操作系统(一): 进程和线程,进程的多种状态以及进程的调度算法

文章目录前言一、进程和线程1. 进程2. 线程二、进程和线程的区别(面试常问)三、进程调度算法3.1. 批处理系统3.2. 交互式系统3.2.1 时间片轮转3.2.2 优先级调度3.2.3 多级别反馈队列3.3. 实时系统四、进程的状态五、进程同步5.1 什么是进程同步5.2 进程同步应该遵循的几点原则前…

Qt 学习(四) —— QGridLayout栅格布局

目录一、QGridLayout布局规则二、创建QGridLayout三、成员函数1. 控件间距2. 可拉伸控件(弹簧)3. 最小行高/列宽4. 行数和列数5. 锁定纵横比6. 添加控件7. 添加布局8. 设置栅格布局原点位置9. 操作布局项9.1 访问布局项9.2 删除布局项9.3 通过索引获取布…

Git教程个人分享:如何将一个本地项目上传至远程仓库的流程

前言: 今天来分享一下,关于Git的一些教程,同时这也是我自己曾今学习Git时候的笔记,之所以更,也是方便后期自己可以去回顾,当然后面也会出一部分关于Git其他操作方面的内容。 这次我们分享的是&#xff0c…

基于JavaScript的Web端股票价格查看器——大道

🐶 基于JavaScript的Web端股票价格查看器——大道 一、项目背景 当下互联网发展迅速,互联网已经不断向传统金融领域渗透。在互联网上有大量金融领域的数据,如何利用好这些数据,对于投资者来说是十分重要的一件事情。股票价格实时…

JavaSE学习day4_01 循环for,while,do...while

1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的,所以用while格式的 代码示例: while(true){} 1.2 跳转控制语句(掌握) 跳转控制语句&…

MySQL 插入数据

数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表…

51单片机——步进电机实验,小白讲解,相互学习

步进电机简介: 步进电机是将电脉冲信号转变为角位移或多线位移的开源控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机…

Android - 自动系统签名

一、系统签名 以下是两类应用开发场景: 普通应用开发:使用公司自定义 keystore 进行签名,如:微信、支付宝系统应用开发:使用 AOSP 系统签名或厂商自定义 keystore 进行签名,如:设置、录音 系…

数学建模拓展内容:卡方检验和Fisher精确性检验(附有SPSS使用步骤)

卡方检验和Fisher精确性检验卡方拟合度检验卡方独立性检验卡方检验的前提假设Fisher精确性检验卡方拟合度检验 卡方拟合度检验概要:卡方拟合度检验也被称为单因素卡方检验,用于检验一个分类变量的预期频率和观察到的频率之间是否存在显著差异。 卡方拟…

第一部分:简单句——第二章:简单句的补充

简单句的核心构成:一主一谓 主语/宾语/表语 可以变成名词/代词/doing/to do 谓语动词有四种核心变化:三态 一否 时态语态情态否定 简单句的核心:将简单句给写对 简单句的补充:将简单句给写的更好、更充分 简单句的补充 1、限定…