历史上的今天
返回首页

历史上的今天

今天是:2025年02月23日(星期日)

正在发生

2018年02月23日 | 这7 个深度学习实用技巧,你掌握了吗?

2018-02-23 来源:电子产品世界

  前几天,深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析这些小技巧。在使用深度学习的时候,我们不能仅仅把它看成一个黑盒子,因为网络设计、训练过程、数据处理等很多步骤都需要精心的设计。作者分别介绍了7个非常实用小技巧:数据量、优化器选择、处理不平衡数据、迁移学习、数据增强、多个模型集成、加快剪枝。相信掌握了这7个技巧,能让你在实际工作中事半功倍!下面就随网络通信小编一起来了解一下相关内容吧。

 

7 Practical Deep Learni ng Tips

  7个实用的深度学习技巧

  深度学习已经成为解决许多具有挑战性问题的方法。 在目标检测,语音识别和语言翻译方面,深度学习是迄今为止表现最好的方法。 许多人将深度神经网络(DNNs)视为神奇的黑盒子,我们输入一些数据,出来的就是我们的解决方案! 事实上,事情要复杂得多。

  在设计和应用中,把DNN用到一个特定的问题上可能会遇到很多挑战。 为了达到实际应用所需的性能标准,数据处理、网络设计、训练和推断等各个阶段的正确设计和执行至关重要。 在这里,我将与大家分享7个实用技巧,让你的深度神经网络发挥最大作用。

   

 

  ▌ 1-数据,数据,数据

  这不是什么大秘密,深度学习机需要大量的“燃料”, 那“燃料”就是数据。拥有的标签数据越多,模型的表现就越好。 更多数据产生能更好性能的想法,已经由谷歌的大规模数据集(有3亿图像)证明!为了感受数据带给深度学习模型的性能提升,在部署Deep Learning模型时,你应该不断地为其提供更多的数据和微调以继续提高其性能。 Feed the beast:如果你想提高你的模型的性能,就要提供更多的数据!

   

 

图显示数据量的增加会得到更好的性能

  ▌ 2-你应该选择哪一个优化器

  多年来,已经开发了许多梯度下降优化算法,他们各有其优缺点。 一些最流行的方法如下:

  Stochastic Gradient Descent (SGD) with momentum

  Adam

  RMSprop

  Adadelta

  RMSprop,Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习率。 使用SGD时,您必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。

  在实践中,自适应优化器倾向于比SGD更快地收敛, 然而,他们的最终表现通常稍差。 SGD通常会达到更好的minimum,从而获得更好的最终准确性。但这可能需要比某些优化程序长得多的时间。 它的性能也更依赖于强大的初始化和学习率衰减时间表,这在实践中可能非常困难。

  因此,如果你需要一个优化器来快速得到结果,或者测试一个新的技术。 我发现Adam

  很实用,因为它对学习率并不是很敏感。 如果您想要获得绝对最佳的表现,请使用SGD + Momentum,并调整学习率,衰减和动量值来使性能最优化。

  ▌ 两全其美的办法

  最近已经证明,可以得到两全其美的结果:从 Adam 到SGD的高性能高速训练! 这个想法是,实际上由于在训练的早期阶段SGD对参数调整和初始化非常敏感。 因此,我们可以通过使用Adam来开始训练,这将节省相当长的时间,而不必担心初始化和参数调整。 那么,一旦Adam获得较好的参数,我们可以切换到SGD +动量优化,以达到最佳性能!

   

 

Adam vs SGD 性能

  ▌ 3-如何处理不平衡数据

  在很多情况下,都要处理不平衡的数据,特别是实际应用程序中。 一个简单而实际的例子如下:训练您的深度网络以预测视频流中是否有人持有致命武器。 但是在你的训练数据中,你只有50个拿着武器的人的视频和1000个没有武器的人的视频! 如果你只是用这些数据来训练你的网络,那么你的模型肯定会非常偏向于预测没有人有武器!

  你可以做用以下的方法来解决它:

  在损失函数中使用类权重。 本质上就是,让实例不足的类在损失函数中获得较高的权重,因此任何对该类的错分都将导致损失函数中非常高的错误。

  过度采样:重复一些实例较少的训练样例,有助于平衡分配。 如果可用的数据很小,这个方法最好。

  欠采样:一些类的训练实例过多,可以简单地跳过一些实例。 如果可用数据非常大,这个方法最好。

  为少数类增加数据。可以为少数类创建更多的训练实例! 例如,在前面检测致命武器的例子中,你可以改变属于具有致命武器的类别的视频的颜色和光照等。

  ▌ 4-迁移学习

  正如我们所看到的,深层网络需要大量的数据。遗憾的是,对于许多新的应用程序来说,这些数据可能很难得到并且开销很大。 如果我们希望模型表现良好,可能需要数万或数十万个新的训练样例来进行训练。 如果数据集不易获取,则必须全部手动收集并标记。

  这就是迁移学习的起点。 通过迁移学习,我们不需要太多的数据! 这个想法是从一个在数百万图像上训练过的网络开始的,比如在ImageNet上预训练的ResNet。 然后,我们将“重新调整ResNet模型,只重新训练最后几层。

  我们将ResNet从数百万图像中学到的信息(图像特征)进行微调,以便将其应用于不同的任务。 因为跨域的图像的特征信息经常是非常相似的所以这个方法是可行的,但是这些特征的分析根据应用而不同。

   

 

一个基本的迁移学习示例

  ▌ 5 – 用数据增强提高性能

  前面已经说过:更多的数据=更好的表现。 除了迁移学习之外,另一种快速而简单提高模型的性能的方法是数据增强。 数据增强是使用原始类别标签的同时,改变数据集的原始图像以合成一些新的训练示例。例如,用于图像数据增强的常见方式包括:

  水平和/或垂直旋转翻转图像

  改变图像的亮度和颜色

  随机模糊图像

  随机从图像裁剪块

  基本上,你可以进行任何改变,改变图像的外观但不改变整体内容,例如你可以使用蓝色狗的照片,但你仍然应该能够清楚地看到,这是一个狗的照片。

   

数据增强

  ▌ 6-通过集成提升模型!

  在机器学习中,集成训练多个模型,然后将它们组合在一起以获得更高的性能。 这个想法是在相同的数据集上对同一任务训练多个深度网络模型。 然后,模型的结果可以通过投票进行组合,即具有最高票数的类胜出。

  为了确保所有模型不同,可以使用随机权重初始化和随机数据增强。众所周知,由于使用了多个模型,因此集成通常比单个模型更精确,从而从不同角度完成任务。在实际应用中,尤其是竞赛中,几乎所有顶级模型都使用集合方式。

   

集成模型

  ▌ 7-加快剪枝

  我们知道模型精度随深度而增加,但速度又如何呢? 更多的层意味着更多的参数,更多的参数意味着更多的计算,更多的内存消耗和更慢的速度。理想情况下,我们希望在提高速度的同时保持高精度。我们可以通过剪枝来做到这一点。

   

深度神经网络剪枝策略

  这个想法是,网络中的许多参数是多余的,对输出没有太大贡献。 如果可以根据贡献值对网络中的神经元进行排名,那么就可以从网络中移除低排名的神经元,从而形成更小更快的网络。 可以根据神经元权重的L1 / L2均值(平均激活)、一些验证集上神经元不为零的次数以及其他方法来进行排序。 获得更快/更小的网络对于在移动设备上运行深度学习网络非常重要。

  修剪网络的最基本的方法是简单地放弃某些卷积滤波器。 最近文章表明,这样做是相当成功的。 这项工作中的神经元排名相当简单:每个滤波器的权重按照L1规范排名。 在每个修剪迭代中,对所有的过滤器进行排序,在所有层中修剪m个排名最低的过滤器,重新训练和重复!

  最近的另一篇分析残差网络结构的论文中提出了修剪“过滤器”的关键特点。 作者指出,在删除层的时候,具有残差快捷连接(例如ResNets)的网络比不使用任何快捷连接(例如VGG或AlexNet)的网络在保持良好的准确性方面更为稳健。这个有趣的发现具有重大的实际意义,因为它告诉我们,在修剪网络进行部署和应用时,网络设计至关重要(例如ResNets)。 所以使用最新最好的方法总是很好的!

    以上是关于网络通信中-这7 个深度学习实用技巧,你掌握了吗?的相关介绍,如果想要了解更多相关信息,请多多关注eeworld,eeworld电子工程将给大家提供更全、更详细、更新的资讯信息。

推荐阅读

史海拾趣

Dytran Instruments Inc公司的发展小趣事

随着技术的不断成熟和产品线的不断完善,Dytran开始积极拓展市场。公司不仅在美国本土取得了良好的销售业绩,还通过参加国际展览和建立海外办事处等方式,将产品推向全球。在这个过程中,Dytran的传感器产品得到了众多行业客户的认可,广泛应用于航空航天、工业和汽车行业的产品开发测试和嵌入式监控解决方案。

为了更好地服务全球客户,Dytran在成立两年后将其总部迁至美国加利福尼亚州的查茨沃思市。这里地理位置优越,交通便利,有利于公司进一步拓展北美市场。同时,公司还加强了与全球合作伙伴的合作,共同推动传感器技术的发展和应用。

CANDD公司的发展小趣事

随着全球环保意识的提高,CANDD公司积极响应号召,开始践行绿色环保理念。公司投入大量资金研发环保型电子产品,并采用了更加环保的生产工艺和材料。同时,公司还加强了废弃电子产品的回收和处理工作,努力减少对环境的污染。这些举措不仅提升了公司的社会形象,还为公司赢得了更多消费者的支持。

Broyce Control公司的发展小趣事

近年来,随着数字化技术的快速发展,Broyce Control也面临着新的挑战和机遇。为了适应市场的变化和客户的需求,公司开始进行数字化转型和升级。通过引入先进的生产管理系统和智能制造技术,Broyce Control提高了生产效率和产品质量。同时,公司还加强了与互联网和物联网技术的融合,推出了一系列智能化、网络化的新产品和服务。这些创新举措使得Broyce Control在数字化时代继续保持了强劲的发展势头。

这五个故事虽然基于虚构,但尽量遵循了Broyce Control公司发展的逻辑和可能趋势。它们展示了Broyce Control从创立初期到逐渐发展成为电子行业领导者的过程,以及公司在技术创新、市场扩张和行业影响力提升等方面所做的努力。这些故事旨在展现一个真实而鲜活的Broyce Control形象,同时也为读者提供了关于电子行业发展的有趣视角。

ARCOLECTRICSWITCHES公司的发展小趣事

随着电子行业的不断发展,ARCOLECTRIC SWITCHES公司意识到单打独斗已经无法满足市场需求。因此,公司积极寻求与上下游企业的合作,共同打造完善的产业链。通过与供应商建立长期稳定的合作关系,确保原材料的稳定供应;与下游企业开展深度合作,共同研发新产品、开拓新市场。这种合作共赢的模式使得ARCOLECTRIC SWITCHES公司在行业中更具竞争力。

巴丁微公司的发展小趣事

随着技术的不断进步和市场的不断变化,巴丁微始终保持着敏锐的市场洞察力。公司不断推出新产品,以满足不同领域的需求。其中,巴丁微的电机驱动控制、霍尔传感器等产品因其高性能、高品质而受到了广泛好评。

同时,巴丁微也积极拓展市场,与多家知名企业建立了合作关系。公司的产品不仅在国内市场占据了一席之地,还逐渐打开了国际市场的大门。通过不断的创新和市场拓展,巴丁微在电子行业的地位日益稳固。

Crowd_Supply__Inc.公司的发展小趣事

Crowd Supply Inc.深知社区是其发展的核心动力。因此,公司不仅在产品开发上积极吸纳社区意见,还在市场推广、技术支持等方面与社区紧密合作。通过举办线上线下的技术交流活动、设立社区奖励机制等方式,公司成功吸引并留住了一批忠实的社区成员。这些成员不仅为公司带来了稳定的用户基础,还通过口碑传播扩大了公司的品牌影响力。

问答坊 | AI 解惑

运算放大器的增益误差对DAC性能的影响

假设DAC使用了一个反相运算放大器,C1=C2,A(0)=1000,若VREF=1V,问DAC在最怀情况下的最大精度? 反相放大器的环路增益=0.5×1000=500,因此增益误差为1/501=0.002。增益误差应该小于±0.5LSB,表示为: 增益误差=0.002…

查看全部问答>

驳关于STC89的一些咵噪

网上对STC的评价并不是很好,于是斗胆尝试了一把,到现在还是没有发现什么问题 我用的是89C58…

查看全部问答>

PXA300(Monahans) 能否支持1024x768分辨率?

PXA300(Monahans) 能否支持1024x768分辨率?…

查看全部问答>

求问关于WINCE 键盘锁定和解锁的问题

wince提供解锁某个键的函数API么? 解锁方面的API有么? 谢谢…

查看全部问答>

帮忙出主意,我的前途该往哪里走

  大家好,迷茫了很久,还是看不到方向,请有智慧的您帮忙吧,诚心请教   我毕业直接来到深圳,工作两年,第一年几乎虚度了,第二年用三星八位单片机汇编语言做了点简单的事(按键,led,定时器,i/o口发音,固定显示的液晶之类,硬件电路也 ...…

查看全部问答>

在CE下怎么对光驱进行操作?

如题,我想用EVC编程对光驱在CE下进行操作。…

查看全部问答>

【讨论】关于FLASH的问题

我在做写入flash的时候写入的是113个字节的数据,A段的从1000开始写的!!! 我把要写入的数据建立在一个结构里了!!! 可是写完以后读的时候总是后写入的两个读出的是0;如果写入的少的话,比如我写50个字节那么 就有最后1个读出是0;我想问问 ...…

查看全部问答>

求助!!MPS430F149驱动电机时候总死机

用F149驱动继电器结合驱动380V三相电机 利用两极继电器 中间采用光耦驱动第一级继电器 第一级继电器再控制第二级380继电器 上高压电时继电器结合 电机转 然后单片机就死机 求助!!!…

查看全部问答>

看到一款平板电脑,用TI的OMP4430----居然只要¥1500元

下面是那个厂家的广告单........如果又要买平板的兄弟真的可以考虑   …

查看全部问答>

为什么我的开发板下载郭天祥的程序没用

这个开发板是去年在淘宝上买的,放那里一直没动,最近想学了,所以拿出来看看,在百度文库里有这个开发板的详细介绍,下面是地址http://wenku.baidu.com/view/0878e189680203d8ce2f249a.html单片机的型号是STC 90C516RD+郭天祥视频教程里面的程序下 ...…

查看全部问答>