深度神经网络优化
数据集划分: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):上两种的结合。
学习因子衰减:(学习因子:最重要的参数)
超参调试:均匀随机取样及非均匀随机取样(线性尺度与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):将所有阶段如特征、学习处理等模块混合在一起,只关心输入和输出。(缺点:需要大量数据,排除了潜在的有用的人工设计。优点:让数据说话,需要手动设计的模块更少)