李宏毅 X 苹果书 自注意力机制 学习笔记上

news2024/10/4 22:34:51

self  attention

  • 是一种network架构
  • 使用场景:输入一组向量,这组向量的性质:数量有变化,序列长度不一

模型输入

  1. 文字处理:
  • 模型输入:句子(句子的长度,单词都不一样),处理方式:每一个词汇看成一个向量==》模型输入变成vector set
  • 词汇变向量的方法:
  1. One-hot Encoding
    具体操作:开一个很长的向量,这个向量长度和世界上的词汇数一样长,假设是10万词汇,那就开个10万维的向量,每一个维度对应一个词汇。这个向量里面没有任何语义资讯,看不到单词之间的关系,比如:看不出来cat和dog是一类,都是动物,看不出来apple和cat的区别,一个是植物,一个是动物。
  2.  Word Embedding
    给每一个词汇一个向量,这个向量是有语义的;
    把Word Embedding画出来,所有的动物聚在一起,所有的植物聚在一起


 2.声音讯号

模型输入:声音讯号

模型输入处理:把声音当作一排向量,把一段声音讯号取一个范围(这个范围叫window);把这个window里面的信息描述成向量(这个向量叫frame(帧));通常frame长度是:25ms;为了能描述整段声音,通常window会往右移10ms(通常情况)


 3.graph(图)

一个图也是一堆向量

eg:

1.社交网络图

一个节点就可以当作一个向量,这个节点(人)的资讯(他讲过的话,长相之类)就是向量内容

2. 分子图

分子上的每一个原子就是一个向量,可以用One-hot vector表示此处向量,一个分子就是一堆向量


模型输出

1.每一个向量都会输出一个label(标记)(值)(1 produce 1)(Sequence Labeling)

  • label的类型:是数值:就是回归问题;是类别:就是分类问题。
  • 场景举例:
  • 词性标注(Part-Of-Speech tagging,POS tagging):机器会自动决定每一个词汇的词性,判断该词是名词还是动词还是形容词等等。输入是词汇,输出是词性,每一个词汇有其对应的词性。
  • 音标标注:一段声音信号里面有一串向量。每一个向量都要决定它是哪一个音标。
  • 社交网络模型:给定一个社交网络模型要决定每一个节点有什么样的特性,比如某个人会不会买某个商品,这样我们才知道要不要推荐某个商品给他。

2.一整个sequence(序列)只输出一个label (多 produce 1)(多是指多个向量)

  • 场景举例:
  • 情感分析:机器看一段话模型要决定说这段话是积极的(positive)还是消极的(negative)。
  • 语音:机器听一段声音,再决定是谁讲的这个声音。
  • 图:比如给定一个分子,预测该分子的亲水性。

3.sequence输出sequence(我们不知道要输出多少label,由机器决定输出label的数量)(多 produce 多)

  • 场景举例:
  • 翻译:输入输出是不同的语言它们的词汇的数量本来就不会一样多。
  • 真正的语音识别:输入一句话,输出一段文字,其实也是一个序列到序列的任务。 

以1 produce 1(Sequence Labeling) 引入  自注意力的运作原理

给sequence的每一个向量都给一个label:输入:sequence,采用各个击破的方法,把每一个向量输入到fully-connected network,然后fully-connected network就会输出。但是这样做就会有很大的瑕疵:如果是做词性标注的问题:给 i saw a saw ,fully-connected network对这2个saw会非常疑惑,定义不出来或者是弄混。于是,我们就考虑让fully-connected network看看上下文资讯:把向量的前后向量串起来,全部丢进fully-connected network。可以给fully-connected network所有的window,让它考虑上下文的资讯

但是这个方法还是有一定的局限性:如果这个问题需要一次考虑所有的sequence才行 ,当然有人提出开一个足够包含所有sequence的window,需要先统计训练资料里最长的sequence是多长,然后再开一个比最长sequence还有长的window,开个这么大的window意味着fully-connected network需要非常多的参数,还可能会导致overfitting,为了解决这个问题,我们推出了self-attention


 self-attention应用步骤:

  1.  self-attention吃掉整个sequence,有几个输入vector就有几个输出vector,输出的vector是考虑了一整个sequence得到的
  2. 输出vector经过fully-connected network

self-attention可以叠加多次


 self-attention运作原理: 

input:一串的vector:input or a hidden layer

output :每一个输出都是考虑了所有的input

a是输入,b是输出 

以产生b1为例: 

  1. 根据a1找出这个sequence跟a1解决输出问题有关系的向量(因为想要考虑所有的sequence但是又不想把所有的sequence都包入进去);用\alpha表示同a1关联的向量的关联度;self-attention mudule决定2个向量之间的关联度的方法:需要计算2个向量的模组:1.输入:2个向量;2.直接输出\alpha,计算\alpha的方法:Dot-product:输入的2个向量分别乘2个不同的矩阵,得到2个向量值;2个向量值再次相乘得到\alpha

完整的过程:

soft-max可以换 

 

根据{\alpha}'值抽取重要资讯 

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

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

相关文章

qt QMainWindow 自定义标题栏

可以使用setMenuWidget 来将自定义的标题栏 QWidget 设置进去就可以, 用来替代setMenu 菜单栏单一,自定义不高的问题

node_exporter使用textfile collector收集业务数据

上一篇文章讲了使用Pushgateway收集业务数据的方法,今天讲另外一种方式textfile collector The textfile collector is similar to the Pushgateway, in that it allows exporting of statistics from batch jobs. The Pushgateway should be used for service-leve…

解决ModuleNotFoundError: No module named ‘torchcrf‘

运行深度学习程序时候,出现报错:ModuleNotFoundError: No module named torchcrf 将 from torchcrf import CRF 改为 from TorchCRF import CRF

无设计器简单实例

目录 1、界面设计Qt5元对象系统1. **QObject 类**2. **QMetaObject**3. **信号和槽机制**4. **宏:Q_OBJECT**5. **动态属性**6. **反射机制**7. **元对象编译器(MOC)** 2、完成程序功能 1、界面设计 不点创建界面 在dialog.h中 #ifndef DIA…

树莓派5里使用protobuf

由于现在protobuf越来越复杂了,自己去编译,还是比较麻烦。 比如最新的V28版本,就会要求使用cmake或者bazel来编译了。 如果不要求使用最新的版本,直接使用系统里带的版本也是可以的。 可以进行如下操作: sudo apt …

【算法系列-链表】交换链表节点(反转 + 交换)

【算法系列-链表】交换链表节点(反转 交换) 文章目录 【算法系列-链表】交换链表节点(反转 交换)1. 反转链表1.1 思路分析🎯1.2 解题过程🎬1.3 代码示例🌰 2. 两两交换链表中的节点2.1 思路分析🎯2.2 解题过程🎬2.3 …

电器自动化入门08:隔离变压器、行程开关介绍及选型

视频链接:3.4 电工知识:三相交流异步电动机自动往返行程控制及控制变压器选型_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW?p8&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.隔离(控制)变压器 2.行程开…

C++_智能指针详解

什么是智能指针?为什么要有智能指针?到目前为止,我们编写的程序所使用的对象都有着严格定义的生命周期。比如说,全局对象在程序启动时分配,在程序结束时销毁;再比如说局部static对象在第一次使用前分配&…

4.5章节python中的break和continue语句的作用

在Python中,break 和 continue 是两个用于控制循环流程的关键字。它们提供了在特定条件下提前退出循环或跳过当前迭代并进入下一次迭代的机制。 一、break语句 break 语句用于立即终止当前的循环(无论是 for 循环还是 while 循环)&#xff…

最佳人力资源管理工具,6款热门产品功能对比

文章介绍了ZohoPeople、北森、i人事等六款主流人力资源管理系统,涵盖招聘、培训、考勤等功能,各有特点,适合不同规模企业需求。建议企业试用后选择,提高管理效率。 一、Zoho People Zoho People是一款强大的云端人力资源管理系统…

看Threejs好玩示例,学习创新与技术(LiquidRaymarching)

今天的示例有点超出我的想象,首先会科普下WGSL这种新的着色器脚本,然后说说示例《Liquid Raymarching Scene with Three.js Shading Language | Codrops (tympanus.net)》的技术流程。本示例最终呈现的效果如下。可以看到他跟QQ那个消息拖拽消灭的效果非…

Flink 03 | 数据流基本操作

Flink数据流结构 DataStream 转换 通常我们需要分析的业务数据可能存在如下问题: 数据中包含一些我们不需要的数据 数据格式不方面分析 因此我们需要对原始数据流进行加工,比如过滤、转换等操作才可以进行数据分析。 “ Flink DataStream 转换主要作…

C++ -引用-详解

博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ C -引用-详解 1.引用基础1.1是什么1.2特点 2.引用的意义3.引用的应用场景3.1作为参数3.2作为返回值传值返回引用返回 4.权限问题5.与指针的区别6.总结 1.引用基础 1.1是什么 …

SpringBoot整合异步任务执行

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响…

小红书三面被问 RAG 原理,秒挂…

最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球…

MySQL高阶2082-富有客户的数量

目录 题目 准备数据 分析数据 题目 编写解决方案找出 至少有一个 订单的金额 严格大于 500 的客户的数量。 准备数据 Create table If Not Exists Store (bill_id int, customer_id int, amount int)Truncate table Storeinsert into Store (bill_id, customer_id, amoun…

openpnp - 图像传送方向要在高级校正之前设置好

文章目录 openpnp - 图像传送方向要在高级校正之前设置好笔记END openpnp - 图像传送方向要在高级校正之前设置好 笔记 图像传送方向和JOG面板的移动控制和实际设备的顶部摄像头/底部摄像头要一致,这样才能和贴板子时的实际操作方向对应起来。 设备标定完&#xf…

(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)

目录 前言 修改方向 修改内容 效果展示 两个新的问题🙋 1.问题1 2.问题2 代码如下: 前言 我们上一节实现了贪吃蛇吃食物身体节点变长,但是食物的刷新位置不是随机的,并且初始化几次后食物就刷不见了,本节我们就来…

【Linux】进程地址空间、环境变量:从理论到实践(三)

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 🚀 前言一:🔥 环境变量 🥝 基本概念🥝 常见环境变量🥝 查看环境变量方法 二:🔥 测试 &…

Stable Diffusion绘画 | 插件-Deforum:动态视频生成(中篇)

本篇文章重点讲解参数最多的 关键帧 模块。 「动画模式」选择「3D」: 下方「运动」Tab 会有一系列参数: 以下4个参数,只有「动画模式」选择「2D」才会生效,可忽略: 运动 平移 X 让镜头左右移动: 大于0&a…