深度学习-神经网络调参技巧

零、train loss与test loss结果分析

1、train loss 不断下降,test loss不断下降,说明网络仍在学习;(最好的)
2、train loss 不断下降,test loss趋于不变,说明网络过拟合;(max pool或者正则化)
3、train loss 趋于不变,test loss不断下降,说明数据集100%有问题;(检查dataset)
4、train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;(减少学习率)
5、train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。(最不好的情况)

一、将数据分为训练数据和测试数据

一般用于训练的数据可以是所有数据的70%,剩下的30%可以拿来测试学习结果。为什么要分开成两批,就像我们读书时的时候, 考试题和作业题大部分都是不一样的吧,这也是同一个道理。

二、观察曲线

观察误差曲线和精确度曲线、R2分数在回归问题、F1分数用于测量不均衡数据的精度。

三、特征选择,选择好的特征

1、避免无意义特征,比如颜色都差不多相同;

2、避免重复特征,比如重量单位斤和千克;

3、避免复杂特征,比如让机器学习预测从A走到B的时间,如果我有两种输入特征信息可以选,一种是 A, B的经纬度,另一种是 AB间的距离。虽然这些信息都属于地理位置的信息,不过让计算机计算经纬度可能会比计算距离麻烦很多。

四、处理不均衡数据

1、获取更多数据

2、更换评判方式,通常, 我们会用到 准确率 accuracy, 或者误差 cost来判断机器学习的成果. 可是这些评判方法在不均衡数据面前, 高的准确率和低的误差变得没那么重要。所以我们得换一种方式评判. 通过 confusion matrix 来计算 precision 和 recall, 然后通过 precision 和 recall 再计算f1 分数.这种方式能成功地区分不均衡数据, 给出更好的评判分数;

3、重组数据

方式一: 复制或者合成少数部分的样本,使之和多数部分差不多数量。

方式二: 砍掉一些多数部分, 使两者数量差不多;使用其他机器学习方法:如果使用的机器学习方法像神经网络等, 在面对不均衡数据时, 通常是束手无策. 不过有些机器学习方法, 像决策树, decision trees 就不会受到不均很数据的影响;修改算法,如果你用的是 Sigmoid 的激励函数, activation function, 他会有一个预测门槛, 一般如果输出结果落在门槛的这一段,预测结果为梨,如果落在这一段, 预测结果为苹果,不过因为现在的梨是多数派, 我们得调整一下门槛的位置, 使得门槛偏向苹果这边,只有很自信的时候,模型才会预测这是苹果。让机器学习,学习到更好的效果。

五、特征数据的标准化

1、一种叫做 min max normalization,将所有特征数据按比例缩放到0-1的这个取值区间,有时也可以是-1到1的区间;

2、还有一种叫做 standard deviation normalization,会将所有特征数据缩放成平均值为0,方差为1。使用这些标准化手段,我们不仅可以快速推进机器学习的学习速度,还可以避免机器学习 学得特扭曲。

六、批标准化

Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层的全连接和激励函数之间都进行 normalization 的处理。

七、过拟合

1、增加数据量;

2、l1,l2正规化,原始的cost误差是cost = 预测值-真实值的平方。现在把 误差值W 也考虑进来,变成一种惩罚机制. l1 正规化是绝对值abs,L2 正规化只是绝对值换成了平方;

3、dropout,在训练的时候, 我们随机忽略掉一些神经元和神经联结,使这个神经网络变得”不完整”,用一个不完整的神经网络训练一次,到第二次再随机忽略另一些,变成另一个不完整的神经网络。有了这些随机 drop 掉的规则,我们可以想象其实每次训练的时候,我们都让每一次预测结果都不会依赖于其中某部分特定的神经元。像l1,l2正规化一样,过度依赖的 W ,也就是训练参数的数值会很大,l1, l2会惩罚这些大的参数。Dropout 的做法是从根本上让神经网络没机会过度依赖。

八、交叉验证

神经网络也有很多参数, 我们怎么确定哪样的参数能够更有效的解决现有的问题呢?交叉验证就是最好的办法了。

九、激活函数选择

在卷积神经网络 Convolutional neural networks 的卷积层中,推荐的激励函数是relu;在循环神经网络中recurrent neural networks,推荐的是tanh或者是relu。

十、加速神经网络训练速度

原理是梯度下降的方式不一样,分别有Stochastic Gradient Descent (SGD)、Momentum、AdaGrad、RMSProp、Adam,默认用 adam 就好了, 效果比较好。

 

你可能感兴趣的:(人工智能)