Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >梯度下降

梯度下降

作者头像
Dean0731
发布于 2020-05-11 03:33:10
发布于 2020-05-11 03:33:10
7200
举报
文章被收录于专栏:blog-技术博客blog-技术博客

梯度下降算法

  1. 梯度
    1. 函数上某一点的梯度是 向量,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0)沿着梯度向量的方向 : (df/dx0,df/dy0)的转置. 可以最快速度到达最大值.
  2. 梯度下降算法
    1. 损失函数: J(w)
    2. w的梯度将是损失函数上升最快的方向,最小化loss ,反向即可 J(w_old) ---->J(w_old- k * ▽w_old的梯度)---->J(w_new)
    3. 方法 : 主要区别是每一次更新样本参数使用的样本个数是不同的
      1. 批量梯度下降
        • 使用全部数据进行参数更新
        • w = w-k * ▽J(w)
        • for i in range(nb_epochs): params_grad = evaluate_gradient(loss_function,data,params) params = params - learning_rate * pramas_grad
        • 每次更新梯度使用全部数据 ,最后梯度可为0
      2. 随机梯度下降
        • w = w - k * ▽ J(w;xi;yi)
        • 使用一个样本更新模型,速度快
        • for i in range(nb_epochs): np.random.shuffle(data) for example in data: params_grad = evalute_gradient(loss_function,example,params) params = params - leaning_rate * params_grad
        • 学习率需要逐渐减少,否则无法收敛
      3. 小批量梯度下降
        • w = w - k * ▽J(w;xi:i+m;yi:i+m) 每次更新从训练集选取m个样本学习 m小于总体个数
        • for i in range(pb_epochs): np.random.shuffle(data) for batch in get_batch(data,batch_size=50): params_grad = evalute_gradient(loss_function,batch,params) params = params - leaning_rate * params_grad
  3. 问题
    1. 合适的学习率很难找
    2. 跟新每次的学习率方式很难,需要设置阈值,跟新学习率,不能自适应数据集的特点
    3. 模型搜友的参数每次跟新都是使用相同的学习率, 对于稀疏数据等效果不好
    4. 对于非凸函数,容易陷入次忧的局部极值中
  4. 优化梯度下降
    1. SGD
    2. Momentum
      • 基于动量的算法
      • 前几次的梯度会参与到本次梯度的计算
        • 原来:w = w - learning_rate * dw
        • 现在: v = alpha * v - learning_rate *dw w = w+v
        • v 是初始速度,alpha是指数衰减系数,也叫作动量参数 常见设置为0.9
        • 理解为 上次梯度与这次相同,那么下次下降速度幅度会加大,从而加速收敛
    3. Nesterov Momentum
      • 先对参数进行估计,然后使用估计后的参数来计算误差
      • 学习率ε 初始参数 θ 初始速率v 栋梁衰减参数 α
      • 过程:
        • 从训练集中随机抽取m个样本,及他们的标签
        • 计算梯度和误差 ,跟新速度v和参数α
    4. AdaGrad
      • 自适应为各个参数分配不同的学习率
    • 需要全局学习率
    • Adadelta
    1. RMSProp
    2. Adam
  5. 学习率的设定

学习率的设定 global_step = tf.Variable(0,trainble=False) starter_learning = 0.1 # 初始学习率为0.1 # 每隔10000次学习率变为原来的0.96 learning_rate = tf.exponential_dacay(starter_learning_rate,\ global_setp,10000,0.96,staircase=True) optimizer = tf.GradientDescent(learning_rate) optimizer.minimize(...my_loss...,global_step=global_setp)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
各类的梯度优化
梯度下降是最流行的优化算法之一并且目前为止是优化神经网络最常见的算法。与此同时,每一个先进的深度学习库都包含各种算法实现的梯度下降(比如lasagne, caffe 和 keras的文档)。然而,这些算法经常作为黑盒优化程序使用,所以难以感受到各种算法的长处和不足。 本次分享旨在为您提供对不同梯度算法的直观感受,以期会帮助您更好地使用不同的梯度下降算法。首先,会罗列各种梯度下降算法的变种并简单地总结算法训练阶段的挑战。然后,会通过展示解决问题的动机和依据这些动机来推导更新法则,以介绍最常见的优化算法。本次也
计算机视觉研究院
2018/04/17
1.3K0
各类的梯度优化
深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
在机器学习、深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论文中给出了常用优化器的比较,今天来学习一下: https://arxiv.org/pdf/1609.04747.pdf 本文将梳理: 每个算法的梯度更新规则和缺点 为了应对这个不足而提出的下一个算法 超参数的一般设定值 几种算法的效果比较 选择哪种算法 ---- 0.梯度下降法深入理解 以下为个人总结,如有错误
10JQKA
2018/05/09
8.2K0
深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
【调参实战】那些优化方法的性能究竟如何,各自的参数应该如何选择?
(1) Linux系统,使用windows系统也可以完成,但是使用Linux效率更高。
用户1508658
2020/04/22
5120
【调参实战】那些优化方法的性能究竟如何,各自的参数应该如何选择?
【模型训练】SGD的那些变种,真的比SGD强吗
深度学习框架目前基本上都是使用梯度下降算法及其变种进行优化,通常意义上大家会认为原始的梯度下降算法是最弱的,但事实上并非如此。
用户1508658
2019/07/26
8820
【模型训练】SGD的那些变种,真的比SGD强吗
斯坦福CS231n - CNN for Visual Recognition(7)-lecture6梯度检查、参数更新
  梯度检查是非常重要的一个环节,就是将解析梯度和数值计算梯度进行比较。数值计算梯度时,使用中心化公式
