这7 个深度学习实用技巧,你掌握了吗?

发布者:Lianai最新更新时间: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电子工程将给大家提供更全、更详细、更新的资讯信息。

关键字:深度学习 引用地址:这7 个深度学习实用技巧,你掌握了吗?

上一篇:5大迹象显示内存芯片「超级循环」将结束
下一篇:中国抢下人工智能先手棋:位列全球第一梯队 或迎洗牌

推荐阅读最新更新时间:2024-05-07 17:53

英特尔科大讯飞强强联手 推出深度学习在线高性能计算平台
2016年4月13日,中国领先的语音技术和人工智能公司科大讯飞与英特尔在英特尔信息技术峰会(Intel Developer Forum,IDF16)上联合展示了在基于英特尔 至强 处理器以及Altera的FPGA(现场可编程逻辑阵列)的高性能计算(HPC)平台上开发和优化的深度学习在线解决方案,并披露了双方在该领域的合作发展计划,旨在整合双方资源优势,共同推进语音及人工智能技术在英特尔架构的高性能计算平台上的全面应用和规模落地,开创我国深度学习领域的全新局面。 此次在IDF16展区上展出的 讯飞听见智能会议系统 ,正是依托科大讯飞深耕多年的自然语言处理、声纹识别、语音识别等核心语音技术,基于英特尔 至强 处理器以及FPGA的高性
[嵌入式]
深度学习和低功耗视觉处理是自动驾驶的关键
    由于我们在下一个十年将要进入完全自动驾驶时代,因此许多一线汽车厂商和原始设备制造商 (OEM) 都在努力解决许多前所未有的挑战。所面临的挑战从政府政策支持到公众接受度再到帮助驾驶员实现完全自动驾驶的关键技术挑战。最近,一群行业领袖相聚在德国科隆举行的 IS-Auto 大会上,讨论这些挑战并共商解决之道。   在这些行业领袖中,就有 CEVA 的汽车团队,团队在大会上分享了我们在计算机视觉和深度学习方面的专业知识,说明了这些技术对于完全自动驾驶有多么重要。我们演示了CEVA-XM4 视觉平台以及 CDNN(CEVA 深度神经网络)软件框架,并演示了如何利用它们来实现低成本、低功耗且非常灵活的嵌入式系统,从而满足大量视觉应用
[手机便携]
“刷脸”窥见遗传病 深度学习算法有助疾病诊断
    去年8月的一天,美国特拉华州威尔明顿市内穆尔/阿尔法雷德爱杜邦儿童医院医学遗传学家Karen Gripp接待了一位年仅4岁的患者。   这个小女孩虽比同龄孩子稍矮,且已经失去了大部分乳牙和几颗已经长出来的成年牙齿,但并没有其他明显的罕见病指征。   Gripp曾阅读过描述Wiedemann-Steiner综合征患儿牙齿过早生长的病例报告。该疾病是由KMT2A基因突变引起的一种极为罕见的疾病。但Gripp并不确定。   于是,Gripp将这个女孩的照片上传到一个智能手机应用中,Wiedemann-Steiner综合征出现在该软件的提示中。   Gripp后来通过有针对性的DNA测试确定了女孩的病情。Gripp表示,人工智
