您的位置:首页 >  新闻中心 > 行业动态
  行业动态
 

经典解析 - AI深度学习的一些实用技能

来源:原创    时间:2018-02-12    浏览:0 次

关于许多具有应战性的现实问题,深度学习已经成为最有用的处理办法。

blob.png

例如,关于方针检测,语音辨认和言语翻译等问题,深度学习可以体现出最佳的功能。许多人以为深度神经网络(DNNs)是一种奇特的黑盒子,咱们只需求输入一堆数据,网络就可以输出咱们所要的处理计划!可是,在实践中咱们往往会碰到更多、更杂乱的问题。


在规划网络模型并将DNNs运用到一个特定的问题上,往往会遇到许多应战。关于某一特定的实践问题,咱们需求依据实践运用,正确地规划并练习网络模型,一起数据的准备作业也是至关重要的,这将直接影响模型的练习和推理进程。


经过这篇博文,我将与咱们共享7个深度学习实用技巧,教你怎么让深度神经网络发挥最大效果。

blob.png


▌1、数据!数据!数据!


众所周知的是,假如把深度学习比作一台大型的机器,那么数据就好比是这台机器的燃料,一起它的数量也能决议深度学习这台机器的功能好坏。有标签的数据越多,模型的功能越好。



在实践运用中,布置一个深度学习模型时你需求不断地为其供给更多的数据,并经过微调参数来进一步进步模型的功能。假如你想进步模型功能的话,那就尽可能取得更多的数据吧!

blob.png

添加数据量可以稳定地进步模型的功能


▌2、你应该运用哪种优化器呢?


经过多年的探究,研讨人员开发了不同的梯度下降优化算法(SGD),但各有各的优缺点。常被广泛运用的算法包含:


带动量的随机梯度下降法

žAdam法

RMSprop法

Adadelta法


其间,RMSprop,Adadelta和Adam法都是一种自适应优化算法,由于它们会自动更新学习速率。假如运用一般的随机梯度下降法,你需求手动地挑选学习率和动量参数,设置动量参数是为了跟着时刻的推移来不断地下降学习率。


在实践中,自适应优化器往往比一般的梯度下降法更快地让模型到达收敛状况。可是,挑选这些优化器的模型终究功能一般都不太好,而一般的梯度下降法一般可以到达更好的收敛最小值,然后取得更好的模型功能,但这可能比某些优化程序需求更多的收敛时刻。此外,随机梯度下降法也更依赖于有用的初始化办法和学习速率衰减指数的设置,这在实践中是很难断定的。


因而,假如你只是想快速地取得一些成果,或许只是想测验一个新的技能,自适应优化器将会是不错的挑选。Adam是个简略上手的自适应优化器,由于它对初始学习率的设置没有很严厉的要求,关于学习率的改动进程也并不是很灵敏,因而十分利于深度学习模型的布置。假如你想取得模型的最优功能,可以测验挑选带动量的随机梯度下降法,并经过设置学习率,衰减率和动量参数来最大化模型的功能。


最近的研讨标明,你可以混合地运用两类优化器:由Adam优化器过渡到随机梯度下降法来优化模型,可以取得最顶尖的练习模型!详细的做法是,在练习的前期阶段,往往是模型参数的初始化和调整十分灵敏的时分。因而,咱们可以运用Adam优化器来发动模型的练习,这将为模型的练习节约许多参数初始化和微调的时刻。一旦模型的功能有所崎岖,咱们就可以切换到带动量的随机梯度下降法来进一步优化咱们的模型,以到达最佳的功能!



Adam与SGD的功能比照。

由于自适应优化算法可以自适应地设置学习率,其鲁棒性更好,

因而Adam在练习的初期功能更佳,

而SGD可以在练习完毕后取得更好的大局最小值。


▌3、怎么处理数据不平衡问题


在实践运用中,许多状况下咱们将面临不平衡的数据散布。举一个简略的实践比如:你要练习一个深度网络来猜测视频Feed流中是否有人持有丧命兵器。可是练习数据中,只要50个视频中有拿着兵器的人以及1000个不带兵器的视频!假如只是用这些数据来练习深度学习网络的话,那么模型的功能将不会很好,猜测的成果也将倾向于没有兵器!这种状况下,咱们可以经过一些办法来处理数据的不平衡问题:


对丢失函数运用类别权重。简略地说,关于数据量小,代表性缺乏的类别,在丢失函数中运用较高的权重值,这样的话对该类的任何过错都将导致十分大的丢失值,以此来赏罚过错分类。

过度抽样:关于数据量小,代表性缺乏的练习样本,重复地进行采样,这有助于平衡数据类别的散布。关于一些很小的数据集来说,这是处理数据不均衡问题的最好办法。

欠采样:关于数据量大的类别,在模型练习进程汇总可以简略地越过而不去挑选这些数据,这也能必定程度上缓解数据的不平衡现象,特别关于大数据集而言。

数据增强(对少样本的类别):可以对数据量缺乏的类别做数据增强操作,生成更多的练习样本!例如,在上面检测丧命兵器的比如中,你可以改动那些带丧命兵器视频的色彩和光照条件,来生成更多的视频数据。


▌4、搬迁学习


正如上面所说的,深度学习模型一般需求很多的数据,数据量越多,模型的功能也将越好。可是,关于一些运用程序来说,大数据的获取可能很困难,符号数据的本钱花费也很高。假如咱们期望模型的功能到达最佳的话,那么可能至少需求数十万级的数据来练习深度模型。不仅如此,关于不带标签的数据,咱们还需求手动地符号数据,这是项十分耗费本钱的作业。


面临这种状况,搬迁学习将展示其强壮的一面。运用搬迁学习战略,在不需求太多的练习数据的状况下就可以让咱们的模型到达最优的功能!举个比如,例如在百万级ImageNet数据库上预练习ResNet模型。然后冻住模型的前几层权重参数,用咱们的数据重练习模型的终究几层并微调ResNet模型。


如此,经过重练习ResNet模型的部分层,咱们就可以微调模型学到的图画特征信息,以便将其搬迁运用于不同的使命。这是彻底有可能完成的,由于图画的低层特征一般都是十分类似的,而高层次的特征则会跟着运用的不同而改动。


搬迁学习的根本流程


▌5、数据增强:快速而简略地进步模型功能


咱们重复地说到:更多的数据 = 更好的模型体现。除了搬迁学习之外,进步模型功能的另一种快速而简略的办法是数据增强。数据增强操作是在确保数据原始类别标签的一起,对一些原始图画进行非线性的图画改换,来生成/组成新的练习样本。 常见的图画数据增强办法包含:


水平或笔直旋转/翻转图画

随机改动图画的亮度和色彩

随机含糊图画

随机裁剪图画


根本上,你可以对图画进行任何操作,改动图画的外观,但不能改动全体的内容。即关于一张狗的相片,你可以改动它的巨细、视点、色彩、清晰度等,但你要确保它仍然是一张狗的相片。



丰厚的数据增强样本


▌6、集成你的模型!


在机器学习中,一起练习多个模型,然后将它们组合在一起可以取得更高的全体功能。详细地说,对弈一个特定的使命,在相同的数据集上一起练习多个深度网络模型。然后,组合模型并经过投票的办法为每个模型分配不同的权重值。终究依据模型的全体功能决议最优的组合计划。


为了确保每个练习模型都有必定的差异性,咱们可以对权重进行随机初始化来处理练习模型,还可以经过随机地数据增强来丰厚咱们的练习数据。一般说来,经过组合多个模型得到的集成模型一般会比单个模型的功能更好,因而这也更靠近实践运用的需求。特别地,在一些竞赛中,取胜方一般都是选用集成模型寻求更佳的全体功能,来处理实践问题。



集成模型


▌7、剪枝——为你的练习提速


跟着模型深度的添加,模型功能也将更好,但模型的练习速度又怎么呢?层数越深意味着参数量更多,而更多的参数意味着更多的核算和更多的内存耗费,练习速度也将变慢。抱负状况下,咱们期望在进步练习速度的一起坚持模型的高功能。这可以经过剪枝来完成。


剪枝的中心思维是,深度网络中存在许多冗余参数,这些参数对模型的输出没有太大奉献。咱们可以按网络的输出奉献来摆放网络中的神经元,将排名低的那些神经元移除咱们的模型,这样就可以得到一个更小、更快的网络。此外,还可以依据神经元权重的L1/L2均值来均匀激活每个神经元,再经过核算神经元在验证集上不为零的次数或许其他创造性办法来对神经元进行排序。一个更快/更小的模型,关于深度学习模型在移动设备上布置是至关重要的。


最近的一些研讨标明,只是丢掉一些卷积滤波器,就可以在不损耗模型精度的一起加快模型的练习,得到一个快而小的深度模型。在这项研讨中,神经元的排名办法也是适当简略:在每个修剪迭代中,运用每个滤波器权重的L1范数对一切的过滤器进行排序,然后在悉数层中修剪掉m个排名最低的过滤器,再不断重复以上的操作直到取得咱们想要的模型。这是个十分成功的剪枝事例。



深度神经网络修剪的过程


此外,在最近的另一篇剖析ResNet模型结构的文章中,作者提出了一种修剪过滤器的观念。研讨发现,在移除网络层的时分,带剩余衔接的网络(如ResNets)与那些没有运用方便衔接的网络(如VGG或AlexNet)比较,残差网络的功能愈加稳健,在剪枝的一起也不会过多地影响模型的功能。这项发现具有重要的实践意义,这就意味着咱们在布置一个修剪网络时,网络规划最好要选用残差网络结构(如ResNets),让咱们的模型鲁棒性更好。