浅析梯度下降法

  上段时间学习caffe,caffe的solver优化方法中涉及到梯度下降法。当时对梯度下降法的概念和原理都很模糊,就专门去学习了下,现在把自己的理解记录下来,一方面加深印象,一方面也方便随时查阅。如果有理解错误的地方,希望看到的予以指正,谢谢。

  一、什么是梯度?梯度和方向导数的关系是什么?(简述,需要详细了解的可以自行搜索)  

  方向导数:对于一个函数f,在其定义域内存在一点k,我们把函数f在点k上任一方向的导数,叫做方向导数。

  梯度:经过数学推理可以证明,函数fk点的梯度方向,等于函数f在k点方向导数取最大值的方向,梯度的模为方向导数最大值。这里我们可以理解为:方向导数代表着函数在k点的变换率,当变换率最大时,梯度最长,此时函数在该点的梯度方向是向上的。

  二、损失函数--loss function

  损失函数描述的是预测函数“不好”的程度。    

  假设对于一组数据集(x1,y1),(x2,y2),...,(xn,yn),假设其预测函数为hΘ(x),Θ为参数权重,是一个向量,x为参数,其loss函数可以定义为:

其中hΘ(xi)对应xi的预测值,而yi为其对应的真实值。

  我们的目的:寻找到一个,使得损失函数最小。

  三、如何使得损失函数最小--梯度下降法

  1、梯度下降法的流程

   (1) 首先对随机赋值;

   (2) 对进行求导,并且使得按照梯度下降的方向进行减少。

   (3) 当梯度下降到预设值时,停止下降。此时认为损失函数处收敛,变化率最小。

  2、梯度下降法公式:

含义:对于每一个,函数都沿着其下降最多的方向进行变化,直到达到一个极小值。