[医疗电子]
“刷脸”窥见遗传病 <font color='red'>深度学习</font>算法有助疾病诊断
深度学习对机器学习有什么样的影响?AI大佬给你答案
深度学习 对机器学习有什么样的影响 PartyLikeLizLemon:   现在机器学习有很多研究看起来似乎转向了深度学习。请问您认为这现象会对机器学习研究的多样性有什么负面影响吗?是否应该彻底放弃其他范式的研究,如概率图模型、支持向量机等来支持深度学习研究呢?要知道这些模型在当下的表现可能不是很好,但也不排除在未来会出现突破,就像深度学习在上世纪90年代的那样。   Yann LeCun:   当AI技术继续发展时,我感觉,深度学习只是其中的一部分。你可以在复杂的(可能是动态的)图中集成参数化模块,并根据数据进行优化参数,这种想法并没有过时。从这个意义上,只要我们还没有找到不需使用梯度优化参数的高效方法,深度学习就不会过时。也
[嵌入式]
基于DNN模型的ADS深度学习算法选型探讨
对于自动驾驶ADS行业而言,其核心演进趋势可以定义为群体智能的社会计算,简单表述为,用NPU大算力和去中心化计算来虚拟化驾驶环境,通过数字化智能体即自动驾驶车辆AV的多模感知交互决策,以及车车协同,车路协同,车云协同,通过跨模数据融合、高清地图重建、云端远程智驾等可信计算来构建元宇宙中ADS的社会计算能力。 ADS算法的典型系统分层架构一般包括传感层,感知层,定位层,决策层(预测+规划)和控制层。每个层面会采用传统算法模型或者是与深度学习DNN模型相结合,从而在ADS全程驾驶中提供人类可以认可的高可靠和高安全性,以及在这个基础上提供最佳能耗比、最佳用车体验、和用户社交娱乐等基本功能。 01基于DNN模型的感知算法 ADS部署的
[嵌入式]
基于DNN模型的ADS<font color='red'>深度学习</font>算法选型探讨
英特尔在微软加速深度学习平台中提供人工智能技术
人工智能(Artificial Intelligence)和深度学习(Deep Learning)有望转变人类与世界互动以及企业运作的方式,从而使人们做出更明智的决策,而英特尔®技术正在实现这场变革。今天,英特尔将着重介绍全球最大的云服务提供商之一是如何利用英特尔人工智能技术来运行复杂的深度学习模型,这些模型实现了各种应用,从智能手机上的人脸识别和语音识别再到自动驾驶等等。 微软选择了英特尔®Stratix®10 FPGA作为其新的深度学习加速平台(代号为Project Brainwave)的关键硬件加速器。这种基于FPGA的深度学习加速平台可以提供“实时人工智能”技术,使云基础设施能够以超低延迟来尽可能快速地处理和传输数据。在云
[嵌入式]
英特尔在微软加速<font color='red'>深度学习</font>平台中提供人工智能技术
为什么深度学习仍未取代传统的计算机视觉技术?
深度学习 只是一种 计算机视觉 工具,而不是包治百病的良药,不要因为流行就一味地使用它。传统的计算机视觉技术仍然可以大显身手,了解它们可以为你省去很多的时间和烦恼;并且掌握传统计算机视觉确实可以让你在深度学习方面做得更好。这是因为你可以更好地理解深度学习的内部状况,并可执行预处理步骤改善深度学习结果。   本文的灵感同样来自论坛中的一个常见问题:   深度学习已经取代了传统的计算机视觉吗?   或是换种说法:   既然深度学习看起来如此有效,是否还有必要学习传统的计算机视觉技术?   这个问题很好。深度学习确实给计算机视觉和人工智能领域带来了革命性的突破。许多曾经看似困难的问题,现在机器可以比解决的比人类还好。图像分类就是最好的印
[嵌入式]
Google针对深度学习打造的定制化处理器
Google针对深度学习打造的客制化处理器,暂时不会让Intel、NVIDIA感到威胁 去年在Google I/O 2016揭晓旗下首款针对机器学习打造的TPU客制化处理器,Google稍早进一步揭晓此款对应TensorFlow学习框架的客制化处理器具体效能表现。 相比传统处理器或GPU组件设计,Google所提出的TPU客制化处理器除针对TensorFlow学习框架量身打造,更去除非必要的运算架构、保留对应特定算法运作设计,藉此让TPU可在深度学习等应用发挥高于处理器、GPU演算效能功耗,甚至比起两者搭配形成的平行运算架构有更低功耗表现,却能发挥更大演算效能。 根据Google公布数据,TPU约可发挥处理器、GPU约30倍或1
[半导体设计/制造]
小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved