提高深度学习的性能的几点小意见

简要记录,技术细节请查看参考链接,里面附带了如何处理该问题的新链接.

数据层面:


  1. 得到更多的数据
  2. 变换加噪得到新数据
  3. 归一化数据,比如根据output层的激活函数为sigmoid,规整y-value到[0,1]范围,比如tanh,规整到[-1,1]; 建议尝试保留原值和规整[0,1]和[-1,1]三种进行对比.
  4. 转换数据:

Lean on your intuition. Try things.
Can you pre-process data with a projection method like PCA?
Can you aggregate multiple attributes into a single value?
Can you expose some interesting aspect of the problem with a new boolean flag?
Can you explore temporal or other structure in some other way?

5.特征工程
6.重新定义要解决的问题:

比如说我们可以将其分类问题转换为回归问题;
将二进制的输出转换成softmax的输出.
对其问题的子问题进行建模.

算法层面:

1.尝试多种算法:因为你有可能没有完全理解要解决的问题,所以可以试试不同的算法,比如:

  • 试试一些线性的方法,如逻辑回归和线性判别分析
  • 试试决策树的方法,如CART,随机森林和GBDT等
  • 试试SVM和KNN等
  • 试试神经网络,如MLP,CNN,LSTM等

2.多搜搜类似解决该问题的paper,这回给予我们一些新思路和想法.

3.评估算法性能:在算法跑得很慢的情况下,我们无法使用K折交叉验证,那么我们可以试试下面方法:

  • 并行训练n个模型,算其平均值和标准方差,可以得到一个更加鲁棒的性能估计.
  • 利用train/test划分.但我们得确保划分的合理性,使用可视化,单变量统计试试.
  • 试试early stopping,提高验证集的性能

算法调优:

调优神经网络的一些策略:

  • 诊断观察:看看模型是否过拟合和欠拟合,花出验证集和训练集在epoch为x轴,准确率为y轴的分析图.
  • 权重的初始化:尝试固定网络模型,选择不同的初始化策略.
  • 学习率的设置,初始默认一般0.01,如果loss误差降得缓慢,可以试试将其增大10倍,反之,如果loss误差一直在一个范围内浮动,没有降低,可以试试将其减小10倍.如果网络结构比较复杂,可以尝试较大的学习率.
  • 激活函数的选择:常常是relu表现良好.在尝试其他激活函数时,要注意rescale数据.
  • 网络的结构设置:可以试试单隐层加多个神经元(wide);更深的网络加每层少数的神经元(deep);组合上述两种;尝试解决该类似问题的神经网络结构;从paper上获取灵感;
  • batches 和epochs:尝试和训练集等大的batch size;尝试bath size为1的情况;使用grid search(8,16,32,….);尝试少的epochs和大的epochs.
  • 正则化:dropout并尝试不同比例 和L1 L2等;不同位置加入dropout,比如说输入层,隐藏层,输出层;对激活函数的惩罚和约束等.
  • loss函数和优化算法的选择:可以试试adam和RMSprop(对LSTM的训练效果很好)
  • Early Stopping

使用模型融合的方式提高性能

为了得到更高的准确度和更加鲁棒的模型,我们可以尝试模型融合的方式:

  • Combine Models:比如我们有多个表现良好的神经网络模型,而且最好确保他们的相互独立,即使用不同的网络结构和技术等.这样才能更好的提高其性能和鲁棒性. 然后我们算其均值作为其最终结果.
  • Combine Views:使用不同的scaling和transform技术来对数据进行变换,然后可以尝试上述的重新定义其问题的方法,得到不同的模型,越不同越效果好!
  • 尝试stacked / bagging/ boosting进行模型的融合
参考:
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值