理解:因为梯度的方向是方向导数取最大值时的方向,此时函数在点的变化率最大且为正值,即当前梯度的方向为上升最多的方向。如果想要获得向下下降最多的方向,即取当前梯度方向的反方向即可。

  3、举例说明(注:本例子图片来自http://blog.csdn.net/zengdong_1991/article/details/45563107)

  看下图:

分析:

Ps:个人理解--因为梯度的方向是方向导数取最大值的方向,方向导数取最大值,一定大于0,所以此时梯度的方向就是函数变化率最大的方向且方向向上。而梯度下降发用负号使得变化的方向变为梯度下降最多的方向。

  四、梯度下降与梯度上升

  1、梯度上升公式:

  

  2、梯度下降与梯度上升区别与联系

  其实梯度下降与梯度上升,描述的是在迭代过程中参数值更新的方向。梯度下降即参数值更新的方向与梯度本身的方向相反,即向下的方向更新;而梯度上升即参数值更新的方向与梯度的方向相同,即向上的方向更新。但是注意:无论梯度的方向是向上还是向下,在迭代过程中,梯度的模是一直下降的,因为随着梯度方向的改变,函数的变化率都是逐渐降低的,变化率降低,方向导数的最大值下降,即梯度的模值降低。

  搞不清楚的,可以参考上图理解。

PS:写完发现自己其实理解的还是很浅显,在博文中很多表达其实都不够准确,先写成这样,等以后理解加深了,再进行修正。刚开始写博文,搞的很丑,还需改进。

参考博文:

1.http://blog.csdn.net/wolenski/article/details/8030654

2.http://blog.csdn.net/zengdong_1991/article/details/45563107

3.http://blog.csdn.net/xiazdong/article/details/7950084

4.http://www.cnblogs.com/hitwhhw09/p/4715030.html

  

  

时间: 2024-11-03 20:48:36

浅析梯度下降法的相关文章

梯度下降法

梯度下降法在凸优化中应用很广泛.经常使用于求凸函数极值. 梯度是个向量.其形式为 一般是表示函数上升最快的方向.因此.我们仅仅须要每一步往梯度方向走一小步.终于就能够到达极值点,其表现形式为: 初始点为x0. 然后往梯度的反方向移动一小步r到x1. 再次往梯度反方向移动r到x2,... ....终于会越来越接近极值点min的. 迭代时的公式为X(n+1) = X(n) - r * grad(f) 以下举样例说明梯度下降法求极值点的有效性: #!/usr/bin/python # -*- codi

【统计学习】随机梯度下降法求解感知机模型

1. 感知机学习模型 感知机是一个二分类的线性分类问题,求解是使误分类点到超平面距离总和的损失函数最小化问题.采用的是随机梯度下降法,首先任意选取一个超平面w0和b0,然后用梯度下降法不断地极小化目标损失函数,极小化过程中不是一次使所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降.假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度: 随机选取一个误分类点,对w和b进行更新: 其中n是步长,又称为学习率(learning rate),这样通过迭代可以使损失函数L(w,b)不

转:梯度下降法(上升法)的几何解释

梯度下降法是机器学习和神经网络学科中我们最早接触的算法之一.但是对于初学者,我们对于这个算法是如何迭代运行的从而达到目的有些迷惑.在这里给出我对这个算法的几何理解,有不对的地方请批评指正! 梯度下降法定义 (维基百科)梯度下降法,基于这样的观察:如果实值函数  在点  处可微且有定义,那么函数 在  点沿着梯度相反的方向  下降最快. 因而,如果                         对于  为一个够小数值时成立,那么 . 考虑到这一点,我们可以从函数  的局部极小值的初始估计  出发

2.9 logistic回归中的梯度下降法(非常重要,一定要重点理解)

怎么样计算偏导数来实现logistic回归的梯度下降法 它的核心关键点是其中的几个重要公式用来实现logistic回归的梯度下降法 接下来开始学习logistic回归的梯度下降法 logistic回归的公式 现在只考虑单个样本的情况,关于该样本的损失函数定义如上面第三个公式,其中a是logistic回归的输出,y是样本的基本真值标签值, 下面写出该样本的偏导数流程图 假设样本只有两个特征x1和x2 为了计算Z,我们需要输入参数w1和w2和b 因此在logistic回归中,我们要做的就是变换参数w

梯度下降法解神经网络

本文是Andrew Ng在Coursera的机器学习课程的笔记. 整体步骤 确定网络模型 初始化权重参数 对于每个样例,执行以下步骤直到收敛 计算模型输出:forward propagation 计算代价函数:比较模型输出与真实输出的差距 更新权重参数:back propagation 确定网络模型 神经网络模型由输入层(layer 1).中间层(layer 2,..,L-1).输出层(layer L)三部分组成.输入层每个单元代表一个特征,输出层的每个单元代表一个类别. 如果我们的目标如果是识

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成本下,如何使利润最大化"等.最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称.随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优

批量梯度下降法(Batch Gradient Descent)

批量梯度下降:在梯度下降的每一步中都用到了所有的训练样本. 思想:找能使代价函数减小最大的下降方向(梯度方向). ΔΘ = - α▽J      α:学习速率 梯度下降的线性回归 线性模型的代价函数: 对于更新项,为什么是 - α▽J : Θ如果在极值点右边,偏导大于0,则Θ要减去偏导的值(Θ偏大,减去一个正值) Θ如果在极值点左边,偏导小于0,则Θ要减去偏导的值(Θ偏小,减去一个负值) 实现方法:同步更新每个Θ 特点:梯度下降法即使α取很大也可以收敛到局部最小值. 随着算法的进行,越接近最小值

[机器学习入门篇]-梯度下降法

梯度下降法的作用是求到一种方案,使得拟合过程中的损失函数最小(结果可能只为局部最优值),除此之外还有最小二乘法等方法. 关于此方法详细的阐述参见:这里 梯度下降法初始点的选取分为随机选取初值和自动求取初值两种方法. 梯度下降法有两种具体的实现方法: 1.批量梯度下降法:每次向梯度的反方向移动(梯度为函数增长最快的方向,减少最快的方向为其反方向). 2.随机梯度下降法:轮流对分量求偏导,除求偏导的分量外其他分量设为0,向"偏导方向"的反方向移动. 关于这两种方法具体的阐述见:这里

求解方法之梯度下降法

梯度下降法(最速下降法): 求解无约束最优化问题的一种最常用的方法,当目标函数是凸函数时,梯度下降法的解是全局最优解.一般情况下,其解不保证是全局最优解.梯度下降法的收敛速度也未必是很快的. ###############################Matlab############################### %% 最速下降法图示 % 设置步长为0.1,f_change为改变前后的y值变化,仅设置了一个退出条件. %syms x;%求f=x^2最小值 f=x^2; step=0