李宏毅机器学习(二)自注意力机制

学习内容

本文以NLP为基础来介绍自注意力机制,而没有用图像为基础,但是其实两者都是相同的。
在图像中我们可以将图像切块(块的划分是自定义的),然后计算块与块之间的关系;

这里介绍了self-attention 的由来的应用

这里有几个问题需要说明:

  1. 常问的: 为什么是用dot-product来获取关系
    我的理解是,如果两个特征高度相关,那么这两个特征之间的相似元素必然很多,那么点积之后的值就会很大,也就是关系型很强; 而且使用dot-product来计算关系是一个常用的方法。

1. 预备知识

1.1 Sophisticated Input(复杂输入)必须是 Vector set

在之前的一节中,我们的输入是一个向量,然后经过回归或者是分类来得到一个标量或者类别;
但是如果我们的输入长不只是有一个,而且多个呢? 而且是可以改变的呢?

一个句子: this is a cat

我们把每个单词作为一个向量;那么整个句子就是多个可变向量;
但是一个向量(单词)怎么表示呢?

  • 第一种:我们可以以字母为单位,采用one-hot来表示一个单词;
但是问题又来了,你这样表示的话,两个单词之间的关系你是不知道的,没有语义的资讯,都是孤零零的!
  • 第二种是:Word Embedding
