IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习 多向量输入 Self-attention 自注意力机制 sequence labeling -> 正文阅读

[人工智能]机器学习 多向量输入 Self-attention 自注意力机制 sequence labeling

前提:Dr.He推荐学习的李宏毅讲的Machine Learning的学习博客

引入

请添加图片描述
当输入为一个向量时,输出为一个数值(Regression)或是一个class(Classification)
请添加图片描述
当机器输入为vector set时,输出为多个数值或多个class。

Vector set as Input

Vector set是一个可包含不同长度、数目向量的sequence。以下列举了Vector set作为输入的4种形式。
(1)用vector set来表示句子,通过Machine做文字处理
请添加图片描述
Sequence中的词汇由向量表示。下面列举两种表示方法
I)One-hot Encoding
使用One-hot vector
每个单词都有唯一对应的向量,向量的长度为世界上存在的总词汇量数。
II)Word Embedding
每个单词都有唯一对应的向量,且向量有语义资讯,有关系的单词会聚集在一起。
请添加图片描述
(2)将语音表示称Vector set

如下图所示,取25ms语音信息,该范围称为window,将window中的资讯描述成的一个向量,成为Frame。每次将window平移10ms,则1s的语音需要平移100次,可得到100个向量(Frame);1min的语音需要平移6000次,可得到6000个向量(Frame)。
关于数据(25ms、10ms)的设定原因:是由前人找出的最合适的标准范围。
在这里插入图片描述
(3)将Graph表示称Vector set
每一个节点都是一个向量,且节点间的连线表示节点间的关系。此时的一个图可看作是一堆向量组成。
请添加图片描述
(4)用Vector set表示化学分子
分子也可看作是一个图,每一个原子用one-hot vector 表示
请添加图片描述

output

以vector set作为输入的输出有三种形式

一对一输出 (Sequence Labeling)

Each Vector has a label 每一个向量都有对应的输出结果
请添加图片描述

Example Applications

请添加图片描述
(1)POS tagging 文字处理
机器会判断单词词性并将每个单词进行一对一词性输出
(2)简化版语音辨识
机器识别语音讯息中的一串Vector,每个Vector所对应的音标。
(3)决定Graph中每个节点的特性
在Graph中,机器分析每个节点后可输出每个节点对于某一事件的特性。例如,在social network中,对于某商品是否有意愿购买,机器会输出每个节点的意愿(是/否)。

多对一输出

The whole sequence has a label
请添加图片描述

Example Applications

请添加图片描述
(1)句子观点判断
机器会分析一个句子的内容再输出这句话的观点是positive/negative
(2)辨识发言者
机器通过语音讯号辨识语音讯号的发言者身份
(3)判别化学式的某特性
将化学式输入机器后,机器经分析可得出该化学式的某特性,如亲水性(hydrophilicity)等

N对N输出 sequence to sequence(seq2seq)

Model decides the number of labels itself 输出结果数目由机器自身判断

Example Applications

(1)翻译
不同语言间的翻译,不同语言间的词汇数目不同,则为seq2seq
(2)正式的语音辨识
请添加图片描述
输入一句话,输出一段文字,真正的语音辨识是seq2seq

具体讲解

Sequence Labeling

num(input) = num(output)
现考虑以下情景,使用FC(Fully Connected Network)进行文字处理。对于句子 “I saw a saw”,FC需要判断每个单词的词性。其中单词“saw”出现两次,我们可判断出前者词性为v,后者词性为n。但对于相同的单词输入,机器无法得出不同的结果
请添加图片描述
为解决该问题,我们考虑以下问题:

Q1:是否可以让FC考虑上下文环境?
A:可以,FC可以考虑前后几个向量,即将原输入向量的前后几个向量串起来一起放入FC。

Q2:如果需要考虑整个sequence,上述办法是否可行?
A:为考虑整个sequence:若使用Q1的解决措施,则需要一个覆盖整个sequence的window,但在训练资料中sequence的长度不一,为覆盖所有sequence,需要让window的长度大于训练资料中的最长sequence的长度,如此会造成FC需要参数过大,计算量过大,容易overfitting;对于需要考虑整个sequence的资讯的问题,更好的解决措施:self-attention。

self-attention

对于需要考虑整个sequence的sequence labeling,采用self-attention。即self-attention会考虑输入的整个sequence再输出结果
请添加图片描述
输入的vector在self-attention中考虑了整个sequence变成一个新的vector再被放进FC。
self-attention和FC可以多次交替使用。self-attention处理整个sequence的资讯,FC处理某一个位置的资讯。

self-attention的运作过程

请添加图片描述
输入向量a(input或是已经过处理后的hidden layer的output)经self-attention(考虑了整个sequence)得到输出向量b。向量b是同时且平行输出的

如何从a变到b

Find the relevant vectors in the sequence 首先寻找与自己相关联的向量
请添加图片描述
下面介绍两种计算两个向量之间的关联程度的方法:
I)Dot-product
请添加图片描述
两个向量分别乘上矩阵Wq和Wk得到q和k,将q和k做内积(Dot-product)后得到α(attention score),α代表两输入向量间的关联度。
II)Addictive
将两向量分别乘上矩阵Wq和Wk得到的向量相加后做tanh,再将得到的值乘上矩阵W得到α。
在这里插入图片描述
Dot-product计算得到的α为普遍计算方法,本文的后续α计算也采用此方法。
此处示范a1与其他向量的α计算过程,如下图所示:
请添加图片描述
将a1的q与自身和其他3个向量的k进行内积得到α。再attention scroe 放入activation function(Soft-max、ReLu等),以对α进行normalization。这里使用Soft-max,则通过下图公式来得到α’1,i请添加图片描述
vector v = Wv · α ,计算出每个向量a的向量v。最后将所有α’1,i · vi相加得到b1,即

