linlh

  • 3

    获得赞
  • 2

    发布的文章
  • 0

    答辩的项目

模型不work怎么办?

机器学习 深度学习

最后更新 2020-05-19 17:38 阅读 4122

最后更新 2020-05-19 17:38

阅读 4122

机器学习 深度学习

为什么说深度学习的解决如此困难?

原因在于无法复现出现的结果,很多时候我们看到一篇Paper中的结果很完美,但是我们自己却很难复现出一样的结果。同样的,当模型出现问题的时候,我们也很难去复现出现问题的那个场景。

为什么模型的性能很糟糕?

1. 模型的实现上存在Bug,并且有时候这些bug很难察觉

2. 超参数的选择

3. 模式和数据是否匹配

4. 数据集的构建

如何应对深度学习模型的调优?

(1)从简单的开始

1.选择简单的架构

 一开始的时候选择一个简单的架构,对于图像比如说选择LeNet类似的价格,对于序列选择LSTM,其他的选择全连接神经网络,根据问题的不同进行调整。

2.选择合理的默认设置

比如优化器,选择Adam,学习率为3e-4;激活函数在FC和Conv模型中选择ReLU,LSTM的话,选择tanh。初始化选择He Normal或者Glorot Normal。刚开始的时候可以不进行正则化。

3. 标准化输入

减去数据的均值,然后除以标准差

4. 简化问题

先使用比较小的数据,固定的图片大小,类别等

(2)实现和调试

1. 让模型能够运行

通常可能遇到的问题,shape mismatch, casting issue, OOM等

调试模型在pytorch中可以使用ipdb,在tensorflow中可以使用trickier

2. 在数据中过拟合

可能遇到的问题:错误率上升,爆发,阻碍,或者是处于平原中,不再变化

3. 和已知的结果进行比较

可以对比的已有结果来源:官方的模型实现并且在类似的数据集上的评估结果;官方的实现在Benchmark上的结果;非官方的模型实现;相关论文中的结果;自己实现的模型在Benchmark数据集上的结果;自己实现的模型在类似数据集上的结果

(3)评估模型

考量的参考公式:

Test error = irreducible error + bias + variance + distribution shift + val overfitting

(4)改进模型、数据

1. 欠拟合

调试顺序:使用更大的模型;减少正则化;错误分析;使用不同的模型架构;调整超参数;增加特征

2. 过拟合

调试顺序:可以的话获取更多的数据;增加normalization(batch, layer noramlization);使用数据增强;增加正则化;错误分析;使用不同的模型架构;调整超参数;Early dropping;去除一些特征;减小模型的大小。后面三个策略不是特别推荐

3. 解决distribution shift

分析测试集和验证集的错误,获取更多的训练数据作为补充。或者加入domain adaptation techniques

4. 平衡数据集

如果验证集比测试集好得多,那么你在验证集上过拟合了。

(5)调整参数

1. 手动调整超参数

2. grid search

3. random search

4. coarse-to-fine

5. 贝叶斯参数选择

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://flyai.com/article/487
讨论
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除