viki650

导航

小白自学机器学习----2. 模型改进思路总结

机器学习模型设计后,还仅仅只是第一步,模型后期的调整也是机器学习非常重要的部分

在说模型后期调整前,再整理一下机器模型设计的基本步骤

1. 分析数据:分析、处理数据

2. 设计模型:神经模块叠加,激活函数选择

3. 损失函数:评估模型是否优秀

4. 优化函数:通过最小化损失函数,调整神经模块中的参数,一般为GD(梯度下降)、SGD(随机梯度下降)、Adam(Ada+Momentum 自适应+动量)

5. 训练集:使用训练集,通过循环执行优化函数对设计模型进行参数调整

6. 验证集:使用训练集训练好的参数,进行检测,看输出损失函数如何

7. 测试集:与验证集一样,分出验证集主要是由于测试集可能不会给出,所以需要自己划分验证集

 

当模型表现不好时,我们需要怎么改进模型呢?

训练集改进

首先,我们得问自己,模型在训练集(Training Set)中表现的好不好!

之前我就只看测试集中的表现,但其实如果模型在已有训练集中都表现不好,基本不太可能在测试集得到好结果

所以训练集获得的效果不太好时,我们有哪些方法对模型进行改进呢?

神经元个数

在每一层网络中,调整适合的神经元个数。理论上,一个拥有很多个神经元层可以表示任何的关系,可以适当增加神经元个数。但是也不能设置的太大,物极必反。

激活函数

sigmod、relu、tanh、softplus、softsign、linear

特殊的映射函数

损失函数

MSE(均方差)、交叉熵

优化函数

GD: 计算全部数据后,进行更新

SGD: 获取一个数据,更新一次

mini_batch: 可以当作是特殊的SGD, 获取一个batch后进行参数更新呢,而不是SGD每个数据都更新

Adam: 是自适应调整学习率,距离最佳值越远,学习率越大,距离最佳值越小,学习率越小

 

测试集改进

当训练集效果很好,测试集效果不好时,就说明现在的模型overfiting了

我们应该在训练出能让测试集overfiting的参数后,再考虑下面这些改进测试集的方法

Early Stopping

当测试集出现损失函数值随着训练次数先下降,到一定点后又上升的情况时,我们就在验证集中寻找出最佳损失值的训练次数,提早停止

正则化

在损失函数后添加参数的约束项,通常为参数的第一范式和第二范式

Dropout

在训练集训练时,丢掉一些神经元,然后在测试集中正常训练

相当于是比赛中,平时训练增加难度,正真上场时就会轻松

 

posted on 2020-03-06 13:47  viki650  阅读(679)  评论(0编辑  收藏  举报