在这里插入图片描述
attention score的最大值所属向量a,它的v向量会dominate(操纵控制)向量b。
全过程计算图如下所示:
在这里插入图片描述

我们可以将a1、a2、a3、a4作为列形成一个矩阵I(Input),矩阵I的每一列(向量a)乘上Wq得到对应的q,也形成了一个矩阵,称为矩阵Q。以同样的操作,得到矩阵K、V。
请添加图片描述
再考虑attention score的形成,下图为a1与其他向量间的α
在这里插入图片描述
计算所有的attention score,由矩阵KT和Q相乘得到矩阵A,再经激活函数得到A’
请添加图片描述
最后得到向量b组成的矩阵O(Object)
请添加图片描述
全过程简化形式如下图所示,其中的Wq、Wk、Wv为参数,需要通过训练资料学习。其他都是可以推出来的。
请添加图片描述

Multi-head Self-attention

Self-attention的变形,head表示该问题有不同相关性,head的数目代表有几种相关性。head数目直接表现在向量aI的qI的个数、kI的个数、vI的个数,且head是人为调整的。

Example:head = 2,则该问题有两种相关性。此时b的计算方法:
(注意:αi,j表示ai与aj的attention score,αi,1表示第一种相关性下的a1的attention score)
相同相关性的q、k、v之间进行计算,如qi,1与ki,1内积得到αi,1i,j ,αi,1i,j 再与vi,1相乘得到bi,1;qi,2与ki,2内积得到αi,2i,j,αi,2i,j再与vi,2相乘得到bi,2
请添加图片描述再将bi,1与bi,2接起来,形成一个矩阵再与W0相乘得到最后结果bi请添加图片描述

Positional Encoding

Self- attention只是将sequence输入就不存在位置资讯,当某些问题中向量位置是很重要时,就需要对输入向量添加位置资讯。

Each position has a unique positional vector ei
每个向量都带有一个表示位置资讯的唯一向量ei,其中i代表位置。且这个向量是由人设定的。

self- attention在其他方面的Applications

self- attention 被NLP广泛应用,这里介绍在其他问题上一些应用

Self- attention for Speech

语音辨识在使用self- attention时,向量数可观,但造成的计算量太大鞋,需要的memory大。因此对于语音辨识,通常不需要考虑一整句话,只需要考虑该向量前后一定范围的资讯truncated self-attention。前后一定的范围由人经过对问题的理解来设定。truncated self- attention 为缩减/简化后的self-attention,不需要看全,只需要看部分。

self- attention for Graph

请添加图片描述
Graph中的节点表示一个向量,节点之间存在边表示这两个节点之间存在关联,因此有了节点之间的边的资讯,机器就不需要再主动找出了。如上图中,通过Graph做出Attention Matrix,只需要计算出node1和node5之间的α、node1和node6之间的α、node1和node8之间的α……等等。
self- attention 在Graph上的应用是GNN(Graph Neural Network)的一种类型。

Self- attention for Image

影响辨识在上一篇博客中提到用CNN解决。也可以使用Self-attention解决。Image也可以用向量表示,将tensor中三个对应的pixel看作一个三维的向量,则下图的Image可由5x10个向量组成。
请添加图片述

self- attention 和 CNN的关系

CNN是简化版的 self- attention ,或者说CNN是 self- attention 的特例,只要 self- attention 选定合适参数就等于CNN

(1)在影像辨识中
I)CNN是只考虑receptive field的self-attention,CNN是简化版的 self- attention
II) self- attention 需要考虑整张图中资讯,自动寻找相关pixel。self- attention 就好像是receptive field是自动学出来的CNN

请添加图片描述

(2)不同数据量对CNN和self- attention的影响
请添加图片描述
上图来源于An Image is Worth 16x16 Words,可得:
data量小时:CNN结果>self-attention结果,data量大反之。
self- attention弹性大,需要更多的训练资料,若训练资料少则会overfitting。
CNN弹性小,训练资料少时结果好,当训练资料增多,CNN无法从更大量的训练资料中结果变得更好(饱和)。

self- attention 和 RNN的对比

请添加图片描述
RNN的input也是一个sequence,第一个向量先和向量memory进入RNN,输出结果进入FC,也和下一个向量进入RNN,同理进行下去,直到最后一个向量输出完毕。RNN虽然考虑了整个sequence,但输出向量只考虑了左边已输入的向量(双向RNN的output可看作是考虑了整个sequence),且输出向量产生有次序,非平行。

self- attention 和 RNN相比,self- attention的输出是同时平行的,且考虑sequence更容易,因此tself-attention < tRNN

More about self-attention

请添加图片描述
上图来源于Long Range Arena:A Benchmark fir Efficient Transformers
在上图中,横轴表示Speed,纵轴表示performance。比较的是self-attention的各种变形。未解决self- attention的最大问题—运算量过大,self- attention因此产生了很多种变形。图中的Transformer指的就是self-attention。
更多关于self- attention的变形讲解,可查阅Efficient Transformers A Survey

Papers recommendation

以下paper能让你更好理解self-attention
Attention is all you need
BERT

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:57:29  更:2022-05-14 09:57:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:44:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码