前言
我们可以大致感受到 Attention 的思路简单,四个字“带权求和”就可以高度概括,大道至简。做个不太恰当的类比,人类学习一门新语言基本经历四个阶段:死记硬背(通过阅读背诵学习语法练习语感)->提纲挈领(简单对话靠听懂句子中的关键词汇准确理解核心意思)->融会贯通(复杂对话懂得上下文指代、语言背后的联系,具备了举一反三的学习能力)->登峰造极(沉浸地大量练习)。
这也如同attention的发展脉络,RNN 时代是死记硬背的时期,attention 的模型学会了提纲挈领,进化到 transformer,融汇贯通,具备优秀的表达学习能力,再到 GPT、BERT,通过多任务大规模学习积累实战经验,战斗力爆棚。
要回答为什么 attention 这么优秀?是因为它让模型开窍了,懂得了提纲挈领,学会了融会贯通。
——阿里技术
详解Transformer (Attention Is All You Need) - 知乎 (zhihu.com)
0. 计算机视觉的三类任务
分类、目标检测、实例分割
1. CNN(Convolutional Neural Networks)
1)卷积:
图像处理中:平滑、锐化、展宽
音频信号处理:自然语言理解
2)卷积神经网络(CNN):人脸识别、字符识别、美颜
A. 由传统的全连接到卷积
学习的参数由10000到9个
B. 以图像分类为例
第一层:可以表示在特定的位置和角度是否出现边缘
第二层:将边缘组合成花纹
第三层:在上一步的花纹进一步汇合成物体特征部位的模型
...逐级
得到物体的特征
3)卷积神经网络的组成
A. 卷积层
卷积+激活函数(常用线性整流单元 ReLU函数 把特征图上所有负数都变0,正数不变)
B. 池化Pooling
把局部多个神经元的输出,组合成下层单个神经元来减少数据维度
数学语言:在一个小矩阵中找最大值或均值,这就是最大池化运算
意义: 降低数据维度,减少偏差,避免过拟合
C. 全连接层
把相邻两层的神经元全部交叉相连
2. RNN(Recurrent Neural Network)
循环神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再是无连接而是有连接的,并且隐藏层的输入不仅包括输入层还包括上一时刻隐藏层的输出。建立了网络隐层中的时序关系. 但是RNN难以并行,效率太低。
一文搞懂RNN(循环神经网络)基础篇 - 知乎 (zhihu.com)
3. Attention机制
参数更少,速度更快,效果更好。本质上是通过加权求和,获得对上下文的全局感知。
self-Attention: 就是各个部分的拆解对照表,计算各部分的权重,标明相互之间的关系。每个self-Attention分解为多个部分,就是Multi-Head Attention
前馈网络: 根据这些权重变一次形状。
编解码-Attention: 在组装的时候不光要考虑自己,还要兼顾拆解时候的整体信息。
4. Transformer
A. Transformer和CNN的区别
CNN通过级联学习到不同尺度上的模型,也就是它把SIFT做的更强一点,通过适配数据的学习。
Transformer考虑的是一个特征学完之后和另一个特征之间的相对关系,不完全依赖于数据本身,普适性更好。
Transformer的每个参数是动态的,而CNN很多学习的参数一旦学完就不动了。
从计算机视觉发展过来的CNN其实是跟随CV参数的概念,凑出特征。它这种相当于有一个从局部到整体的一个扩散机制去寻找表达。但是Transformer非常暴力,从低级特征开始就是创建全局的关键点之间的联系,随着层数加深,汇聚成拐点、部分。然后依然去寻找拐点之间的联系。
CNN的优势在于SIFT,这也是Transformer想融合的。
最近有意思的工作,将transformer应用到CV上:Swin,CVT,CSwin,Focal Transformer
B.SIFT(Scale-Invariant Feature Transform)尺度不变特征变换
SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性。 是通过获得高斯差分金字塔(上采样下采样,不同卷积核的高斯模糊,做差值)定位关键点,然后方向赋值,建立对关键点的描述,实际就是一个区域范围的向量,然后通过比较向量之间的欧式距离来比较相似性。
具体步骤:
1)Scale-space extrema detection 尺度空间极值检测
通过不同的高斯模糊卷积
2)Keypoint localization 关键点定位
3)Oriention assignment 方向赋值
4)Keypoint descriptor 关键点描述
6.SIFT(尺度不变特征变换)_哔哩哔哩_bilibili
C. 简述Encode和Decode思想
Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字、语音、图像、视频数据,模型可以采用CNN、RNN、BiRNN、LSTM、GRU等等。
Encoder-Decoder框架有一个最显著的特征,就是它是一个End-to-End学习的算法。
编码,就是将输入序列转化成一个固定长度的向量;
解码,就是将之前生成的固定向量再转化为输出序列。
D. 什么是端到端的网络?
端到端指的是输入是原始数据,输出时最终目标。
5.Bert
Pre-training of Deep Bidirectional Transformers of Language Understanding
深的双向的transformer是用来做预训练的针对的是一般的语言的理解网络
在NLP中,一直没有一个深的神经网络,使得训练好之后能够帮助一大片的NLP的任务。Bert的出现,使得我们终于可以在一个大的数据集上,训练好一个比较深的神经网络,然后应用在很多NLP任务上。
Bert,是一个预训练的语言表征模型。它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的Masked language model(MLM),以致能生成深度的双向语言表征.
Bert的两个预训练步骤
1)Masked Language Model(MLM)
倾向于抽取token层次的表征,是Bert能够不受单向语言模型限制的原因。
2)Next Sentence Prediction(NSP)
简单的来说就是预测两个句子是否连在一起。
6.ViT(Vision Transformer)
将CV和NLP领域知识结合起来,对原始图片进行分类。在大型数据集上表现超过了当前SOTA模型,用特征图或局部小窗口将2D转换为1D降低数据大小。将图像打成块送入Transformer中
7. 梯度消失/爆炸及其解决方法?
出现原因:链式法则。当模型的层数过多的时候,计算梯度的时候就会出现非常多的乘积项。
解决方法:用ReLU代替Sigmoid,用BN层,用残差结构解决梯度消失问题;梯度爆炸的话用正则化来限制。
8.ResNet 残差连接
是针对模型退化现象提出来的,通过residual connection残差连接让上百层的模型得以收敛,从而也在分类任务中达到了更高的精度。所谓残差连接值得就是将浅层的输出和深层的输出求和作为下一阶段的输入。
9.BatchNormalization 批标准化
BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0,方差为1的标准正态分布。其实就是把越来越偏的分布强制拉回到比较标准的分布,这样使得激活输入值落在非线性函数式对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化。 意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
10.为什么要用激活函数?
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
常用的激活函数:Sigmoid函数,ReLU函数,Tanh函数
11.词嵌入的核心思想(intuition)是什么?
最合乎直觉(inyuition)的假设-分布假设:相似的词往往出现在同一环境中(例如,在眼镜或检查等词附近往往有医生)。出现在非常相似的分布(其相邻的词是相似的)中的两个词具有相似的含义。任务是把词转换为可以计算的向量。
两种主流的word embedding算法:
1)word2vec:
通过上下文来预测当前词,通过当前词来预测上下文
2)GloVe:
是对Word2vec方法的扩展,它将全局统计和Word2Vec的基于上下文的学习结合了起来。
词嵌入的经典方法:
独热编码(one hot),词袋模型(bag of words),词文档-逆文档频率(TF-IDF)
12. one-stage和two-stage
two-stage:将检测问题划分为两个阶段,首先产生候选区域,然后对候选区域分类。这一类的典型代表是R-CNN,Fast R-CNN,Faster R-CNN,Mask R-CNN家族。他们识别错误率低,漏识别率低,但速度较慢,不能满足实时检测场景。
one-stage检测算法:不需要产生候选区域阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度。比较典型的算法如YOLO,SSD,YOLO V2,YOLO V3,Retina-Net等。
YOLO(You Only Look Once)
13. SoftMax
由分数取指后归一化为概率。
14. 交叉熵损失
度量现在的分类器输出与预测值之间的距离。