深度学习指导

2020-07-03 23:28发布

有哪些短期学习深度学习的课程?

有哪些短期学习深度学习的课程?

1条回答
大泽九章
2楼 · 2020-07-15 23:10


https://www.toutiao.com/a6706825496010686990/

作者:ChristopherDossman编译:ronghuaiyang

简单和复杂的技巧,帮助你提升深度学习的模型准确率

我从新入行和有经验的机器学习工程师中那里得到的最多的问题就是”我如何得到更高的准确率?“

既然机器学习在商业领域最有价值的地方就是在于它的预测能力,那么从现有的系统中压榨更高的准确率是一个简单的获取更多价值的方法。

这个指南会分4个不同的部分,每个部分介绍一些不同的策略。

数据优化

    算法调试

    超参数优化

    集成,集成,集成

不是所有的这些都能提高性能,你会发现,当你对同样的问题使用更多的这些方法的时候,会有一个性能的极限。尝试了这些之后仍然没什么进展?那么你需要重新思考一下你的具体的使用场景的核心解决方案。这篇文章只是一个速查表,我会给你每个部分的具体的信息的链接。

数据优化

均衡你的数据集

如果你的问题是分类的话,一个最简单的方法来提升模型的能力就是将你的数据集变的均衡。通常情况下,现实世界中的数据集是不均衡的,如果你需要你的深度学习系统学到的是如何基于特征来分辨不同的类别,而不是基于分布来分辨不同的类别的话,你需要将你的数据集变的均衡。

常用的方法包括:

将采用多数的类:你可以通过对多数类进行降采样来平衡数据集的分布。

    过采样少数的类:重复采样可以用来增加你的少数类的比例。

关于这个问题,这里有个很好的文章:http://amsantac.co/blog/en/2016/09/20/balanced-image-classification-r.html

更多数据

我们应该很熟悉这个图。这个图显示了数据量和深度学习以及传统机器学习在能力上的关系。如果你想你的模型具有更好的能力,你需要更多的数据。这取决于你的预算,你可以构造更多的具有标签的数据,或者收集更多的没有标注的数据,然后训练你的特征提取子模型。

开源的标注软件

图像:https://github.com/Labelbox/Labelbox

    音频:http://www.fon.hum.uva.nl/praat/

    视频:http://www.anvil-software.org/

生成更多的数据

一个往往被忽视的提高准确率的方法是从你已有的数据中生成新的数据。以照片为例,工程师们常常会对照片进行旋转,平移等操作。这些操作同样也减少了过拟合的风险。

关于造更多的数据的问题:https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced

算法调试

使用论文的原始的代码

你正在做的工作是不是有许多人正在研究呢?你很走运,因为上百个工程师可能已经考虑过如何来得到这个问题的最佳准确率了。读一读相关主题的论文,注意一下他们所使用的不同的方法和得到的结果。他们甚至有github的代码给你总到嘴边。

GoogleScholar是一个很好的搜索引擎,他们有很多的工具来帮助你找到相关的研究。

算法抽查

不要太自以为是,不可能知道哪一个机器学习的算法在你的问题上是最佳的。每次我遇到新的问题,而且没有经过长时间的研究的话,我会看看目前能用的方法,一个一个的试,深度学习和传统机器学习的方法都会试。

做完实验后,对所有的结果排个序,得到最佳的那个算法。

数据驱动的机器学习算法选择:https://machinelearningmastery.com/a-data-driven-approach-to-machine-learning/

超参数的优化

学习率

Adam优化器算法久经考验。在深度学习上常常能得到很好的结果。即使是这样好的性能,也不免让你陷入到局部最下的问题中。那么有一个算法既能有Adam的优点,又能避免陷入局部最小,这个方法是热重启SGD:https://medium.com/38th-street-studios/exploring-stochastic-gradient-descent-with-restarts-sgdr-fa206c38a74e。

关于学习率的文章:https://towardsdatascience.com/estimating-optimal-learning-rate-for-a-deep-neural-network-ce32f2556ce0

Batchsize和epochs的数量

标准的程序时使用大的batchsize和大的epochs数量,但是平常的策略给你的也是平常的结果。需要对你的batchsize和训练epochs数量做一点实验。

提前停止

这是一个减少泛化误差的非常好的方法。继续训练也许会提升你的训练集的准确率,但是到了某个点之后,验证集上的准确率开始下降。为了提升对真实数据的能力,试试提前停止的策略

提前停止:https://stats.stackexchange.com/questions/231061/how-to-use-early-stopping-properly-for-training-deep-neural-network

网络结构

如果你想尝试点好玩的,你可以试试https://github.com/carpedm20/ENAS-pytorch,这算法构建了一个通用的网络设计,在你的数据集上最大化准确率,比标准的神经网络搜索方法如cloudML用的那种更加有效。

正则化

防止过拟合的一个鲁棒的方法是使用正则化。使用正则化有好几个不同的方法,如果你还没有试过的话,建议你在你的项目中试试。

