热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

听六小桨讲AI|第3期:优化器及其三种形式BGD、SGD以及MBGD

点击左上方蓝字关注我们本栏目由百度飞桨工程师联手精心打造,对深度学习的知识点进行由浅入深的剖析和讲解。大家可视它为深度学习百科(面试秘籍也是可以哒&#x

点击左上方蓝字关注我们

本栏目由百度飞桨工程师联手精心打造,对深度学习的知识点进行由浅入深的剖析和讲解。大家可视它为深度学习百科(面试秘籍也是可以哒),当然也可收藏为深度学习查询手册~

大家好,我是助教唐僧。在上期中,主桨人见见为大家讲解了卷积的批量计算以及应用案例,后续还有详解卷积变体的课程,见见老师还在努力开发中,希望大家期待一下。

本期由主桨人步步高为大家带来内容:优化器及其三种形式BGD、SGD以及MBGD

1.什么是优化器?

假如我们定义了一个机器学习模型,就希望这个模型能够尽可能拟合所有训练数据。如何评价模型对数据的拟合程度呢?使用的评估指标称为损失函数(Loss Function),当损失函数值下降,我们就认为模型在拟合的路上又前进了一步。模型对指定训练集拟合的最好的情况就是在损失函数的平均值最小的时候。为了让损失函数的数值下降,需要使用优化算法进行优化,称为梯度下降法。

优化器(例如梯度下降法)就是在深度学习反向传播过程中,指引损失函数的各个参数往正确的方向更新合适的值,使得更新后的各个参数让损失函数的值不断逼近全局最小。

2.优化器的原理

优化器的原理其实很简单,给大家讲一个故事。周末我去爬山,下山时,我想找一条相对容易的路。因此,我首先环顾四周,找到下山最快的方向走一步,然后再次环顾四周,找到最快的方向又走了一步,循环往复,直到我走到山脚。听起来是不是很简单,这就是优化器——标准的梯度下降法。其中,我们下山时每一步走出的方向,在优化器中反映为梯度或者动量,而我们下山迈多大的步伐在优化器中则反映为学习率。所有优化器都在关注这两个方面,但同时也有一些其他问题,比如应该在哪个位置出发、路线错误如何处理……这是一些最新的优化器关注的方向。

3.梯度下降法的作用

梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用:

(1)梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以),其他的问题,只要损失函数可导也可以使用梯度下降,比如交叉熵损失等等。

(2)在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法,牛顿法等。

(3)在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。

(4)如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换。

4.梯度下降的三种形式

常用的梯度下降法有三种不同的形式,即批量梯度下降BGD,随机梯度下降SGD,Mini-batch梯度下降MBGD。

4.1批量梯度下降BGD

批量梯度下降(BGD)是梯度下降法最原始的形式,其原理是更新每一个参数时都使用所有的样本来进行更新,即在整个训练集上计算损失函数关于参数θ的梯度。其思想可以理解为在下山之前掌握了附近的地势情况,选择总体平均梯度最小的方向下山。

其中θ是模型的参数,η是学习率,为损失函数对参数θ的导数。

4.1.1 BGD有哪些优点?

BGD迭代次数相对较少,在凸函数上能保证收敛到全局最优点。

4.1.2 BGD面临的问题

由于为了一次参数更新,需要在整个训练集上计算梯度,导致计算量大,迭代速度慢,而且在训练集太大不能全部载入内存的时候会很棘手。

4.2随机梯度下降SGD

随机梯度下降(SGD)则是每次使用一个训练样本和标签进行一次参数更新。基本策略可以理解为一个盲人下山,虽然过程显得扭扭曲曲,但是他总能下到山底。

其中θ是模型的参数,η是学习率,为损失函数对参数θ的导数。

4.2.1 SGD有哪些优点?

BGD 对于大数据集来说执行了很多冗余的计算,而SGD 每次只使用一个训练样本进行参数更新,从而解决了这种冗余,因此通常 SGD 的速度会非常快。

4.2.2 SGD面临的问题

SGD以高方差的特点进行连续参数更新,其损失函数严重震荡,如图1所示。

图1 SGD损失函数

此外,SGD的另一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

4.3Mini-batch梯度下降MBGD

Mini-batch 梯度下降(MBGD)是对上述两种策略进行折中,每次从训练集中取出batch size个样本作为一个mini-batch,以此来进行一次参数更新。

其中θ是模型的参数,η是学习率,为损失函数对参数θ的导数,n为Mini-batch的大小(batch size)。

注:batch size越大,批次越少,训练时间会更快一点,但可能造成数据浪费;而batch size越小,对数据的利用越充分,浪费的数据量越少,但批次会很大,训练会更耗时。

4.3.1 MBGD有哪些优点?

样本数目较大时,考虑到电脑内存设置和使用的方式,如果mini-batch大小是2的n次方,代码会运行地快一些。例如64就是2的6次方,以此类推,128是2的7次方,256是2的8次方,512是2的9次方。我们通常把mini-batch大小设成2的次方,大小为64到512 。

4.3.2 MBGD面临的问题学习率设置

学习率设置

选择一个好的学习率非常困难。太小的学习率导致收敛非常ii缓慢,而太大的学习率则会阻碍收敛,导致损失函数在最优点附近震荡甚至发散。

