网站大量收购闲置独家精品文档,联系QQ:2885784924

深度学习性能提升的诀窍_vip.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深度学习性能提升的诀窍 Pedro Ribeiro Simoes拍摄 原文: How To Improve Deep Learning Performance 作者: Jason Brownlee 标题: 深度学习 数据扩展方法 你是如何提升深度学习模型的效果? 这是我经常被问到的一个问题。有时候也会换一种问法:我该如何提高模型的准确率呢? ……或者反过来问:如果我的网络模型效果不好,我该怎么办?通常我的回答是“具体原因我不清楚,但我有一些想法可以试试”。然后我会列举一些我认为能够提升性能的方法。为了避免重复罗列这些内容,我打算在本文中把它们都写出来。 这些想法不仅可以用于深度学习,事实上可以用在任何机器学习的算法上。那么如何提升深度学习的性能? 提升算法性能的想法 这个列表并不完整,却是很好的出发点。我的目的是给大家抛出一些想法供大家尝试,或许有那么一两个有效的方法。往往只需要尝试一个想法就能得到提升。我把这个列表划分为四块: · 从数据上提升性能 · 从算法上提升性能 · 从算法调优上提升性能 · 从模型融合上提升性能 性能提升的力度按上表的顺序从上到下依次递减。举个例子,新的建模方法或者更多的数据带来的效果提升往往好于调出最优的参数。但这并不是绝对的,只是大多数情况下如此。我在文章中添加了不少博客教程和相关的经典神经网络问题。 其中有一些想法只是针对人工神经网络,但大多数想法都是通用性的。你可以将它们与其它技术结合起来使用。我们开始吧。 1.从数据上提升性能 调整训练数据或是问题的抽象定义方法可能会带来巨大的效果改善。甚至是最显著的改善。 下面是概览: 1. 收集更多的数据 2. 产生更多的数据 3. 对数据做缩放 4. 对数据做变换 5. 特征选择 6. 重新定义问题 1)收集更多的数据 你还能收集到更多的训练数据吗?你的模型的质量往往取决于你的训练数据的质量。你需要确保使用的数据是针对问题最有效的数据。你还希望数据尽可能多。深度学习和其它现代的非线性机器学习模型在大数据集上的效果更好,尤其是深度学习。这也是深度学习方法令人兴奋的主要原因之一。请看下面的图片: 幻灯片来自Andrew Ng 什么是深度学习? 不总是数据阅读效果越好,多数情况下如此。如果让我选择,我会选择要更多的数据。 相关阅读: 数据集压倒算法 2)产生更多的数据 深度学习算法往往在数据量大的时候效果好。我们在上一节已经提到过这一点。如果由于某些原因你得不到更多的数据,也可以制造一些数据。 · 如果你的数据是数值型的向量,那么随机生成已有向量的变形向量。 · 如果你的数据是图像,用已有的图像随机生成相似图像。 · 如果你的数据是文本,做法你懂得…… 这类做法通常被称为数据扩展或是数据生成。你可以使用生成模型,也可以用一些简单的小技巧。举个例子,若是用图像数据,简单地随机选择和平移已有的图像就能取得很大的提升。它能提升模型的泛化能力,如果新的数据中包含这类变换就能得到很好的处理。有时候是往数据中增加噪声,这相当于是一种规则方法,避免过拟合训练数据。 相关阅读:1) 深度学习中的图像数据扩充 ? 2) 训练含有噪声的数据 3)对数据做缩放 此方法简单有效。使用神经网络模型的一条经验法宝就是:将数据缩放到激活函数的阈值范围。 如果你使用sigmoid激活函数,将数据缩放到0~1之间。如果选用tanh激活函数,将值域控制在-1~1之间。输入、输出数据都经过同样的变换。比如,如果在输出层有一个sigmoid函数将输出值转换为二值数据,则将输出的y归一化为二进制。如果选用的是softmax函数,对y进行归一化还是有效的。我还建议你将训练数据扩展生成多个不同的版本: · 归一化到0 ~ 1 · 归一化到-1 ~ 1 · 标准化 然后在每个数据集上测试模型的性能,选用最好的一组生成数据。如果更换了激活函数,最好重复做一次这个小实验。 在模型中不适合计算大的数值。此外,还有许多其它方法来压缩模型中的数据,比如对权重和激活值做归一化,我会在后面介绍这些技巧。 相关阅读:1) 我需要对输入数据(列向量)做标准化吗? ? 2) 如何用Scikit-Learn准备机器学习的输入数据 4) 对数据做变换 与上一节的方法相关,但是需要更多的工作量。你必须真正了解所用到的数据。数据可视化,然后挑出异常值。先猜测每一列数据的分布 · 这一列数据是不是倾斜的高斯分布,若是如此,尝试用Box-Cox方法纠正倾斜 · 这一列数据是不是指数分布,若是如此,则进行对数变换 · 这一列数据是不是存在某些特性,但是难以直观地发现,尝试一下对数据平方或者开方 · 是否可以将特征离散化,以便更好地强调一些特征 凭你的直觉,尝试几种方法 · 是否可以用投影的方法对数据预处理,比如PCA? ·

文档评论(0)

我思故我在 + 关注
实名认证
文档贡献者

部分用户下载打不开,可能是因为word版本过低,用wps打开,然后另存为一个新的,就可以用word打开了

1亿VIP精品文档

相关文档