Dropout:随机的让一定比例的神经元在训练的时候关闭。Dropout可以帮助防止过拟合。

    L1和L2的权值惩罚:权值出现尺度爆炸的话,会影响准确率。其中一个对抗的方法是对所有的权值加上衰减。权值衰减让所有的权值越小越好,除非是遇到大的梯度。使用权值衰减常常可以提高性能,也对让模型变得容易解释。

集成,集成,集成

选择最好的模型来用是不是很难?你可以组合来自不同模型的输出,得到更好的准确率。对于每个算法,有两个步骤:

在原始的数据的子集上产生一个简单的机器学习的分布。

    将这些分布组合成一个“集成”模型

模型组合(bagging)

在这个方法中,你训练几个不同的模型,在某些地方有些差别,使用同样的数据,对最终的结果取平均值作为输出。Bagging是减少模型偏差的很好的方法。你可认为是不同的人,具有不同的背景,对通用的问题提出了不同角度的看法。就像一个团队一样,是一个得到正确答案的有效的方法。

级联(stacking)

和bagging很类似,区别在于并没有一个经验的公式来组合最终的结果。你创建的是基于输入数据的元素级别的学习器,你自己选择如何为不同的模型的答案设置不同的权重来得到最终的结果。

还有问题?

重新考虑你的问题

休息一会儿,喝杯茶。这个方案是重新重头思考你的问题。坐下来进行一些头脑风暴,可以帮助你解决一些问题。可以问问自己一些简单的问题:

我的分类问题可以变成一个回归问题吗?或者反过来?

    可以将你的问题分解成更小的问题吗?

    你的二值输出可以变成一个softmax吗?或者反过来?

    你看待问题的方式是最有效的吗?

重新思考你的问题是最困难的一个方法,也常常是最能得到最好的结果的。可以和一些有经验的人聊聊,也许会给你一些新的思路。

英文原文:https://towardsdatascience.com/deep-learning-performance-cheat-sheet-21374b9c4f45

相关问题推荐

  • 回答 20

    选对培训机构比较重要,还有就是选择的时候看一下自己适合哪种风格的讲课方式,这个也很重要。因为现在5G时代来临,人工智能绝对是一个发展的大趋势,如果你自己空余时间又比较多的话,其实可以报一个辅导班,学习学习一些基本的东西,毕竟多学点总是没有坏处...

  • 回答 3

    深度学习是近几年人工智能领域的主要研究方向。深度学习的主要任务是通过构建深度卷积神经网络(Deep Neural Network,DNN)和采用大量样本数据作为输入,人们最终会得到一个具有强大分析能力和识别能力的模型,该模型包含了DNN的构成参数以应用于实际工作。...

  • 回答 16

    算法,数据相关的适合做人工智能

  • 回答 3

    AI深度学习课程是用于建立、模拟人脑进行分析学习的神经网络,并模仿人脑的机制来解释数据的一种机器学习技术,主要应用于图像识别、语音识别、自然语言处理等领域。学完可以从事深度学习工程师、机器学习工程师、人工智能工程师、高级算法工程师、高级算法工...

  • 回答 28

    人工智能取代的行业,一定有如下几个特征:1、大量重复型。2、逻辑性比较强。3、数据库依赖型。像司机,咨询,教育,医生,会计,律师助理,工程师,码农等,都是容易被取代的行业。当然,这都是强人工智能以后会发生的事,现在还是弱人工智能的时代,想进入...

  • 回答 9

    如果你是自己学着玩,提升自己的话,高中毕业都可以。如果是冲着AI算法岗或者科研一席之地,至少211硕士。具体可以亲身体验一下今年算法岗秋招。

  • 回答 9

    可以,未来的人工智能发展深度学习必然是现在大型机器生产科研必备的,证书的话某个培训好像有这个中科院的证书,具体你去百度吧

  • 回答 8

    我觉得就是人工智能的课程,现在家具都是智能家居了。这一块发展一定很好

  • 回答 3

    对于sgd算法而言,batch size太大太小都不好,太小的话训练不稳定,计算效率低;太大的话收敛速度慢,需要仔细调节一下。以2的倍数调节,例如32,64,128等

  • 回答 1

    在terminal中输入$wolf@wolf:~/Downloads/gitclonehttps://github.com/Tencent/ncnn cd切换到NCNN目录***这步很重要,这时候需要修改ncnn的root目录下的CMakeLists.txt文件,需要将倒数几行的add_subdirectory(examples),取消注释,这样就是默认编译example...

  • 回答 5

    人工智能的话其实到现在来说已经慢慢趋于成熟,学的话首先是一线城市,学出来好就业,还有就是薪资也高

  • 回答 3

    画个train and test error VS 训练数据量(training set size) 的learningcurve应该会更加直观了。可以找个简单的数据集,比如说handwritten digits或者什么的,分别用神经网络和决策树或者knn做出这个learningcurve。你会看到如果用一个决策树去解决这个问题...

  • 回答 2

    共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。     一幅图象的灰度共生矩阵能反映出图象灰度关于...

没有解决我的问题,去提问