此次实战营的积分规则介绍:
笔记建议结合ppt来学习使用,ppt中对应知识可以参照笔记的标题进行查看。
ppt:lesson2_ppt
b站回放:OpenMMLab AI 实战营
往期笔记:笔记回顾
相关学习推荐:
图像分类任务就是:给定一张图片,识别图像中的物体是什么
分类任务用数学表达的形式展示出来就是下图所示的样子。
由于图像的内容是像素整体呈现出的结果,和个别像素的值没有直接关联,所以难以遵循具体的规则来设计算法。
所以我们要做的就是**超越规则
**(让机器从数据中学习)
在传统的方法中我们设计图像的特征,通过对图像采用人工设计的算法计算梯度(往往是对于一个区域计算梯度,而不是每个像素值计算梯度),然后统计梯度方向分布,最后可以将这些特征向量化,提供给机器学习完成分类任务。
在传统方法中我们通过可视化可以发现,通过计算梯度的方式确实可以很好的保留下来数据的表达,而且极大降低了数据的维度。
其中特征工程的天花板就是在ImageNet图像识别的比赛中冠军队伍使用的:基于手工设计的特征 + 机器学习算法实现图像分类,Top-5 错误率在 25% 上下。
在前人特征工程的基础上,我们后续的想法是如何省去人工提取特征的步骤,而是选择让机器自己去学习特征,即**端到端
**的实现。
其中最常用的层次化特征的实现方式就是:
补充:卷积和注意力都是加权求和的算子
在2012年之前我们主流使用的都是传统的视觉算法,而且性能已经达到了瓶颈。在2012年的ImageNet图像分类的大赛中一匹黑马脱颖而出 – AlexNet
来自多伦多大学的团队首次使用深度学习方法,一举将错误率降低至 15.3% 。
在AlexNet网络中,3x224x224的图像输入放在两个gpu中独立计算,到第三步有一个求和,后面继续独立,然后再合在一起做全连接。
AlexNet
网络结构的一些创新点如下所示:
在VGGNet
中,人们频繁的使用3x3的卷积来拆解大尺寸的卷积,意思是:相同的感受野、更少的参数量、更多的层数和表达能力。
如下图所示的一个5x5的卷积可以用两个3x3的卷积来进行替换,他们最终具有相同的感受野。但是替换之后参数量减少了(25 - 18) / 25 ≈ 28%
同时VGGNet也有多个版本对应于多个不同的深度,有兴趣的小伙伴可以自行了解一下。
在VGGNet问世之后,人们又提出了一种想法:并不是所有特征都需要同样大小的感受野,在同一层中混合使用不同尺寸的特征可以减少参数量。也就是InceptionNet
的分组卷积的提出。
而且大名鼎鼎的GoogLeNet就是基于InceptionNet的结构。
在此基础上人们提出了很多个不同的版本:
基于之前的模型,人们提出的残差建模的思想:让新增加的层拟合浅层网络与深层网络之间的差异,更容易学习梯度可以直接回传到浅层网络监督浅层网络的学习。没有引入额外参入,让参数更有效贡献到最终的模型中。
使用残差的好处:
残差:观测值与估计值之间的差。
如果是采用一般的卷积神经网络(没有+x),原先需要求解的是 H(x) = F(x) 。那么假设在网络达到某一个深度时,网络已经达到最优状态了,再往下加深网络就会出现退化问题(错误率上升的问题)。此时要更新下一层网络的权值/权重就会变得很麻烦。
但是,采用残差网络就能很好的解决退化问题。假设当前网络的深度能够使得错误率最低,如果继续增加上图的 ResNet 结构,为了保证下一层的网络状态仍然是最优状态,我们只需要令 F(x)=0 即可,因为 x 是当前输出的最优解,为了让它成为下一层的最优解也就是希望咱们的输出H(x)=x的话,只要让F(x)=0就行了。采用ResNet 的话,也只需要小小的更新F(x)部分的权重值即可。不用像一般的卷积层一样大幅度更新参数。
常用的两种残差结构如下图所示:
这部分平时我也没有学习到,听直播也没有一些比较深入的理解,所有就先把对应知识总结在这里。
根据下面的图片我们可以看到图像分类任务随着模型的不断完善与提出,准确率逐渐上升,但是现在也到了一些难以提升的情况。
这一部分主要涉及了卷积操作中的一些参数量的计算方式以及一些网络压缩相关的内容。
卷积层的可学习参数包括:卷积核 + 偏置值。
参数量计算公式: ′ × ( × × + 1) = ′ 2 + ′
其中:
输出特征图每个通道上的每个值都是输入特征图和 1 个 通道的卷积核进行一次卷积的结果。
乘加次数计算公式: ′ × ′× ′ × ( × × ) = ′′ ′ 2
其中:
从公式中的变量入手,降低参数量和计算量主要有以下两种方法:
参照我们上述InceptionNet的笔记,通过使用大小不同的卷积核确实可以起到削减参数的目的。
1x1卷积:相当于非线性变换。在保持feature map尺寸不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。1x1卷积核可以通过控制卷积核数量实现降维或升维。
这部分内容我之前在整理李宏毅2021年的机器学习视频课笔记的第12部分网络压缩的时候有专门整理过,感兴趣的小伙伴可以去查看一下,链接放在这里:李宏毅机器学习课程笔记
这部分主要是Transformer相关的知识以及注意力机制的使用,就先不整理笔记了(不是特别会),但是这部分笔记其实我在李宏毅2021年的机器学习视频课笔记的第三部分、Network网络架构也做过笔记,链接放在这里:李宏毅机器学习课程笔记。
模型的学习范式主要有:
这部分内容也比较基础,包括梯度下降的部分也完全可以在我之前李宏毅机器学习的笔记中查看,链接放在这里:李宏毅机器学习课程笔记。
注意:这里我想说一下这个4D Tensor其实就是因为使用Pytorch的时候它里面的模型要求输入Tensor要保持这样也就是如下四个参数:[读入图片数量, 图片通道数, 图像分辨率(x * y)]
直接上图:
这里我比较新奇的是学到了两个概念:学习率退火和学习率升温
最终的效果就是模型损失变得更低了。
直接上图:
最后是一些数据增强、模型相关的策略(如,Dropout、随机深度)以及自监督学习相关知识的简单介绍,这里也不具体展开来分析了,后续随着学习的深入上面的笔记肯定会得到实际的应用。