当数据比较稀疏,特征频率不同时,此时我们并不想要以相同的学习率更新所有的参数。此时我们可以选择这样的方案,即在学习期间提前定义好一个规则自动调节学习率,或者两次迭代之间,损失函数的改变低于一个阈值时自动调节学习率。然而这些规则和阈值也是需要在训练前定义好的,所以也不能做到自适应数据的特点。

图2 学习率过大示意图

如图2所示,学习率设置过大,导致损失函数值沿着 “山谷” 周围大幅震荡,可能永远都到达不了最小值。

鞍点的出现

如图3,鞍点得名于它的形状类似于马鞍,鞍点通常被一个具有相同误差的平面所包围。对于神经网络来说,另一个关键挑战是避免陷入鞍点,即损失函数在该点的一个维度上是上坡,而在另一个维度上是下坡。尽管它在 x 方向上是一个最小值点,但是它在另一个方向上是局部最大值点,这使得对于 SGD 来说非常难于逃脱,因为在各个维度上梯度都趋近于 0。如果它沿着 x 方向变得更平坦的话,梯度下降会在 x 轴振荡并且不能继续根据 y 轴下降,这就会给我们一种已经收敛到最小值点的错觉。

图3 鞍点示意图

5.三种梯度下降法对比

表1不同梯度下降法比较

本节课详细讲解了优化器的定义及原理,然后详细介绍了梯度下降法的三种形式以及对应的优缺点。下节课将继续由步步高老师为大家带来优化器不同种类的介绍以及实践过程中如何选择合适的优化器,满满的实践干货,记得点赞收藏~

回顾往期:

听六小桨讲AI | 第1期:卷积概念及计算

听六小桨讲AI | 第2期:卷积的批量计算及应用案例

如在使用过程中有问题,可加入官方QQ群进行交流:778260830。

如果您想详细了解更多飞桨的相关内容,请参阅以下文档。

·飞桨官网地址·

https://www.paddlepaddle.org.cn/

·飞桨开源框架项目地址·

GitHub: https://github.com/PaddlePaddle/Paddle 

Gitee: https://gitee.com/paddlepaddle/Paddle

????长按上方二维码立即star!????

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

END


推荐阅读
  • PaddleWeekly | 最受欢迎的开发者开源项目Top5盘点
    点击左上方蓝字关注我们开源发展至今,越来越多的开发者使用开源代码的同时,也开始将自己的项目和代码大方骄傲地分享出来,在开源当中找到了成就和 ... [详细]
  • 开发工具_百度首发量子机器学习开发工具“量桨”
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了百度首发量子机器学习开发工具“量桨”相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 早晨七点半。北京初秋的凉风叫醒了住在望京西的你,睁开眼睛,一想到又要为人类的信息化事业贡献满满的正能量,你不禁哼唱起那句“早晨起来 ... [详细]
  • 华为200万年薪招聘AI应届生——有多少本事,给多少钱
    据新浪科技报道,阿里AIlabs年薪百万美元引进两位科学家。除AI顶尖科学家外,华为也是为多位AI应届博士开出了200万的高价年薪。19年9月,各大互联招聘企业陆续发布2019年人 ... [详细]
  • 以赛促学,飞桨助力大学生智能车竞赛升级!
    点击左上方蓝字关注我们第十六届智能汽车竞赛-百度人工智能创意赛道已经开启!比赛虽好,但同学们苦核心开发硬件久矣!百度飞桨作为大赛的赞助商之 ... [详细]
  • 学习提醒 | 如何训练RNN?解决梯度消失与梯度爆炸问题!
    点击左上方蓝字关注我们今天就要进入RNN的终章,每日一问:它们如何运行?应用在哪里?你学完了吗?????顾名思 ... [详细]
  • 本周AI热点回顾:和欧阳娜娜一起搞研发?强大的神经网络新算子involution,超越卷积、自注意力机制!...
    ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍点击左上方蓝字关注我们01我和欧阳娜娜一起搞研发AI新闻播报,开车明星导航,现如今根据文本生成语音的AI技术 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • SLAM优秀开源工程最全汇总
    https:zhuanlan.zhihu.comp145750808 1、CartographerCartographer是一个系统,可跨多个平台和传感器配置以2D和3D形式提供实 ... [详细]
  • 百度AI的2020
    百度AI的2020-世界的2020,是充满不确定性的变局之年;中国的2020,是团结一心、共克时艰、于变局中开新局的希望之年;百度AI的2020,是坚定信念,拥抱变化,践行“科技为 ... [详细]
  • 产业智能化升级的浪潮并没有因为疫情等原因停滞不前,作为带来人工智能应用井喷式发展的深度学习技术在近几年也可谓是“时代宠儿”,想要尝试应用深度学习技术解决 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • mapreduce数据去重的实现方法
    本文介绍了利用mapreduce实现数据去重的方法,同时还介绍了人工智能AI领域中常用的框架和工具,包括Keras、PyTorch、MXNet、TensorFlow和PaddlePaddle,并提供了深度学习实战的代码下载链接。 ... [详细]
author-avatar
憐海周_472_151
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有