通过这里我们就可以看到,所有的单词可能一种类别的都在一起 ,这里的Word Embedding会给每个词一个向量。 具体Word Embedding是怎么表示的,[Word Embedding](https://www.zhihu.com/question/32275069)

一段语音!

这里就会把一段Sequence当作信号;比如我们选取25ms的作为一个frame;
同时我们如果想表达整个句子的话,需要 往前和往后调整10ms;
为什么设置25和10ms,这是前人证明过的,你只需要用就行了。
所以1s --》 100frames

一个图

  1. 比如Social network中,每个人也就是每个节点就是一个向量,而每个人之间的edge就是关系,两个人可能是朋友关系或者是其它关系; 而每个人也就是每个向量就是这个人的资讯,比如它的性别、年龄和工作等等。
2. 比如一个分子也可以看做是一个graph 比如现在比较出名的drug discovery; 一个分子就是一个模型,一个原子就是一个向量。

1.2 输出(以上面各个输入为基础)

三种输出可能性;

Each vector has a label

和上面的输入相对应: 如果我们输入是一个句子的话,我们以词性标注(POS tagging)作为例子,那么我们输出的就是每个单词(向量)的标签; 如果我们输入的是一个语音,每段语音(frame)也会有一个标签; 如果我们输入的是一个图,每个向量(结点=人),那么我们的输出就会是每个节点买不买某个商品;

The whole sequence has a label

可能我们只想判断一句话的情感; 也可能判断某一段语音是谁讲的; 亦或者该分子的亲水性;

Model decides the number of labels itself(seq2seq)

比如语音翻译和语音辨识都是seq2seq,也就是长度不一;

2. self-attention

如果输入vector set的时候都可以使用self-attention

2.1 加入FC层

我们重点说第一种,一对一的,以Sequence Labeling为例,如果你要给每个向量一个label; 我们以单独的一句话中的每个单词为基础,每个单词通过一个FC网络就可以实现了。

2.2 加入Window

但是这样就会有一个问题,你只关心一个单词的词性,如果两个单词一样的话,一个表示动词,一个表示名词,那么这样没有交集的处理会导致FC层无法处理。 所以需要让FC层考虑更多的上下文资讯。
所以我们可以扩大视野,简称window!

但是window也是有很大的缺点的,首先,如果我们要考虑整个句子,那么window会开的很大;其次,如果输入是多变的,那么我们的window很明显也是变化的,一个训练资料中我们要统计最长的句子多长,之后再加以设定;最后就是参数过多,容易过拟合;

2.3 加入Self-attention

self-attention中一个标量的获得是由下面所有的一块决定的。

怎么产生b1b^{1}b1, 也就需要计算a1a^{1}a1a2a^{2}a2a3a^{3}a3的关系; 也就是α1\alpha^{1}α1α2\alpha^{2}α2等。

而这个关系是怎么样找到的呢? 两种方法: dot-product和Additive

其中dot-product是将向量乘上一个矩阵W得到q,之后q · k = α\alphaα
右侧则是自己看吧!! transformer中使用的就是dot-product。
所以加入了相关性后计算如下:

当然也可以进行softmax归一化! softmax不唯一,可以使用Relu、Norm等等。

最后我们得到经过attention score的向量组合! 你需要清楚地知道下面三个q、k、v是什么!
而我们需要的b1就是我们所求

同理,我们就可以得到{a2、a3、a4a_{2}、a_{3} 、a_{4}a2a3a4} —》 {b2、b3、b4b_{2}、b_{3} 、b_{4}b2b3b4}

2.4 总结一下:

2.4.1 得到q、k、v

当然Wq、Wk、WvW^{q}、W^{k}、W^{v}WqWkWv都是矩阵!

2.4.2 得到attention score : α

下图中上方是推理第一向量得到的α的过程,下面则是将多个向量表达方式线性代数化了!
也就是K作为row, q作为了column。

2.4.3 得到b

同样的道理

2.4.4 最后总结

输入I —》 输出O;
中间Q是关系矩阵, A’是注意力矩阵。

特别注意的是: 这里只有Wq、Wk、WvW^{q}、W^{k}、W^{v}WqWkWv是需要学习的,其它的都是已知的,不需要训练; 为什么呢? 自己去往上翻一翻就知道了。

3. Multi-head self-attention

如果一件事有不同的形式,有很多不同的定义,需要多个head!不同的q 每个head是一种相关性,多个head就是多个相关性;
这个head也是一个超参数!!!

最后再

4. Position Encoding

可以看到自监督中是没有位置的定义的!
比如动词不能作为句头,动词一般充当谓语。所以需要加入位置信息。但是位置信息不是单纯的位置,而是包含了位置的其它资讯,包含了重要性(我的理解是这样的)。

所以eie^{i}ei长什么样子呢? 最早的transformer(attention is all your need)
方法一: hand-crafted

这是人设的! 但是sequence是改变的,所以很费劲

方法二: sinusoidal或者cos
最早的

方法三: 自己炼丹吧!!这是一个尚待研究的问题
比如左下角FloATER是自己创造的

5. Many Applications

Transformer 和 Bert
语音可以、图像也可以; 具体怎么做,自己看视频,因为我是做NLP的,直接省略!
比如图像中的一个pixel多个Channel; 或者是一行;

6. Self-attention v.s CNN

CNN是精简版的Self-attention! 因为Self-attention需要的感受野是全部的。 而在CNN中,感受野是确定的!

self-attention是一个flexible的model, 而且越是flexible的model越是需要更多的data,data不够,更容易overfitting;比如下面的图中, 我们比较了六个模型的分别使用CNN 和 Transformer的随着数据集量的增大后准确率的结果。 可以看出,数据集在少的时候,CNN是好的,但是随着数据集的增加,self-attention逐渐的更好。 这是因为感受野的不同的!

6. Self-attention v.s RNN

因为RNN可以被Self-attention取代,就不讲RNN了。
初始是一个memory 是预定义的!,处理的是一个sequence!
第一个RNN的block吃memory和第一个vector,然后输出新的memory和经过一个FC层来做我们需要的预测;
第二个RNN的block吃上一个吐出来的东西好第二个vector!

两者之间有很大的不同:
我们直观上可能感觉,RNN只考虑前几个的关系,而没有考虑全部;其实RNN也可以是双循环的,也可以认为是全部的关系; 所以这不是主要的区别。

  • 天涯若比邻, self-attention中即使很远离,但是只需要计算就可以了; 而RNN中第一个和最后一个还需要经历漫长的关系,不能够忘掉。

  • 不够并行处理 ; RNN是一个接着一个的;而self-attention的每个向量都是同时计算出来的。

最下面的链接将的是 ALL Transformers are RNN;

7.self-attention for graph

图的优点是有关联已经确定了,不需要再次计算了; 只需要计算强弱就行了!不需要决定有还是没有!
没有必要再学习了!
其实GNN是另一种self-attention

GNN水也是很深的!!

8. To learn more。。。

横轴是速度,纵轴是准确率!
self-attention 首先用在Transformer中,但是它很慢,所以才有了下面的各种变形!!
但是准确率和速度兼顾的方法还需要进一步的深究!

!

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

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

相关文章

LeetCode 643. 子数组最大平均数 I

1. 题目 给定 n 个整数&#xff0c;找出平均数最大且长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 示例 1: 输入: [1,12,-5,-6,50,3], k 4 输出: 12.75 解释: 最大平均数 (12-5-650)/4 51/4 12.75注意: 1 < k < n < 30,000。 所给数据范围 [-10,000&a…

技术交流论坛_研发部第四次技术交流论坛

炎热的七月&#xff0c;由研发部举办的第四次技术交流论坛顺利召开&#xff0c;这是知识的激烈碰撞&#xff0c;也是一次头脑风暴。出席本次交流活动的有柯明宏副总、郑正部长、权大有副部长、向民龙副部长等公司管理层领导和公司骨干成员。首先由柯明宏副总、郑正部长给这一次…

LeetCode 661. 图片平滑器

1. 题目 包含整数的二维矩阵 M 表示一个图片的灰度。 你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) &#xff0c; 平均灰度的计算是周围的8个单元和它本身的值求平均&#xff0c;如果周围的单元格不足八个&#xff0c;则尽可能多的利用它们。 示例 1: 输…

