一、损失函数(*)
0-1损失函数
平方损失函数
交叉熵损失函数
当然,还有16年出的center-loss
二、激活函数(*)
sigmod
tanh
relu
leaky-relu
elu
maxout
ReLU、LReLU、PReLU、CReLU、ELU、SELU
三、优化方法(*)
深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
说明:SGD,Momentum,Nesterov Momentum是手动指定学习速率的,而后面的AdaGrad, RMSProp, Adam,就能够自动调节学习速率.
BGD
SGD
Momentum
AdaGrad
RMSProp
Adam
四、BN
一般放在卷积层和激活函数的中间,对数据进行归一化处理,能够改变数据的分布,增强鲁棒性,训练 的收敛也更快。同时, 采用了BN后,可以移除dropout 和L2正则项。
五、数据增强
- 旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;
- 翻转变换(flip): 沿着水平或者垂直方向翻转图像;
- 缩放变换(zoom): 按照一定的比例放大或者缩小图像;
- 平移变换(shift): 在图像平面上对图像以一定方式进行平移;
- 可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置;
- 尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;
- 对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;
- 噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;
- 颜色变化:在图像通道上添加随机扰动。
- 输入图像随机选择一块区域涂黑,
github代码:
(1)https://github.com/codebox/image_augmentor
(2)https://github.com/aleju/imgaug
六、梯度消失和梯度爆炸
这在反向传播中会出现这种问题
梯度消失:采用sigmod函数和平方损失会导致该问题。
解决方法:采用BN;采用交叉熵损失函数;使用relu,leaky-relu等;引入ResNet的残差;
梯度爆炸:深度学习中一般很少出现这种问题。
解决办法:加入正则化,对较大的权重进行惩罚;采用BN ;
七、过拟合和欠拟合
过拟合:所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。
解决办法:dropout、正则化、增大数据、数据清晰(数据不纯的情况下)
欠拟合:所建的机器学习模型或者是深度学习模型提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,
解决办法:一般出现在模型开始阶段,训练后不会,或者换用更复杂的模型。
八、BP反向传播(*)
利用了链式求导法则,然后更新参数,更新的形式为:假设原来的参数为w,损失函数为C,则 ,其中为学习率。
九、softmax(*)
其中n为softmax输入的总数
十、评价标准-recall、pression、accuracy,mAP
准确率(accuracy)召回率(recall)精确率(precision)的含义
FN:False Negative,正样本被判定为负样本。
FP:False Positive,负样本被判定为正样本。
TN:True Negative,负样本被判定为负样本。
TP:True Positive,正样本被判定为正样本。
样本总容量=FN+FP+TN+TP
accury=(TP+TN)/(FN+FP+TN+TP),检测到正确的样本占所有样本的比例。
precesion = TP/(TP+FP) 即,检索结果中,都是你认为应该为正的样本(第二个字母都是P),但是其中有你判断正确的和判断错误的(第一个字母有T ,F)。它计算的是所有被检索到的正样本中,和"被检索到"的正样本占的比例。
recall = TP/(TP+FN)即,检索结果中,你判断为正的样本也确实为正的,以及那些没在检索结果中被你判断为负但是事实上是正的(FN)。它计算的是所有检索到的正样本占所有"应该检索到的正样本"的比例。
F1=2*precession*recal(precesion+recall)
十一、预处理
减去均值、白化可以加速训练
十二、学习率、权重衰减、动量
权重衰减是放在损失函数的正则化项,可以对较大权重进行惩罚。
十三、dorpout