机器学习第六堂课20210408
卷积神经网络
传统监督学习过程:y = h(x)
图像作为输入的神经网络:
减少参数量:1神经元局部的连接,关注图像局部特征2空间上参数共享,保持图形特征的空间信息;
相关运算:
2维相关运算:h = filter2(f,I)
h(x,y) = F& I(x,y)
卷积运算:同一个神经元作用于图像所有的局部区域。
以滑动窗口的方式对图像区域和卷积核进行 元素级相乘并相加。
图像区域(已知)* 卷积核(未知) = 特征图
卷积核和特征提取:基于卷积核提取的特征鲁棒性更好。
卷积神经网络的组成:输入层、卷积层(由卷积核和卷积运算组成)、非线性激活函数、池化层Poolinng和全连接层。
每个神经元是一个卷积核,输出一个2维响应图。
神经网络的结构是:
输入层 + 隐藏层 + 激活函数 + 输出层
卷积神经网络的组成:
输入层 + 卷积层 + 激活函数 + 池化层 + 全连接层
INPUT + CONV + RELU + POOL + FC
卷积层主要参数:
1、Height/Weight:卷积核的空间维度;
2、Depth:通道数;
3、上一层的数量。
4、Stride滑动窗口每次滑动的步幅。例如:Stride = 2 。
5、Padding填充的数值,一般Padding = 0 。
输出的空间维度是多大的?
池化层:作用是缩小输出图像的大小。
最大池化(Max Pooling)
多个卷积层的叠加。
不同的卷积层可以学到不同程度的特征。
分类任务中的卷积神经网络:特征提取部分(通用于多种任务) + 分类
卷积神经网络的复兴:
1、1989年LeCun提出了现代CNN的雏形LeNet
2、2012年Hinton
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet(残差网络)。
残差网络之前,卷积层的层数不超过20层。
残差网络使得深层卷积网络成为可能。
深度学习框架:
pytorch:由facebook提出,在计算机视觉的顶会上面应用很多。
tensorflow:Google提出。
(0)数据划分:Train + Validation + Test
(1)数据预处理-数据归一化
(2)参数初始化:初始为f服从(0,1)的高斯分布,加载预训练模型。100万的数据集训练出来的效果很好,但是自己收集到1000-2000个数据集,这时,可以把100万里面的数据拿到自己的数据集里面来。
迁移学习:关于参数的初始化,可以用一个大的模型进行自己模型的初始化。
(3)学习率,是一个超参数。
梯度下降法
学习率需要人为设定,因为是一个超参,设定方式:
1、前期观察损失函数变化趋势选择大致合适的学习率;
2、对比不同学习率得到的损失函数收敛值
固定学习率的问题:考虑二元函数,无论选择多大的学习率,手链都很慢!
自适应优化器(参数更新):现在深度学习框架里面有提供。
1、Momentum:避免梯度急剧下降。
2、RMSprop
3、Adam
Mini-Batch梯度下降法
(4)模型正则化策略-Dropout
训练过程中随机将某些神经元设置为0,避免过拟合。
防止过拟合的其他策略:训练提前终止。
参考链接:https://zhuanlan.zhihu.com/p/161738585
https://www.pianshen.com/article/39961694615/
https://blog.csdn.net/u012328159/article/details/80311892