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

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

下面我将列一些我认为会对提升学习效果有效的一些建议。我将这些想法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.

 

二 通过算法:

How To Improve Deep Learning Performance