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 自注意力机制 -> 正文阅读

[人工智能]李宏毅《深度学习》- Self-attention 自注意力机制

Transformer & BERT PPT: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/self_v7.pdf
【李宏毅《机器学习/深度学习》2021课程(国语版本,已授权)-哔哩哔哩】https://b23.tv/baegp9

一、问题分析

1. 模型的输入

无论是预测视频观看人数还是图像处理,输入都可以看作是一个向量,输出是一个数值或类别。然而,若输入是一系列向量(序列),同时长度会改变,例如把句子里的单词都描述为向量,那么模型的输入就是一个向量集合,并且每个向量的大小都不一样:
词汇向量
将单词表示为向量的方法:One-hot Encoding(独热编码)。向量的长度就是世界上所有词汇的数目,用不同位的1(其余位置为0)表示一个词汇,如下所示:

  • apple = [1, 0, 0, 0, 0, …]
  • bag = [0, 1, 0, 0, 0, …]
  • cat = [0, 0, 1, 0, 0, …]
  • dog = [0, 0, 0, 1, 0, …]
  • computer = [0, 0, 0, 0, 1, …]

但是它并不能区分出同类别的词汇,里面没有任何有意义的信息。

另一个方法是Word Embedding:给单词一个向量,这个向量有语义的信息,一个句子就是一排长度不一的向量。将Word Embedding画出来,就会发现同类的单词就会聚集,因此它能区分出类别:
在这里插入图片描述
另外还有语音信号、图像信号也能描述为一串向量:

语音信号图论
取一段语音信号作为窗口,把其中的信息描述为一个向量(帧),滑动这个窗口就得到这段语音的所有向量社交网络的每个节点就是一个人,节点之间的关系用线连接。每一个人就是一个向量
分子上的每个原子就是一个向量(每个元素可用One-hot编码表示),分子就是一堆向量

2. 模型的输出

模型的输出

类型一:一对一(Sequence Labeling)

每个输入向量对应一个输出标签。

  • 文字处理:词性标注(每个输入的单词都输出对应的词性)。
  • 语音处理:一段声音信号里面有一串向量,每个向量对应一个音标。
  • 图像处理:在社交网络中,推荐某个用户商品(可能会买或者不买)。

类型二:多对一

多个输入向量对应一个输出标签。

  • 语义分析:正面评价、负面评价。
  • 语音识别:识别某人的音色。
  • 图像:给出分子的结构,判断其亲水性。

类型三:由模型自定(seq2seq)

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

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

3. 序列标注 (Sequnce Labeling) 的问题

利用全连接网络,输入一个句子,输出对应单词数目的标签。当一个句子里出现两个相同的单词,并且它们的词性不同(例如:I saw a saw. 我看见一把锯子),这个时候就需要考虑上下文:利用滑动窗口,每个向量查看窗口中相邻的其他向量的性质。

序列标注

但是这种方法不能解决整条语句的分析问题,即语义分析。这就引出了 Self-attention 技术。

二、Self-attention 自注意力机制

输入整个语句的向量到self-attention中,输出对应个数的向量,再将其结果输入到全连接网络,最后输出标签。以上过程可多次重复:
在这里插入图片描述

Google 根据自注意力机制在《Attention is all you need》中提出了 Transformer 架构。

1. 运行原理

这里需要三个向量:Query,Key,Value。其解释参考文章 《如何理解 Transformer 中的 Query、Key 与 Value》- yafee123

在这里插入图片描述
注: b i ( 1 ≤ i ≤ 4 ) b^i (1≤i≤4) bi(1i4) 是同时计算出来的, a i , j a_{i,j} ai,j? q i q^i qi k j k^j kj的内积。
在这里插入图片描述
上述过程可总结为:

  • 输入矩阵 I I I分别乘以三个 W W W得到三个矩阵 Q , K , V Q,K,V Q,K,V
  • A = K T Q A=K^TQ A=KTQ,经过处理得到注意力矩阵 A ′ A' A
  • 输出 O = V A ′ O=VA' O=VA
    在这里插入图片描述
    其中唯一要训练出的参数就是 W W W.

2. 多头注意力机制 (Multi-head Self-attention)

在这里插入图片描述
b i = W 0 [ b i , 1 b i , 2 ] b^i=W^0\left[ \begin{array}{c} b^{i,1} \\ b^{i,2} \end{array} \right] bi=W0[bi,1bi,2?]

Query,Key,Value首先经过一个线性变换,然后输入到放缩点积attention,注意这里要做 h h h 次,其实也就是所谓的多头,每一次算一个头。而且每次Q,K,V进行线性变换的参数 W W W是不一样的( W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv)。然后将 h h h 次的放缩点积attention结果进行拼接,再进行一次线性变换得到的值作为多头attention的结果。1

对于Self-attention来说,并没有序列中字符位置的信息。例如动词是不太可能出现在句首的,因此可以降低动词在句首的可能性,但是自注意力机制并没有该能力。因此需要加入 Positional Encoding 的技术来标注每个词汇在句子中的位置信息。

3. 位置编码 (Positional Encoding)

在这里插入图片描述

每一个不同的位置都有一个专属的向量 e i e^i ei,然后再做 e i + a i e^i+a^i ei+ai 的操作即可。但是这个 e i e^i ei 是人工标注的,就会出现很多问题:在确定 e i e^i ei的时候只定到128,但是序列长度是129。在最早的论文2中是没有这个问题的,它通过某个规则(sin、cos函数)3 产生。尽管如此,位置编码也可以通过学习来得出。

BERT4 模型也用到了自注意力机制

Self-attention 还可以用在除NLP以外的问题上:语音处理,图像处理。

三、其他应用

1. 语音识别

在这里插入图片描述

2. 图像识别

在做CNN的时候,一张图片可看做一个很长的向量。它也可看做 一组向量:一张 5 ? 10 5*10 5?10的RGB图像可以看做 5 ? 10 5*10 5?10的三个(通道)矩阵,把三个通道的相同位置看做一个三维向量。
CNN
具体应用:GAN、DETR
在这里插入图片描述

2.1 自注意力机制和CNN的差异

在这里插入图片描述

  • CNN看做简化版的self-attention:CNN只考虑一个感受野里的信息,self-attention考虑整张图片的信息
  • self-attention是复杂版的CNN:CNN里面每个神经元只考虑一个感受野,其范围和大小是人工设定的;自注意力机制中,用attention去找出相关的像素,感受野就如同自动学出来的。

在这里插入图片描述
如果用不同的数据量来训练CNN和self-attention,会出现不同的结果。大的模型self-attention如果用于少量数据,容易出现过拟合;而小的模型CNN,在少量数据集上不容易出现过拟合。5

2.2 与RNN的差异

在这里插入图片描述
因此很多的应用逐渐把RNN的架构改为Self-attention架构。6

3. 应用于图论(GNN)

在这里插入图片描述

自注意力机制的缺点就是计算量非常大,因此如何优化其计算量是未来研究的重点。


  1. transformer模型中的self-attention和multi-head-attention机制 - 小镇大爱 ??

  2. Learning to Encode Position for Transformer with Continuous Dynamical Model ??

  3. 浅谈Positional Encoding(位置编码)和WordPiece - Shaw_Road ??

  4. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding ??

  5. On the Relationship between Self-Attention and Convolutional Layers ??

  6. Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention ??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:11:36  更:2021-10-21 12:12:07 
 
开发: 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/27 8:46:10-

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