目的:对原始图像数据进行预处理
(https://blog.csdn.net/maqunfi/article/details/82252480)
1.去均值:把输入数据各个维度都中心化为0 其目的是把样本的中心拉回远点,是的输入数据各个维度都中心化。如果不去均值的话,容易发生过拟合。当其中某一个特征比较大的时候,容易在BP的时候发生梯度消失或梯度弥散。
2.归一化 [0~1]或[-1`1] 适用于本来就分布在有限范围内的数据。或者是均值方差归一化。 把均值归成0 方差归成1.适用于于分布没有明显边界的情况
目的是把各个特征的尺度控制在在相同的范围内,便于找到最优解,来提高效率。
3.PCA 抛弃携带信息量较少的维度,保留主要特征信息,对数据进行降维。来加速机器学习进程。 PCA可用于特征提取、数据压缩、去噪声、降维等
4.白化 去掉数据之间的相关联性 和 方差均一化(特征具有相同的方差 协方差阵为1)以达到去除冗余输入的作用,来提升训练速度
两个关键操作:局部关联(filter)、窗口滑动(filter对局部数据的计算)
1.深度(depth) 有多少个神经元
2.步长(stride)
3.填充值(padding) 填充方式
4.卷积核:https://blog.csdn.net/qq_40962368/article/details/82864606
5. 1*1卷积(network in network)的作用: 升维或者降维 (不全)
池化的作用:压缩数据和参数的量,减小过拟合
具体作用与性质:
1.特征不变性 压缩无关紧要的信息,合并在卷积时候所有局部特征的共有特征
2.特征降维 删除信息量
3. 一定程度防止过拟合
两种方式:Max pooling 和 avg pooling 一般选用max pooling
两层之间所有神经元都有权重的连接
作用:在整个卷积神经网络中起到“分类器”的作用。将学到的特征表示映射到样本的标记空间.
目的:增加真个网络的表达能力即非线性.
几种常见的激活函数的区别:
1.函数表达
σ = 1 1 + e x p ( − x ) \sigma=\frac{1}{1+exp(-x)} σ=1+exp(−x)1
2.函数图像
经过sigmoid型函数作用后,输出响应的阈值被压缩到[0,1]之间.但这样会带来梯度的"饱和效应".导致在误差反向传播的过程中,倒数处于该区域的误差很难或甚至无法被传递至前层,导致整个网络无法被训练. Sigmoid的值域的均值并非为0,而是全为整.这样的结果不符合我们对神经网络内数值的期望应为0的假设.
1.函数表达
σ = 1 1 + e x p ( − x ) − 0.5 \sigma=\frac{1}{1+exp(-x)}-0.5 σ=1+exp(−x)1−0.5
tanh(x)为sigmoid型函数"下移"0.5个单位的来的.因此可以保证tanh(x)的输出响应均值为0.淡tanh(x)型函数仍会发生"梯度饱和"现象.
参数化ReLU是将a作为一个参数放入到模型中作为一个参数训练。但是这样做的结果是很容易发生模型过拟合的情况。
另一种解决超参数a的设定的方式是将其随机化。
在每次批处理训练时计算网络误差并进行无法的反响传播,之后根据一阶梯度信息对参数进行更新
收敛效果稳定,但速度慢
目的:改善SGD更新时候可能产生的振荡现象,通过积累前几轮的“动量”信息辅助参数更新。还可以在网络训练中后期,网络参数趋于收敛、处在局部最小值附近来回震荡时帮助其跳出局部限制,找到更优的网络参数。
动量的理解:使用指数加权平均之后梯度代替原梯度进行参数更新。因为每个指数加权平均后的梯度含有之前梯度的信息,动量梯度下降法因此得名
在momentum的基础上在更新梯度的时候加入对当前梯度的校正。对于凸函数在收敛性证明上有更强的理论保证。
但没有将lr的自适应性考虑进去
根据训练轮数不同,对lr进行了动态调整
仍然存在的问题:仍需要人为指定一个全局lr。同时网络训练到一定轮数后,会使得lr为0而导致训练过早结束
在Adagrad的基础上引入衰减因子,消除Adagrad对于全局lr的依赖。
利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的lr。优点主要在经过偏置校正后,每一次迭代lr都有一个确定的范围,这样可以使得参数的更新比较平稳。但是Adam仍需要指定基本lr
结果:加快收敛速度,一定程度上缓解梯度弥散。
操作:
在模型每次进行随机梯度下降的时候,通过mini-batch来相对应的activation做规范化操作。使输出信号各个维度的均值为0方差为1
步骤:
1.计算批处理的数据均值
2.计算批处理的数据方差
3.根据所计算的均值和方差对该批处理做规范化
4.进行尺度变化和偏移(目的:能够在增加BN之后有可能还原最初的输入,从而保证整个网络的容量)
原理:
机器学习的假设:source domain 和 target domain的distribution是一致的。如果不一致,则会发生一些问题,其中包括covariate shift,即源空间和目标空间的条件概率一致但边缘概率不同。通过BN来规范层的输入。消除internal covariance shift
Dropout 层一般加在全连接层 防止过拟合 提升模型泛化能力。而很少见到卷积层后接Drop out (原因主要是 卷积参数少,不易过拟合
损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差
代价函数(Cost Function)作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均
目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)
https://blog.csdn.net/haoji007/article/details/89015675
需要调参及大量样本 物理含义不明确即不知道每个卷积层提取到的特征是什么样的
采用随即批处理(mini-batch)的训练机制,在对模型每个epoch训练前将数据机随机shuffle
效果:提高模型收敛速率,同时相比以固定次序训练的模型会略微提升在测试集上的预测结果。
1.初始学习率设置不应该过大0.01~0.001
2. lr在学习过程中随轮数增加而减缓。(可以借助learning curve来判定lr的设置是否合适)
a)轮数减缓(step decay)
b)指数减缓(exponential decay)
c)分数减缓(1/t decay)
3. Batch Normalization:加快收敛速度,一定程度上缓解梯度弥散。
1.代价敏感(增加小样本错分的“惩罚代价”,直接体现在目标函数中)
两种:a.基于代价敏感矩阵 b.基于代价敏感向量
2. 权重指定