您的位置:首页 > 其它

怎样提高深度学习的效果?

2016-09-22 21:20 253 查看
怎么让深度学习模型获得更好的效果?这个是一直有人问我的问题,或者可以这么问?

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

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

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

1 通过数据

2 通过算法

3 通过微调算法

4 采用集成ensembles方式,

一 通过数据:

1)获取更多的数据

2)发明更多的数据

3)重新调整你的数据

4)变换你的数据

5)特征选择

获取更多的数据

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

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



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

发明更多的数据

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

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

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

上述方法被称为数据增广

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



相关链接:

Image Augmentation for Deep Learning With Keras

What is jitter? (Training with noise)

重新调整你的数据

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

将数据调整到激活函数的边界范围内,如果是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标志挖掘数据中潜在的信息

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

相关链接:

How to Define Your Machine Learning Problem

Discover Feature Engineering, How to Engineer Features and How to Get Good at It

How To Prepare Your Data For Machine Learning in Python with Scikit-Learn

特征选择

分为:

过滤方式:过滤特征选择方法运用统计方法将一个分值分配给每个特征.这些特征按照分数排序,然后决定是被保留还是从数据集中删除.这个方法通常是单变量且独立的考虑每个特征,或者考虑其依赖变量.一些过滤方法包括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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: