前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最优化和深度学习的区别

最优化和深度学习的区别

作者头像
McGL
发布2020-11-11 10:21:20
8270
发布2020-11-11 10:21:20
举报
文章被收录于专栏:PyVisionPyVisionPyVision

「导语:有人说深度学习实质上是最优化,但它们具体又有什么不同呢?」

作者:Frank Odom 编译:McGL

如今训练神经网络最常见的方法是使用梯度下降或 Adam 等变种。梯度下降是寻找函数极小值的迭代优化算法。简单的说,在最优化问题中,我们对某个度量 P 感兴趣,想找到一个在某些数据(或分布)D上最大化(或最小化)该度量的函数(或函数的参数)。这听起来就像是机器学习或深度学习。我们有一些指标,例如准确率,甚至更好的精度/召回率或F1值;有一个带有可学习参数的模型(我们的网络);还有数据(训练和测试集)。使用梯度下降,我们将“搜索”或“优化”模型的参数,从而最终使训练和测试集上的数据指标(准确率)最大化。

来自论文《The general inefficiency of batch training for gradient descent learning》

最优化与深度学习之间至少存在两个主要差异,这些差异对于在深度学习中获得更好的结果很重要。

第一个区别是度量/损失函数。在最优化中,我们有一个单一的明确定义的度量,希望将其最小化(或最大化)。不幸的是,在深度学习中,我们经常使用无法或很难优化的度量。例如,在分类问题中,我们可能对模型的“准确率”或“F1值”感兴趣。准确率和F1值的问题是这些都不是可微函数,我们无法计算梯度,所以不能使用梯度下降。因此,我们使用诸如negative log-likelihood(或cross-entropy)之类的代理度量/损失,希望最小化代理函数将最大化我们的原始度量。这些代理度量不一定不行,甚至可能有一些优势,但是我们需要记住我们真正关心的东西,而不是代理度量。

确保我们关心原始度量的一种方法是使用Early Stopping。每个epoch,我们都会在某些验证集上用原始度量(准确率或F1值)评估模型,并在开始过拟合时停止训练。最好在每个epoch打印出准确率(或其它任意度量),方便更好的了解模型的性能。

第二个重要区别是数据。在最优化中,我们只关心现有数据。我们知道找到最大值是解决我们问题的最佳解决方案。在深度学习中,我们主要关心泛化,即我们没有的数据。这意味着,即使我们找到了已有的数据(训练集)的最大值(或最小值),我们仍然可能在还没有的数据上得到较差的结果。将我们的数据分为不同的部分并将测试集视为“我们没有的数据”非常重要。我们不能基于测试集做出任何决定。为了做出有关超参数,模型结构或 early stopping 标准的决策,我们可以使用验证集,而不能使用测试集。

还没完呢。我们通过梯度下降将参数推向“正确的”方向来训练模型。但是什么是“正确的”?对所有数据还是仅对我们的训练集正确呢?例如,当我们选择batch size时,这是相关的。有人可能会说,通过使用整个训练数据(称为“批梯度下降”),我们获得了“真实”梯度。但这仅适用于我们拥有的数据。为了将模型推向“正确”方向,我们需要近似我们没有的数据的梯度。这可以通过更小的 batch size 来实现(所谓的迷你批处理(Mini-batch)或随机(Stochastic)梯度下降)。论文《The general inefficiency of batch training for gradient descent learning》显示,仅使用batch size 为1(也叫 On-line Training)即可达到最佳结果。通过应用较小的batch size,将噪声引入梯度,可以提高泛化能力减少过拟合。下表展示了在20多个数据集上进行“batch”与“on-line”训练的性能。可以看出“on-line” 方式平均更好。

来自论文《The general inefficiency of batch training for gradient descent learning》

尽管机器学习问题有时被称为最优化问题。了解差异并加以解决很重要。

「来源:」https://towardsdatascience.com/what-is-the-difference-between-optimization-and-deep-learning-and-why-should-you-care-e4dc7c2494fe

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PyVision 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档