zoukankan      html  css  js  c++  java
  • 怎样提高深度学习的效果?

    怎么让深度学习模型获得更好的效果?这个是一直有人问我的问题,或者可以这么问?

    我怎么提高正确率?或者为什么我的深度神经网络效果这么差?我经常这样回复“”我给不出确切的答案,但是我能给你一些建议“”

    下面我将列一些我认为会对提升学习效果有效的一些建议。我将这些想法mark到下面,这些想法不仅仅对深度学习有用,而且对机器学习同样有效。

    提升学习算法性能的四个建议

    1 通过数据

    2 通过算法

    3 通过微调算法

    4 采用集成ensembles方式,

    一 通过数据:

     1)获取更多的数据

     2)发明更多的数据

     3)重新调整你的数据

     4)变换你的数据

     5)特征选择

    获取更多的数据

        模型的质量取决于你训练数据的质量。你需要最好的数据去解决你的问题,同时你也需要最多的数据。

    深度学习和其他非线性技术的机器学习技术在数据越多时,效果越好。深度学习尤其是这样。

    在图中可以看出,当数据量超过一定阶段,普通的机器学习算法到了精度极限了,但是深度学习不是。

    发明更多的数据

         深度学习算法在数据量大时效果会更好,但是当我们没办法获得大量的数据,我们可以发明更多的数据

       一、如果你的数据是数字向量,依据已有的向量进行随机修改

       二、 如果你的数据是图片,依据已有的图像进行随机修改 例如 尺度缩放、旋转、平移

       上述方法被称为数据增广

        在caffe中的数据层,如下图所示,中间那个镜像和crop_size就对应图像的两种操作,是数据数据增广的方式

        

       相关链接:

    重新调整你的数据

        这是一个速赢的策略,这个策略在神经网络中是这样:

        将数据调整到激活函数的边界范围内,如果是sigmoid激活函数,将数据调整到0-1之间,如果是tanh激活函数,将数据调整到-1,1之间。这个策略适用于输入数据X和输出数据Y,例如在神经网络输出层采用sigmoid激活函数进行二值预测,就可以归一化输出y到二值数据(0或者1)。如果是采用的softmax方式,即最终输出的结果代表的是该输出的概率,你同样也可以对中间层进行归一化。

        三种归一化的方式:一、归一化到(0,1) ;二、归一化到(-1,1);三、数据标准化,即平均值为0,方差为1

         在caffe中,对数据进行读取时,一般需要去均值操作,也就是计算数据的平均值,可以采用tools工具中的compute_image_mean.cpp,实际上这个操作就对应这个策略!

    变换你的数据

        除了上面的一些变换方法,还可以尝试下面的做法:

        将数据可视化进行观察,对每一列数据(单个特征数据)进行观察:

        1 每一列的数据是否看着像偏态高斯,可以通过Box-Cox变换调整偏态

        2 每一列的数据是否看着像指数分布,可以尝试log变换

        3 每一列的数据是否像被击倒或者切掉,可以尝试平方或者平方根

        4 一些特征是不是可以进行离散化或者二值化,用来突出某些特征

    基于你的直觉,可以尝试下面的做法:

         数据是不是可以通过投影的方式类似PCA进行预处理?

         能否把多个属性聚集成一个?

         通过设置bool标志挖掘数据中潜在的信息

        多抽查几种不同的变化数据的方式

       相关链接:

     特征选择

        分为:

         过滤方式:过滤特征选择方法运用统计方法将一个分值分配给每个特征.这些特征按照分数排序,然后决定是被保留还是从数据集中删除.这个方法通常是单变量且独立的考虑每个特征,或者考虑其依赖变量.一些过滤方法包括Chi squared test(方卡检验),information gain(信息增益)和correlation coefficient scores(相关系数得分).

         包装方式:包装方法考虑一族特征作为搜索问题,不同的组合被准备,检验并和其他组合比较. 我们使用一个预测模型评估特征的组合,然后根据模型精度给每个特征组合一个分数.

    这个搜索过程可能有条不紊的例如best-fist搜索算法, 它可能随机例如random hill-climbing 算法.或者它可能是启发式的例如前向和后向传递增添和删除特征的.一个例子就是递归特征消除算法.

         嵌入方式:嵌入式算法在模型创建的时候,学习哪些特征对于模型精度的贡献最大.最典型的嵌入式特征选择方法是正则化方法.正则化方法也被称为引入附加约束到预测算法(例如回归算法)的优化,它偏向于较低复杂度的模型.正则规划算法的例子是Lasso,Elastic Net和Ridge Regression.

    二 通过算法:

    http://machinelearningmastery.com/improve-deep-learning-performance/

  • 相关阅读:
    shell 编程小例子
    第二节,oracle sql编程以及高级
    第一节、oracle的安装及数据库和表的创建,知识整理
    PL/SQL-->UTL_FILE包的使用介绍
    显式游标和隐式游标的区别
    Oracle游标—for、loop、if结合应用
    oracle的用户自定义异常
    使用@property
    使用__slots__限制绑定属性
    给类,实例绑定属性和方法
  • 原文地址:https://www.cnblogs.com/love6tao/p/5898010.html
Copyright © 2011-2022 走看看