参考:https://mp.weixin.qq.com/s/AGlX6O4Brbm3kUvRMEE6TA
在设计和应用DNN到一个特定的问题上可能会遇到很多挑战。为了达到现实世界应用所需的性能标准,对数据准备,网络设计,训练和推断等各个阶段的正确设计和执行至关重要。
1、数据量
样本增强……· (水平和垂直旋转或翻转图像、改变图像的亮度和颜色、随机模糊图像、随机从图像裁剪补丁)
2、优化器
流行方法:
- 随机梯度下降(SGD)+动量方法
- Adam
- RMSprop
- Adadelta
RMSprop,Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习速率。使用SGD时,您必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。
在实践中,自适应优化器倾向于比SGD更快地收敛,然而,他们的最终表现通常稍差。SGD通常会达到更好的最小值,从而获得更好的最终准确性,但这可能需要比某些优化程序长得多的时间。它也更依赖于强大的初始化和学习速率衰减时间表,这在实践中可能非常困难。
因此,如果你需要一些快速的结果,或者只是想测试一个新的技术,选择自适应优化器。我发现Adam很容易使用,因为它对你选择完美的学习率并不是很敏感。如果您想获得绝对最佳的最终表现,请使用SGD + Momentum,并使用学习率,衰减和动量值来最大化表现。
3、处理不平衡的数据
- 在损失函数中使用类权重:本质上,代表性不足的类在损失函数中获得更高的权重,因此对该特定类的任何错误分类将导致损失函数中的非常高的误差。
- 过度抽样:重复一些包含代表性不足的训练样例,有助于平衡分配。如果可用的数据很小,这最好。
- 欠采样:您可以简单地跳过一些包含过度表示类的训练示例。如果可用数据非常大,这最好。
- 数据增加为少数类:您可以综合创建更多的代表性不足的训练示例!例如,在前面检测致命武器的例子中,你可以改变属于具有致命武器的类别的视频的一些颜色和光照。
4、迁移学习
通过迁移学习,我们不需要太多的数据!这个想法是从一个以前在数百万图像上训练过的网络开始的,比如在ImageNet上预训练的ResNet。然后,我们将通过仅重新训练最后几个层并使其他层独立来微调ResNet模型。那样的话,我们正在将ResNet从数百万图像中学到的信息(图像特征)进行微调,以便我们可以将它应用于不同的任务。这是可能的,因为跨域的图像的特征信息通常非常相似,但是这些特征的分析可以根据应用而不同。