A-03 牛顿法和拟牛顿法
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/
牛顿法和拟牛顿法
牛顿法(Newton method)和拟牛顿法(quasi-Newton method)和梯度下降法一样也是求解最优化问题的常用方法,但是他们的收敛速度比梯度下降法快。牛顿法是迭代算法,每一步都需要求目标函数的海森矩阵的逆矩阵,计算复杂;拟牛顿法通过正定矩阵近似海森矩阵的逆矩阵,简化这个计算过程。
一、牛顿法详解
1.1 无约束最优化问题
对于一个约束问题
\[
\underbrace{min}_{x\in{R^n}}f(x)
\]
其中\(x^*\)为目标函数的极小点。
1.2 牛顿法迭代公式
假设\(f(x)\)具有二阶连续偏导数,如果第\(k\)次迭代值为\(x^{(k)}\),则可以把\(f(x)\)在\(x^{(k)}\)附近使用二阶泰勒展开
\[
f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)})
\]
其中\(g_k=g(x^{(k)})=\nabla{f(x^{(k)})}\)是\(f(x)\)的梯度向量在点\(x^{(k)}\)的值,\(H(x^{(k)})\)是\(f(x)\)的海森矩阵
\[
H(x)=[\frac{\partial^2f}{\partial{x_i}\partial{x_j}}]_{m*n}
\]
在点\(x^{(k)}\)的值。函数\(f(x)\)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0。特别是当\(H(x^{(k)})\)是正定矩阵的时候,函数\(f(x)\)的极值为极小值。
牛顿法利用极小点的必要条件
\[
\nabla{f(x)}=0
\]
每次迭代中从点\(x^{(k)}\)开始,求目标函数的极小点,作为第\(k+1\)次迭代值\(x^{(k+1)}\),即假设\(x^{(k+1)}\)满足
\[
\nabla{f(x^{(k+1)}}=0
\]
通过泰勒二阶展开式即可得
\[
\nabla{f(x)}=g_k+H_k(x-x^{(k)})
\]
其中\(H_k=H(x^{(k)})\),由此\(\nabla{f(x^{(k+1)}}=0\)变成
\[
g_k+H_k(x^{(k+1)}-x^{(k)}) = 0
\]
因此
\[
x^{(k+1)}=x^{(k)}-H_k^{-1}g_k
\]
或
\[
x^{(k+1)}=x^{(k)}+p_k
\]
其中
\[
\begin{align}
& x^{(k+1)}=x^{(k)}-H_k^{-1}g_k=x^{(k)}+p_k \\
& -H_k^{-1}g_k=p_k \\
& H_kp_k=-g_k
\end{align}
\]
使用\(x^{(k+1)}=x^{(k)}-H_k^{-1}g_k\)作为迭代公式的算法就是牛顿法。
1.3 牛顿法和梯度下降法
从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。
虽然牛顿法看起来比梯度下降法好很多,但是别忘记了牛顿法迭代过程中需要计算海森矩阵的逆矩阵,如果数据量较大的话,牛顿法的计算开销将远远大于梯度下降法。
二、牛顿法流程
2.1 输入
目标函数\(f(x)\),梯度\(g(x)=\nabla{f(x)}\),海森矩阵\(H(x)\),精度要求\(\epsilon\)
2.2 输出
\(f(x)\)的极小点\(x^*\)
2.3 流程
- 取初始点\(x^{(0)}\),并且让\(k=0\)
- 计算\(g_k=g(x^{(k)})\)
- 如果\(||g_k||\leq\epsilon\),停止计算,得到近似解\(x^*=x^{(k)}\)
- 计算\(H_k=H(x^{(k)})\),并求出\(p_k\)
\[
H_kp_k=-g_k
\] - 让\(x^{(k+1)}=x^{(k)}+p_k\)
- 让\(k=k+1\),转到第2步
在第4步求\(p_k\)的时候,\(p_k=-H_k^{-1}g_k\),要求求海森矩阵的逆矩阵\(H_k^{-1}\),计算会比较复杂。
三、拟牛顿法简介
在牛顿法的迭代中,需要计算海森矩阵的逆矩阵\(H^{-1}\),这个过程是比较复杂的,而拟牛顿法则使用了一个\(n\)阶矩阵\(G_k=G(x^{(k)})\)近似替代\(H_k^{-1}=H^{-1}(x^{(k)})\),此处不多赘述。
A-03 牛顿法和拟牛顿法的更多相关文章
- 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN
数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...
- Todd's Matlab讲义第3讲:牛顿法和for循环
方程数值求解 下面几讲,我们将聚集如下方程的解法: \begin{equation} f(x)=0 \tag{3.1}\label{3.1} \end{equation} 在微积分课程中,我们知道,许 ...
- 大叔学ML第一:梯度下降
目录 原理 实践一:求\(y = x^2 - 4x + 1\)的最小值 实践二:求\(z = x^2 + y^2 + 5\)的最小值 问答时间 原理 梯度下降是一个很常见的通过迭代求解函数极值的方法, ...
- 梯度下降(Gradient Descent)小结
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...
- [Math] 常见的几种最优化方法
我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等.最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素 ...
- (转) ICML2016 TUTORIAL参会分享
ICML2016 TUTORIAL参会分享 本文转自: https://mp.weixin.qq.com/s?__biz=MzI3MDE4NTk4MQ==&mid=2658399541& ...
- 机器学习入门-BP神经网络模型及梯度下降法-2017年9月5日14:58:16
BP(Back Propagation)网络是1985年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一. B ...
- 大叔学ML第五:逻辑回归
目录 基本形式 代价函数 用梯度下降法求\(\vec\theta\) 扩展 基本形式 逻辑回归是最常用的分类模型,在线性回归基础之上扩展而来,是一种广义线性回归.下面举例说明什么是逻辑回归:假设我们有 ...
- 梯度下降(Gradient Descent)
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法.这里就对梯度下降法做一个完整的总结. 1. 梯度 在微 ...
随机推荐
- EF Core 通过延迟加载获取导航属性数据
EF 6及以前的版本是默认支持延迟加载(Lazy Loading)的,早期的EF Core中并不支持,必须使用Include方法来支持导航属性的数据加载. 当然在EF Core 2.1及之后版本中已经 ...
- 小白专场-多项式乘法与加法运算-python语言实现
目录 题意理解 解题思路 多项式加法 多项式乘法 完整代码 题意理解 题目: 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一 ...
- Vue.js学习总结——1
1.什么是Vue.js 1.Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架 2.Vue.js 是前端的主流框架之一,和Angular.js.React.js 一起,并成为前端 ...
- 在asp.net core中使用托管服务实现后台任务
在业务场景中经常需要后台服务不停的或定时处理一些任务,这些任务是不需要及时响应请求的. 在 asp.net中会使用windows服务来处理. 在 asp.net core中,可以使用托管服务来实现,托 ...
- Dubbo Spring Cloud 之 HTTP 实战
上一篇文章<Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合>我们介绍了Dubbo Spring Cloud的基本使用,使用的服务中心为Sp ...
- IO流的工具类
1.需要先导入jar包: FilenameUtils import org.apache.commons.io.FilenameUtils; public class FilenameUtilesDe ...
- Linux 笔记 - 第二十章 配置 Nginx 反向代理和负载均衡
一.简介 由于 Nginx 的反向代理和负载均衡功能经常被提及,所以将这两个功能单独提出来进行讲解. Nginx 其实仅仅是作为 Nginx Proxy 反向代理使用的,因为这个反向代理功能表现的效果 ...
- charles 访问控制设置
本文参考:charles 访问控制设置 charles 访问控制设置 access control settings 访问账户设置: 这里可以配置连接到charles时的一些配置: 这个访问控制确定谁 ...
- docker harbor搭建笔记
介绍 Harbor是VMware公司开源的一个用于存储和分发Docker镜像的企业级Registry服务器,以Docker开源的Registry为基础,通过添加一些企业必需的功能特性,例如安全.标识和 ...
- select2的多选下拉框上传
1.加入multiple: true,属性实现多选下拉框样式 2.下拉框选择后的值是数组类型不要经过数据处理才能进行表单提交 提交的时候原下拉框所在的标签不提交,而是将多选后的值存入页面中的一个隐藏标 ...