论文阅读笔记(三)【ACL 2021】Locate and Label: A Two-stage Identifier for Nested Named Entity

论文标题&#xff1a; Locate and Label: A Two-stage Identifier for Nested Named Entity Recognition 论文链接&#xff1a; https://arxiv.org/abs/2105.06804 代码链接&#xff1a; https://github.com/tricktreat/locate-and-label 摘要 &#xff08;1&#xff09;过…

WDK中出现的特殊代码

WDK中出现的特殊代码 我们用本章的最后一个小节来介绍一些在WDK示例代码中见到的特殊形式编码。这些代码在Win32应用程序的编程中很少见到&#xff0c;读者需要首先熟悉一下。 首先是参数说明宏。参数说明宏一般都是空宏&#xff0c;最常见的是IN和OUT。其实定义很简单&…

局域网lan设置_4G工业路由器的WAN、LAN组网方式

4G工业路由器组网通常是通过WAN口、LAN口来实现&#xff0c;计讯带大家详细了解关于4G工业路由器WAN、LAN组网方式。1、WAN口加4G组网方式该组网方式同时拥有两个可以连接到广域网的接口(以太网口的WAN口和M2M网络的4G口)&#xff0c;两路通道形成互补及备份&#xff0c;同时接…

LeetCode 894. 所有可能的满二叉树(递归)

1. 题目 满二叉树是一类二叉树&#xff0c;其中每个结点恰好有 0 或 2 个子结点。 返回包含 N &#xff08;1 < N < 20&#xff09;个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。 答案中每个树的每个结点都必须有 node.val0。 你可以按任…

论文阅读笔记(四)【ACL 2021】FEW-NERD: A Few-shot Named Entity Recognition Dataset

摘要 过去的难点&#xff1a; 过去的都是粗粒度的&#xff1b; Few-NERD&#xff1a; 一个大规模的人类注释的小样本NERD数据集&#xff0c;它具有8种粗粒度和66种细粒度实体类型的层次结构。Few-NERD由来自维基百科的188238个句子组成&#xff0c;包含4601160个单词&#xff…

Exchange2003启用web页面登陆(表单型身份验证)

一、 owa中启用表单验证 在Exchange server 2003中配置OWA启用基于表单的身份验证(忽略SSL): o 在服务器&#xff0d;协议&#xff0d;HTTP&#xff0d;HTTP虚拟服务器右键&#xff0d;勾选"启用基于表单的身份验证"&#xff0c;出现提示要求SSL&a…

