深度神经网络优化

数据集划分:train/dev/test 训练集、验证集、测试集三部分。(当没有测试集的时候,也把验证集叫做test sets).训练集:训练算法模型。验证集:验证不同算法的表现情况,选择最佳算法模型。测试集:测试最好算法的实际表现,作为该算法的无偏估计。(泛化能力)

样本量<10000,6: 2:2。 样本量很大如100万,则98%:1%:1%。

正则化:

L1范数(也称参数洗属性惩罚),绝对值相加,限制参数数值之和,w更加稀疏:指更多零值;虽然L1得到W更稀疏但求导复杂。

L2范数(也称权重衰减),限制参数平方和,平方和开方L2正则化更常用,求导只用到自身。

dropout: keep_prob=0.8(该层有80%神经元的输出随机置0,通过伯努利分布生成向量点乘实现) 。(dropout只是训练模型使用,测试和实际应用模型不需要),相当于多种网络的融合,减少神经元之间依赖性,更加robust.(是一种正则化技巧)。

数据增广 (data augmentation):添加样本噪声和数量。扭曲,翻转,旋转,缩放。

early stopping:随迭代次数增加,训练误差变小(偏差),但是验证误差增加(方差)。选择合适迭代次数。缺点:损失函数值不够小。优点:防止过拟合。没有L2正则化效果好(更常用)

方差和偏差:方差:过拟合。偏差:欠拟合。训练误差体现了是否出现偏差,验证误差(应该是验证误差和训练误差的差值)体现是否过拟合。传统机器学习中方差和偏差是对立的(正交化),而深度学习在复杂网络和海量训练样本条件下,可以同时有效减小偏差和方差恰好可以解决这个问题。

BN

batch normalization(批标准化),其实是对Z处理,引入了γ和β参数,相当于添加了随机噪声,效果类似dropout

梯度消失或梯度爆炸

mini_batch gradient descent :

batch :所有m个样本。minibatch: m/n个样本(minibatch_size=m/n).

所有样本进行一次梯度下降计算:称为经历一个epoch

指数加权平均:

优化梯度下降算法速度的方法

动量梯度下降算法:

RMSprop:

Adam(adaptive moment estimation):上两种的结合。

学习因子衰减:(学习因子\small \alpha最重要的参数

超参调试:均匀随机取样及非均匀随机取样(线性尺度与log尺度变换),放大取样区数据量。

covariate shift:协变量偏移,训练样本每一批都有不同的分布,且每层的输出也是如此,数据分布波动很大,和测试样本的变化。而BN恰好可以减弱这种问题对于模型泛化的影响。

softmax regression:  输出层神经元输出表示该类的概率。dL/dz=a-y(同二元分类)

机器学习其实是解决两个问题:

1.定义一个评价分类器性能的指标(metric)  (F1 Scorce=2·P·R/(P+R)),优化指标和满意指标。

2.如何取提升指标

解决偏差的方法:

1,训练更大的模型

2.训练更长时间或更佳的优化算法:如动量。。。

3.神经网络架构及超参调试

解决方差办法:

1更多样本

2正则化:L2,dropout, data augmentation

3.神经网络架构及超参调试

如何区分是否出现偏差方差,还是训练集与验证/测试集分布不一致?:train_dev error。

迁移学习:预训练权重加载,仅改变后面某几层权重,冻结前面权重,训练模型。然后再解冻,finetune。只需改变输入、输出及输出层的权重和偏置,不需改变隐层的权重和偏置,重新训练出输出层的权重和偏置。(当然如果新模型数据量陡增,也可以重新训练所有层的权重和偏置)  (迁移学习还可以增加新模型数据量少时训练结果的鲁棒性,迁移学习的前提是输入相同,如都是图片。)

多任务学习:用一个融合的神经网络模型实现多种分类效果,如行人、车辆、交通标志、信号灯。输出维度为(C,1)。

与softmax regression区别是:多任务学习是多标签的,标签向量y可以有多个元素为1 ,而softmax regression标签向量y只有一个元素为1。

端到端模型(end to end):将所有阶段如特征、学习处理等模块混合在一起,只关心输入和输出。(缺点:需要大量数据,排除了潜在的有用的人工设计。优点:让数据说话,需要手动设计的模块更少)

原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725340.html