Self-attention(李宏毅2022

模型的输出:

类型一:一对一(Sequence Labeling)。e.g.   词性标注;语音辨识简化版,标注phonon;社交网络图,判断节点会否购买商品。--->Self-attention

类型二:多对一。e.g.   sentiment analysis,语者辨识,判断分子特性

类型三:由模型自己决定(seq2seq)。e.g.   翻译、语音识别

第四节 2021 - 自注意力机制(Self-attention)(上)_哔哩哔哩_bilibili

self attention想要解决的问题:

此前,我们network的input都是一个向量,输出可能是一个数值或者一个类别。但是假设我们需要输入的是一排向量,并且向量的个数可能会发生改变,这个时候要怎么处理。

例子:

比如文字处理的时候:

将单词表示为向量的方法:One-hot Encoding。我们可以用很长的一个向量,来表示世界上所有的东西,但是这里有一个问题,它假设所有的词汇都是没有关系的,比如猫和狗,都是动物,但是这样没有办法把它分类在一起,没有语义的资讯。

另一个方法是Word Embedding:我们给每个词汇一个向量,这个向量里有语义的信息。如果将Word Embedding画出来,就会发现同类的单词就会聚集。
网路上可以载到Word Embedding,会给每个词汇一个向量,一个句子就是一排长度不一的向量

取一段语音信号作为window,把其中的信息描述为一个向量(frame帧),滑动这个窗口就得到这段语音的所有向量

有各式各样的做法可以用一个向量来描述一小段25millisecond里面的语音讯号

每个window移动10ms,古圣贤都试过了,

Graph:

社交网络的每个节点就是一个人,节点之间的关系用线连接。每一个人就是一个向量
分子上的每个原子就是一个向量(每个元素可用One-hot编码表示),分子就是一堆向量

 

 2. 模型的输出


类型一:一对一(又叫Sequence Labeling)
每个输入向量对应一个输出标签。

文字处理:词性标注。
语音处理:一段声音信号里面有一串向量,每个向量对应一个音标。(作业二,语音辨识简化版)
图像处理:在社交网络中,比如给一个图片,机器要决定每一个节点的特性,比如说这个人会不会买某一个商品。


类型二:多对一
多个输入向量对应一个输出标签。

sentiment analysis,语者辨识(作业四),给出分子的结构,  判断亲水性or毒性...


类型三:由模型自己决定(又叫seq2seq任务,作业五)

 不知道应该输出多少个标签,机器自行决定。

翻译:语言A到语言B,单词字符数目不同
语音识别
 

Sequence Labeling

在这里插入图片描述

我们可以用fully conneted network(FC),各个击破,每个向量分别输入FC,

但是这样会有瑕疵,比如输入I saw a saw(锯子),这两个saw,对于FC(fully conneted network,全连接网络,下同)来说,是一模一样的,但是实际上它们一个是v.,一个是n。

让FC考虑上下文,把这几个向量前后串起来,一起丢到FC里面。(作业二)

但如果今天我们有某个任务,不是考虑一个window就可以解决的,而是要考虑整个sequence才能解决的话,怎么办。如果开一个大的Window,我们输入的sequence是有长有短,那FC就需要非常多的参数,不止是很难训练,而且很容易过拟合。

更好的方法来考虑整个input sequence的资讯,---->  self-attention的技术。

在这里插入图片描述

 self-attention会把一整个sequence的资讯都吃进去,然后你输入几个向量,它就输出几个向量,这里用黑色的框框,表示它不是普通的向量,是考虑了一整个sequence的向量。

self-attention也可以和FC交替使用,用self-attention来处理整个sequence的资讯,FC来专注处理某一个位置的资讯。
 

在这里插入图片描述

关于self-attention最知名的文章《Attention is all you need》,Google 根据自注意力机制 在 paper中提出了 Transformer 架构。

 self-attention是怎么运作的呢?

在这里插入图片描述

 self-attention的input就是一串的向量,这个向量可能是整个网络的input,也可能是某个hidden layer的output,所以我们用a来表示它,代表前面它可能做过一些处理。
output一排b向量,这里的每一个b都是考虑了所有的a以后才生成出来的。

那么怎么产生b1这个向量呢?

在这里插入图片描述
第一个步骤:根据a1找出这个sequence里面和a1相关的其他向量

我们要做self-attention目的就是为了要考虑整个sequence,但是又不希望把整个sequence所有的资讯包在一个window里面,所以我們有一個特別的機制:根據a1這個向量、找出整個Sequence裡面、到底哪些部分对于 決定a1的Class/数值时,是需要用到的資訊

每一个向量和a1关联的程度,我们用一个数值α来表示。

那么这个α是怎么产生的呢?计算attention的模组。

在这里插入图片描述

这个模组,就是拿两个向量a1和a4作为输入,然后输出的是一个α。
怎么计算这个数值

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值