李智
2018/08/03
7360
斯坦福CS231n - CNN for Visual Recognition(7)-lecture6梯度检查、参数更新
如何选择优化器 optimizer
在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器, https://www.tensorflow.org/api_guid
杨熹
2018/04/03
3.7K0
如何选择优化器 optimizer
理解梯度下降在机器学习模型优化中的应用
本文介绍了梯度下降算法的起源、批量梯度下降、随机梯度下降和小批量梯度下降,以及它们在机器学习中的重要性。通过这些算法,可以优化模型权系数,从而提高模型的性能。
chaibubble
2018/01/02
1.8K0
理解梯度下降在机器学习模型优化中的应用
梯度下降法及优化算法
1 梯度下降法(Gradient Descent)1.1 批量梯度下降法(Batch Gradient Descent)1.2 随机梯度下降法(Stochastic Gradient Descent)1.3 mini-batch 梯度下降法(Mini-Batch Gradient Descent)1.4 存在的问题2 梯度下降优化算法2.1 Momentun动量梯度下降法2.2 Nesterov accelerated gradient(NAG)2.3 自适应学习率算法(Adagrad)2.4 均方根传递算法(Root Mean Square prop,RMSprop)2.5 自适应增量算法(Adadelta)2.6 适应性矩估计算法(Adam)
Minerva
2020/05/24
1.4K0
深度|梯度下降优化算法综述
该文翻译自An overview of gradient descent optimization algorithms。 总所周知,梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现。但是,它们就像一个黑盒优化器,很难得到它们优缺点的实际解释。 这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用。 这篇文章首先介绍梯度下降算法的
智能算法
2018/04/02
7030
深度|梯度下降优化算法综述
【AI初识境】为了围剿SGD大家这些年想过的那十几招
对于凸优化来说,任何局部最优解即为全局最优解。用贪婪算法或梯度下降法都能收敛到全局最优解,损失曲面如下。
用户1508658
2019/07/26
6200
【AI初识境】为了围剿SGD大家这些年想过的那十几招
关于梯度下降优化算法的概述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
chaibubble
2019/10/22
7350
关于梯度下降优化算法的概述
梯度下降优化算法概述
本文介绍了自适应学习率算法的发展历程、常用算法、以及若干优化策略。通过实际案例分析了自适应学习率算法在深度学习中的重要性,并探讨了未来研究方向。
Alan Lee
2018/01/03
2.8K0
梯度下降优化算法概述
深度学习三十问!一位算法工程师经历30+场CV面试后总结的常见问题合集(含答案)
作者灯会为21届中部985研究生,凭借自己整理的面经,去年在腾讯优图暑期实习,七月份将入职百度cv算法工程师。在去年灰飞烟灭的算法求职季中,经过30+场不同公司以及不同部门的面试中积累出了CV总复习系列,此为深度学习上篇。
昱良
2021/07/01
8970
深度学习三十问!一位算法工程师经历30+场CV面试后总结的常见问题合集(含答案)
随机梯度下降之——SGD自适应学习率
http://ruder.io/optimizing-gradient-descent/index.html#gradientdescentvariants
种花家的奋斗兔
2020/11/13
9650
随机梯度下降之——SGD自适应学习率
Quickprop介绍:一个加速梯度下降的学习方法
由于80年代/ 90年代的普通反向传播算法收敛缓慢,Scott Fahlman发明了一种名为Quickprop[1]的学习算法,它大致基于牛顿法。他的简单想法在诸如“N-M-N编码器”任务这样的问题域中优于反向传播(有各种调整),即训练一个具有N个输入、M个隐藏单位和N个输出的de-/ Encoder网络。Quickprop的方法之一是寻找特定领域的最佳学习率,或者更确切地说:适当地动态调整学习率的算法。
deephub
2020/09/04
3920
Quickprop介绍:一个加速梯度下降的学习方法
【干货】机器学习最常用优化之一——梯度下降优化算法综述
【新智元导读】梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现。但是,它们就像一个黑盒优化器,很难得到它们优缺点的实际解释。这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用。 这篇文章首先介绍梯度下降算法的三种框架,然后介绍它们所存在的问题与挑战,接着介绍一些如何进行改进来解决这些问题,随后,介绍如何在并行环境中或者分布式环境
新智元
2018/03/26
1.9K0
【干货】机器学习最常用优化之一——梯度下降优化算法综述
一文看懂常用的梯度下降算法
作者:叶 虎 编辑:祝鑫泉 一 概述 梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,基本都是采用梯度下降算法来进
机器学习算法工程师
2018/03/06
2.1K0
一文看懂常用的梯度下降算法
【深度学习实验】线性模型(二):使用NumPy实现线性模型:梯度下降法
本实验中,gradient_descent函数实现了梯度下降法的具体过程。它通过调用initialize_parameters函数初始化模型参数,然后在每次迭代中计算模型预测值、梯度以及更新参数值。
Qomolangma
2024/07/29
1590
【深度学习实验】线性模型(二):使用NumPy实现线性模型:梯度下降法
梯度下降、过拟合和归一化
好的课程应该分享给更多人:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载地址,包括视频+代码+资料,免费的优质资源。当然,现在共享非常多,各种mooc、博客、论坛等,很容易就可以找到各种各样的知识,能走到哪一步,都在我们自己。希望我能够一直坚持下去,加油!
py3study
2020/01/19
6550
明月机器学习系列(五):从零动手实现梯度下降
我们从简单的线性模型入手,讲解了梯度下降是如何学习其中的参数的。而本篇主要是讲怎么从零开始,使用Python实现梯度下降算法。
明月AI
2021/10/28
5330
明月机器学习系列(五):从零动手实现梯度下降
推荐阅读
相关推荐
各类的梯度优化
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档