【李宏毅机器学习2022】Task06 self-attention算法

【李宏毅机器学习2021】本系列是针对datawhale《李宏毅机器学习-2022 10月》的学习笔记。本次是对深度学习中self-attention算法的学习总结。本来这节课是讲cnn,上节课cnn学过了笔记也做过了,就快进到self-attention吧~本节课主要讲解NLP中self-attention算法的生成原理,针对序列向量的预测思路及优势特点。同时在基本的self-attention介绍相关升级算法。最后对self-attention在声音信息、cv、图数据中的引用。这节课也是datawhale的最后一节课,但是虽然组队学习结束但是对这门课的学习还没完,打算接着更下去。频率保证在两天一冲。还要学习中的作业部分也打算更一下,练练手。加油吧~

目录

序列输入的神经网络介绍

输入部分

 输出部分

 self-attention

self-attention解决问题

 self-attention模型介绍

  self-attention升级及相关应用


序列输入的神经网络介绍

self-attention的引入是从序列输入数据的神经网络入手,首先介绍一下相关网络框架和解决问题。

输入部分

可以是一段话、一段语音、一个图、一个分子这样的序列向量。

【李宏毅机器学习2022】Task06 self-attention算法_第1张图片

【李宏毅机器学习2022】Task06 self-attention算法_第2张图片

 【李宏毅机器学习2022】Task06 self-attention算法_第3张图片

【李宏毅机器学习2022】Task06 self-attention算法_第4张图片

 输出部分

1.输出输出数目一样的标签。

2.只输出类别,如对一句话的情感判断。

3.输入和输出数目不一样的标签,如翻译。

【李宏毅机器学习2022】Task06 self-attention算法_第5张图片

 self-attention

self-attention解决问题

【李宏毅机器学习2022】Task06 self-attention算法_第6张图片

全连接网络对 输出输出数目一样的标签的序列向量预测情况不会考虑序列间元素的关系,容易丢失信息,如何将序列间的信息快速有效的提取保存出来呢?

【李宏毅机器学习2022】Task06 self-attention算法_第7张图片

 【李宏毅机器学习2022】Task06 self-attention算法_第8张图片

 self-attention模型介绍

【李宏毅机器学习2022】Task06 self-attention算法_第9张图片

运用所有输入元素,进行两两计算关联性(关联性评分得出的值为a 这里采用下图中Dot-product方法通过两个矩阵,用自身向量和一个矩阵wq计算后得到q,用另一个矩阵wk和其他向量计算后得到k,然后用kq相乘得到a的值),得到相应评分。可以有效使用整个序列的元素,同时可以随机去选择,不用刻意控制顺序。 将序列内每个元素做重组后输出的向量考虑整体数据的情况,有了全局特征,这样做FC预测时会更准确。

【李宏毅机器学习2022】Task06 self-attention算法_第10张图片

 【李宏毅机器学习2022】Task06 self-attention算法_第11张图片

 得到所有a后对所有a做softmax或者relu,(方法不唯一)处理后得到a‘。然后将每个a’和第三个矩阵相乘求和,得到b。就是处理后得到的向量。

整个self-attention的计算步骤可以简化成矩阵批量计算,大大提升了计算的速度。整体矩阵计算图如下。

【李宏毅机器学习2022】Task06 self-attention算法_第12张图片

  self-attention升级

Multi-head Self-attention

这个算法对selfattention改良,将计算出的b带有更多特征信息,几个head意味着扩展几组参数。对于声音信号及数据量较大的训练序列效果更好。

【李宏毅机器学习2022】Task06 self-attention算法_第13张图片

Positional Encoding

在模型上引入位置信息e,加入位置信息后增强与前后数据的关联性。可以让网络有更多的序列信息,增强序列对网络影响的权重。可以像他的兄弟们lstm、rnn这样对邻近的节点对预测有更大的影响。

 【李宏毅机器学习2022】Task06 self-attention算法_第14张图片

Truncated  Self-attention

针对过长的序列,采取较短的部分序列做self-attention。

 【李宏毅机器学习2022】Task06 self-attention算法_第15张图片

Self-attention用于图像

将像素点看作一个元素,由像素点组成的图像看成序列。

【李宏毅机器学习2022】Task06 self-attention算法_第16张图片

 【李宏毅机器学习2022】Task06 self-attention算法_第17张图片

 【李宏毅机器学习2022】Task06 self-attention算法_第18张图片

【李宏毅机器学习2022】Task06 self-attention算法_第19张图片

 和cnn对比后发现,cnn是简化版的vit。其实vit的使用过程就是网络自己训练fliter处理图像。

【李宏毅机器学习2022】Task06 self-attention算法_第20张图片

由于 self-attention网络参数较多,网络弹性大。使用更多数据时预测效果优于cnn。后面会专门写vit的笔记~

Self-attention与RNN对比

【李宏毅机器学习2022】Task06 self-attention算法_第21张图片

相比于sa,rnn网络对全局的信息考虑的并不完全,只对先前的数据信息保存较好,即使使用双向rnn也没有sa对序列数据整体的处理效果好,同时rnn不具备全局计算的优势,处理速度会慢很多。

self-attention可以用在图网络

【李宏毅机器学习2022】Task06 self-attention算法_第22张图片

self-attention也有很多变形,由于self-attention对全序列运算的特性导致会产生很多参数。如何让网络更轻巧训练速度更快,同时有更好的效果也是sa算法在不断优化的地方。 

 【李宏毅机器学习2022】Task06 self-attention算法_第23张图片

你可能感兴趣的:(机器学习,算法,人工智能)