梯度下降以及牛顿法

回顾一些参数估计的方法,包括梯度下降算法和牛顿法及其扩展

梯度下降算法(Gradient Descent, GD)

目的是优化参数,使得估计值与真实值的误差最小。试用于优化目标形式为:

其中表示特征权重,表示样本的以维特征描述,为样本。

1, 批梯度下降算法(batch gradient decent, BGD)

样本集合损失函数为

其中为样本个数,为正确输出。分别对每维的参数求导得

因此每次按照负梯度的方向更新参数

2, 随机梯度下降算法(stochastic gradient descent, SGD)

唯一不同于BGD,SGD每次迭代随机选取一个样本,更新参数。

对于单个样本j的损失函数为

由此可以看出,BGD中样本集合的损失函数为单个样本损失函数的和

SGD中,针对单个样本损失函数,对每维的参数求导得

更新参数为

每轮迭代的过程中,SGD比BGD计算量至少缩减了倍,SGD的前提是保证了样本的随机性,同一个样本可能被选取多次。

L-BFGS 算法

1,牛顿法

首先将目标函数用Taylor公式在某点展开。Taylor展开式所表示的意义为:

已知函数某点的各个阶导数,可以拟合出函数在这个点周围的值,因此如果某点为极小值附近的点,则可以估算出函数的极小值。

用Taylor公式将函数在某点展开,将此Taylor展开式求导估计可能的极小值

一维:

多维:

对于凸函数一定收敛;而对于非凸函数,是否收敛取决于初始选取的点是否为极小值周围的点。如果远离极小值点则不收敛。因此提出阻尼牛顿法,确定某点的搜索方向做一维搜索,找到当前极小值,然后再重新找搜索方向。

2,阻尼牛顿法

即在更新时先确定搜索方向

然后在此方向上找到可更新的极小值

牛顿法使用的限制条件为二阶导矩阵(Hesse)正定,因此复杂的目标函数很难保证Hesse矩阵可逆,因此导致牛顿法失效,因此提出拟牛顿法

3,拟牛顿法 (BFGS)

用方法近似计算Hesse矩阵,用表示近似构造的Hesse矩阵。为单位矩阵,然后同过DFP公式或者BFGS公式计算之后的Hesse矩阵

首先规定

不加证明地给出DFP公式

BFGS公式为其DFP的对偶公式

在BFGS迭代过程中需要设置中断条件,因此具体算法过程为

a) 初始化 ,k=0,收敛依据e

b) 令为单位矩阵

c) 计算一阶导数矩阵(梯度),确定优化方向

d) 使用一维搜索极小值

e) 判断是否收敛,否则继续6

f) 利用BFGS公式计算,
  k=k+1继续c

由于BFGS每次迭代过程都需要记录H(N*N)维矩阵,存储空间至少为N(N+1)/2。优化计算存储空间,则提出L-BFGS

4,限域拟牛顿法(Limited Storege BFGS,L-BFGS)

根据BFGS重写H矩阵的修正公式

其中,则

BFGS中H的修正过程为

L-BFGS中H 的修正过程为(只记录最近的m次)

用于限制存储空间,用于BFGS每次迭代过程都需要记录H(N*N)维矩阵,存储空间至少为N(N+1)/2,用于H是由单位矩阵(存储空间为N)一步步修正得来一次,只需记录修正的过程。假设L-BFGS只记录修正前m步修正,则只需记录2m+1个N维向量。

时间: 2024-10-25 16:58:13

梯度下降以及牛顿法的相关文章

机器学习中梯度下降法和牛顿法的比较

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似,我特地拿来简单地对比一下.下面的内容需要读者之前熟悉两种算法. 梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通

梯度下降法和牛顿法

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似,我特地拿来简单地对比一下.下面的内容需要读者之前熟悉两种算法. 梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通

对数几率回归法(梯度下降法,随机梯度下降与牛顿法)与线性判别法(LDA)

本文主要使用了对数几率回归法与线性判别法(LDA)对数据集(西瓜3.0)进行分类.其中在对数几率回归法中,求解最优权重W时,分别使用梯度下降法,随机梯度下降与牛顿法. 代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-05-09 15:03:50 4 # @Author : whb ([email protected]) 5 # @Link : ${link} 6 # @Version : $Id$

梯度下降法和牛顿法的总结与比较

1.牛顿法:是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数. 收敛速度很快. 海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果. 缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法. 2.梯度下降法:是通过梯度方向和步长,直接求解目标函数的最小值时的参数. 越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡. 原文地址:https://www.cnblogs.com/Ph-one/p/12685457.html

逻辑回归模型梯度下降法跟牛顿法比较

1.综述 机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值.在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法. 2 梯度下降法 2.1算法描述 1.确定误差范围和下降的步长,确定函数的导函数 2.while(|新值 -旧值| >误差) 3.       旧值=新值 4.       新值=初始值-步长*导函数

梯度下降、牛顿法和拉格朗日对偶性

这篇文章主要介绍梯度下降.牛顿法和拉格朗日对偶性的过程和一些原理的证明. 梯度下降: 假设$f(x),x\in R^{n}$,有一阶的连续偏导数,要求解的无约束最优化问题是: $\min \limits_{x\in R^{n}}f(x)$ $x^*$表示目标函数$f(x)$的极小点. 首先解释一下为什么梯度下降可行:对于一个有一阶连续偏导数的凸函数,若存在函数的极小值点,让x不断地往函数值减少的方向移动,最终会到达一个不动点,而这个不动点,就是函数f(x)的极小值点.选择负梯度方向,可以让x更快

【ML-3】梯度下降(Gradient Descent)小结

目录 简述 梯度下降与梯度上升 梯度下降法算法详解 梯度下降法大家族(BGD,SGD,MBGD) 梯度下降法和其他无约束优化算法的比较 总结 ? ? 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法(在[2]中已经讲解了).这里就对梯度下降法做一个完整的总结. 一.简述 在微积分里面,对多元函数的参数求?偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度. 比如函数f(x,y), 分别对x,

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

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

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

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