优化算法1-梯度下降

1.1     梯度下降

梯度下降,全称Grandient Descent,简称GD。

梯度下降是一种非常通用的优化算法,能够为大范围的问题找到最优解。梯度下降的中心思想就是迭代地调整参数,从而使成本函数最小化。

首先,初始化一个随机的θ值(可设θ=0),然后逐步改进,每次踏出一步,就尝试降低一点成本函数,直到算法收敛出一个最小值,见下图所示。

梯度下降中一个重要的参数是每一步的步长,取决于超参数学习率。如果学习率太低,算法需要经过大量迭代才能收敛,这将消耗很长时间;如果学习率太高,可能会直接跳过最小值,会导致算法发散,值越来越大,达不到实际的优化效果。

梯度下降会有陷阱。如下图所示,左边训练集上特征θ1和特征θ2具有相同的数值规模,收敛的就比较快;右边训练集上特征θ1的值就比特征θ2要小得多,先是沿着全局最小值方向近乎垂直方向前进,接下来一段是平坦的长长的山谷,会抵达最小值,但需要花费很长时间。

应用梯度下降或梯度上升时,需要保证所有特征值的大小比例都差不多(比如使用scikit-learn中的StandardScaler类),量纲不同时需要标准化处理,否则收敛的时间会非常久。

梯度下降步长

:步长,求最小值

:学习率

:成本函数的偏导数

1.1.1  批量梯度下降

批量梯度下降,全称Batch Grandient Descent,简称BGD。

批量梯度下降每一步都使用整批训练集数据,面对非常庞大的训练集时,算法会变得极慢。

要找合适的学习率,可以使用网格搜索,但是需要限制迭代次数。如果设置太低,算法可能在离最优解还很远时就停了;如果设置得太高,模型达到最优解后,继续迭代参数不再变化,又会浪费时间。一个简单的办法是,在开始时设置一个非常大的迭代次数,但是当梯度向量的值变得很微小时中断算法-也就是它的范数变得低于ε(称为容差)时,这时梯度下降几乎达到了最小值。

1.1.2  随机梯度下降

随机梯度下降,全称Stochastic Grandient Descent,简称SGD。

随机梯度下降在每一步训练集中随机选择一个实例,基于单个实例来计算梯度。这种算法的速度会快很多,但最终结果不一定是最小值。它可以逃出局部最优,但缺点是定位不出最小值。要解决这个困境,有一个办法是逐步降低学习率。开始的步长比较大(有助于快速进展和逃离局部最小值),然后越来越小,让算法尽量靠近全局最小值。这个过程叫做模拟退火。

1.1.3  小批量梯度下降

小批量梯度下降,全称Mini-Batch Grandient Descent,简称MBGD。

小批量梯度下降是基于一小部分的随机实例集来计算梯度。

1.1.4  算法比较


算法


数据集m很大


是否支持核外


特征数量n很大


超参数


是否需要缩放


scikit-learn


标准方程





0



LinearRegression


BGD





2



n/a


SGD





>=2



SGDRegressor


MBGD





>=2



n/a

原文地址:https://www.cnblogs.com/cymx66688/p/11405491.html

时间: 2024-10-10 13:38:24

优化算法1-梯度下降的相关文章

深度解读最流行的优化算法:梯度下降

深度解读最流行的优化算法:梯度下降 By 机器之心2016年11月21日 15:08 梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法.本文旨在让你对不同的优化梯度下降法的算法有一个直观认识,以帮助你使用这些算法.我们首先会考察梯度下降法的各种变体,然后会简要地总结在训练(神经网络或是机器学习算法)的过程中可能遇到的挑战.(本文的中文版 PDF 下载地址) 目录: 梯度下降的各种变体 批量梯度下降(Batch gradient descent)

深度解读最流行的优化算法:梯度下降(精简版)