LeetCode 241. 为运算表达式设计优先级(动态规划)

1. 解题 给定一个含有数字和运算符的字符串&#xff0c;为表达式添加括号&#xff0c;改变其运算优先级以求出不同的结果。 你需要给出所有可能的组合的结果。有效的运算符号包含 , - 以及 * 。 示例 1: 输入: "2-1-1" 输出: [0, 2] 解释: ((2-1)-1) 0 (2-(1-1)…

python具体应用过程_python公开课|Python for循环的具体应用就是python流程控制的核心,想学会就来看看...

【摘要】在这个科学技术高速发展的时代&#xff0c;越来越多的人都开始选择学习编程软件&#xff0c;那么首先被大家选择的编程软件就是python&#xff0c;也用在各行各业之中&#xff0c;并被大家所熟知&#xff0c;所以也有越来越多的python学习者关注python问题&#xff0c;…

知识图谱入门知识(三)词性标注

学习内容 基本大多数的问题都可以转为词性标注问题&#xff01; 这里只做记录&#xff0c;都是别人的回答&#xff01; 常用的概念 什么是token tokenization就是通常所说的分词&#xff0c;分出的每一个词语我们把它称为token。 链接 词性标注参考一 自然语言处理之序列标…

sql 查讯本日 本周 本月

sql 查询本周本月问题---求相差天数 select datediff(day,2004-01-01,getdate()) --1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --2.本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) sel…

python爬虫入门必备正则_python 爬虫入门之正则表达式 一

python 正则表达式知识点正则 常用符号. : 匹配任意字符&#xff0c;换行符除外* &#xff1a; 匹配前一个字符 0 次或者无限次&#xff1f; &#xff1a; 匹配前一个字符 0次或者1次.* &#xff1a; 贪心算法.*&#xff1f; &#xff1a;非贪心算法()&#xff1a; 括号内的数…

李宏毅机器学习(三)Word Embedding

学习内容 前情提要 使用一个vector来表示一个word&#xff0c;怎么做&#xff1f; 1-of-N Encoding 维度就是所有单词的量 缺点&#xff1a; dog 和 cat是不能归为一类的&#xff0c;只能单独的表示&#xff1b; Word CLass 将同类别的归为一类&#xff1b; 但是更高层的tok…

IBM T61 键盘没有反映。

出现这个问题不是一次两次了&#xff0c;就是启动后&#xff0c;键盘所有按键&#xff0c;小红帽都不能用&#xff0c;必须重启好几次才能用。 有时候键盘能用&#xff0c;但是打开 dw ,复制不能用&#xff0c;真是懊恼。 今天又出现这个情况&#xff0c;我偶然想到是不是和昨天…

LeetCode 680. 验证回文字符串 Ⅱ

1. 题目 给定一个非空字符串 s&#xff0c;最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。来…

python的序列类型及其特点_Fluent Python 笔记——序列类型及其丰富的操作

序列的分类Python 标准库用 C 语言实现了丰富的序列类型的数据结构&#xff0c;如&#xff1a;容器序列(能存放不同类型的数据)&#xff1a;list、tuple、collections.deque 等扁平序列(只容纳同一类型的数据)&#xff1a;str、bytes、bytearray、memoryview、array.array>&…

论文阅读翻译(全)【一直更新】

学习内容 这里面包含了阅读中翻译的概述&#xff01; CNN is not invariant to scaling and rotation&#xff1b; invariant&#xff1a; 不变的&#xff1b; not invariant&#xff1a; 不是不变的 CNN是变化的&#xff01; 不和不消除&#xff01; 1. 词语 1.1 词形 泛…

精选15个国外CSS框架

下面一起来了解一下各种不同的CSS框架吧: 1.960 Grid System 960网格系统是一个通过提供通常使用的尺寸简化网站开发流程的努力的结果&#xff0c;基于960像素的页面宽度。它有两种类型&#xff0c;12和16列&#xff0c;他们可以独立使用或是协同使用。 2.WYMstyle CSS Framewo…