• 小白自学机器学习----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

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

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

  • 相关阅读:
    js格式化时间和时间操作
    java链接FTP实现上传和下载
    JQuery 对 Select option 的操作
    利用set实现去重
    数组去重的五个办法
    JavaScript实现360度全景图片展示效果
    对于行高(line-height)的一些理解
    Flex 布局教程:语法篇
    学习Javascript闭包
    MySQL explain字段解释
  • 原文地址:https://www.cnblogs.com/xieviki650/p/ML_Tips4ML.html
Copyright © 2020-2023  润新知