前言 本文仅对一些常见的优化方法进行直观介绍和简单的比较,各种优化方法的详细内容及公式只好去认真啃论文了,在此不赘述. SGD 此处的SGD指mini-batch gradient descent,关于batch gradient descent, stochastic gradient descent, 以及 mini-batch gradient descent的具体区别就不细说了.现在的SGD一般都指mini-batch gradient descent. SGD就是每一次迭代计算mini

Adline网络的LMS算法与梯度下降

LMS算法,即为最小均方差,求的是误差的平方和最小. 利用梯度下降,所谓的梯度下降,本质上就是利用导数的性质来求极值点的位置,导数在这个的附近,一边是大于零,一边又是小于零的,如此而已... 而这个里,导数的正负性,是依靠误差的正负来决定的,懒得多说,大致如图:

『科学计算_理论』优化算法:梯度下降法&牛顿法

梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通常用一个三维图来展示,迭代过程就好像在不断地下坡,最终到达坡底.为了更形象地理解,也为了和牛顿法比较,这里我用一个二维图来表示: 懒得画图了直接用这个展示一下.在二维图中,梯度就相当于凸函数切线的斜率,横坐标就是每次迭代的参数,纵坐标是目标函数的取值.每次迭代的过程

【吴恩达机器学习】学习笔记——2.7第一个学习算法=线性回归+梯度下降

梯度下降算法: 线性回归模型: 线性假设: 平方差成本函数: 将各个公式代入,对θ0.θ1分别求偏导得: 再将偏导数代入梯度下降算法,就可以实现寻找局部最优解的过程了. 线性回归的成本函数总是一个凸函数,故梯度下降算法执行后只有一个最小值. "批"梯度下降:每一个步骤都使用所有的训练样本 原文地址:https://www.cnblogs.com/JJJanepp/p/8454834.html

优化算法比较的实验结果比较(BGD,SGD,MBGD,Momentum,Nesterov,Adagrad,RMSprop)

最近在学习神经网络的优化算法,发现网上有很多的算法介绍,但是却没有算法实现和实验对比,所以我就用python实现了BGD,SGD,MBGD,Momentum,Nesterov,Adagrad,RMSprop等算法,另外的Adam和NAdam算法是将Momentum,Nesterov,Adagrad几项合并起来的算法,属于工程方面的内容,所以我就没有实现了. 算法原理主要参考文献是: 整体算法参考:深度解读最流行的优化算法:梯度下降 整体算法参考:深度学习最全优化方法总结比较(SGD,Adagra

机器学习最常用优化之一——梯度下降优化算法综述

转自:http://www.dataguru.cn/article-10174-1.html 梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法.几乎当前每一个先进的(state-of-the-art)机器学习库或者深度学习库都会包括梯度下降算法的不同变种实现.但是,它们就像一个黑盒优化器,很难得到它们优缺点的实际解释.这篇文章旨在提供梯度下降算法中的不同变种的介绍,帮助使用者根据具体需要进行使用. 这篇文章首先介绍梯度下降算法的三种框架,然后介绍它们所存在的

深度学习之(十一)Deep learning中的优化方法:随机梯度下降、受限的BFGS、共轭梯度法

Deep learning中的优化方法 三种常见优化算法:SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法). 1.SGD(随机梯度下降) 随机梯度下降(Stochastic Gradient Descent, SGD)是随机和优化相结合的产物,是一种很神奇的优化方法,属于梯度下降的一种,适用于大规模问题. 要想扯清楚它,还得先谈谈梯度下降.众所周知,每个优化问题都会有一个目标函数F(w)F(w),梯度下降采用迭代的策略,从初始点w0w0开始,每次沿着目标函数在当前点的负梯

看代码理解批量梯度下降求解线下回归问题

layout: post title: 梯度下降算法 subtitle: 批量梯度下降求解线下回归问题 date: 2017-12-01 author: Felix catalog: true tags: - 机器学习 - 优化算法 --- //############################################################## //# //# 批量梯度下降算法实例:求解线性回归问题 //# //##############################