漫步最优化三十三——牛顿法
自从有了你,\textbf{自从有了你,}
绝望与无奈远走高飞。\textbf{绝望与无奈远走高飞。}
自从有了你,\textbf{自从有了你,}
我的世界不再天灰灰。\textbf{我的世界不再天灰灰。}
自从有了你,\textbf{自从有了你,}
时间变得越来越值得回味。\textbf{时间变得越来越值得回味。}
自从有了你,\textbf{自从有了你,}
我不再形单影只无人依偎。\textbf{我不再形单影只无人依偎。}
因为你的出现,\textbf{因为你的出现,}
我的世界多了一个词汇:美。\textbf{我的世界多了一个词汇:美。}
——畅宝宝的傻逼哥哥\qquad\qquad\textbf{——畅宝宝的傻逼哥哥}
最速下降法是一阶法,这是因为它基于泰勒级数的线性近似。而众所周知的牛顿法则是利用了泰勒级数的二阶近似,如果 x\mathbf{x}的变化量是 δ{\delta}, f(x+δ)f(\mathbf{x}+{\delta})为
f(\mathbf{x}+{\delta})\approx f(\mathbf{x})+\sum_{i=1}^n\frac{\partial f}{\partial x_i}\delta_i+\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\frac{\partial^2f}{\partial x_i\partial x_j}\delta_i\delta_j
假设这是函数在点x+δ\mathbf{x}+{\delta}处的精确表示,那么函数f(x+δ)f(\mathbf{x}+{\delta})对δk{\delta}_k(k=1,2,…,nk=1,2,\ldots,n)求导并令其等于零可以得出最小化f(x+δ)f(\mathbf{x}+{\delta})的δk{\delta}_k值,由此可得
\frac{\partial f}{\partial x_k}+\sum_{i=1}^n\frac{\partial^2 f}{\partial x_i\partial x_k}\delta_i=0\quad\text{for}\ k=1,2,\ldots,n
或者用矩阵形式来表示为
\mathbf{g}=-\mathbf{H}{\delta}
因此x\mathbf{x}的最优变化量为
{\delta}=-\mathbf{H}^{-1}\mathbf{g}
这个解要想存在,当且仅当下面的两个条件成立:
- 海森矩阵是非奇异的
- 泰勒级数的近似是有效的
假设x∗\mathbf{x}^*处最小值的二阶条件成立,那么H\mathbf{H}在点x∗\mathbf{x}^*处以及邻域内(∥x−x∗∥<ε\lVert\mathbf{x}-\mathbf{x}^*\rVert)都是正定的,这就意味着对于∥x−x∗∥<ε,H\lVert\mathbf{x}-\mathbf{x}^*\rVert是非奇异的并存在逆。因为任何函数f(x)∈C2f(x)\in C^2都可以用泰勒级数的二次近似来表示x∗\mathbf{x}^*的邻域,所以上面的解释存在的,更进一步,对满足∥x−x∗∥<ε\lVert\mathbf{x}-\mathbf{x}^*\rVert的任意点x\mathbf{x},一次迭代就能得到x≈x∗\mathbf{x}\approx\mathbf{x}^*。
任何二次函数都有海森矩阵,且对任意的x∈En\mathbf{x}\in E^n都为常数。如果函数有最小值,那么二阶条件满足,故对任意点x∈En,H\mathbf{x}\in E^n,\mathbf{H}是正定的,也是非奇异的。因为二次函数可以用泰勒级数的二次近似准确的表示,所以上面的解是存在的,更进一步,对于任意点x∈En\mathbf{x}\in E^n,一次迭代就能得到解。
如果我们要最小化一般的非二次函数,对于任意点x\mathbf{x},两个条件不一定都满足。如果第一个条件不满足,那么会有无数多个解或者没有解。另一方面,如果第二个条件不满足,那么一次迭代后δ{\delta}不一定能得到解,如果H\mathbf{H}不是正定的,甚至δ{\delta}不会令目标函数变小。
对于第一个问题,我们可以加入一些操作强行使H\mathbf{H}是正定的。而对于第二个问题,我们可以加入一个迭代过程解决。这个迭代过程抵消掉了一次迭代无法得到解的事实,并使用线搜索达到最大化减小f(x)f(\mathbf{x})。这个方法通过选择下一个迭代点xk+1\mathbf{x}_{k+1}为
\mathbf{x}_{k+1}=\mathbf{x}_k+{\delta}=\mathbf{x}_k+\alpha_k\mathbf{d}_k
就能实现,其中
\mathbf{d}_k=-\mathbf{H}_k^{-1}\mathbf{g}_k
且αk\alpha_k是最小化f(xk+αdk)f(\mathbf{x}_k+\alpha\mathbf{d}_k)的α\alpha,向量dk\mathbf{d}_k称为点xk\mathbf{x}_k处的牛顿方向。当两个条件都满足的情况下,第一次迭代我们令αk=1\alpha_k=1。
最小化开始的时候,对某些类型的函数该过程会很慢,但不管怎样,f(x)f(\mathbf{x})一直在减小,然而随着越来越靠近问题的解,两个条件都会满足,因此最终达到收敛,收敛的阶数是二。从效果上看,牛顿法的收敛属性与最速下降法形成互补的关系,即远离解的时候收敛慢,靠近解的时候收敛快。
修正海森矩阵
如果海森矩阵不是正定的,那么我们需要将其强行变成正定的,修正Hk\mathbf{H}_k的方法有许多,这里不再详细给出,如果需要可以私信或留言。
海森矩阵的计算量
牛顿法的缺点是需要知道函数的二阶导,也就是需要计算海森矩阵。如果无法获得准确的形式或者比较难算出来,那么我们可以用下面的数值公式进行计算:
\begin{align*} \frac{\partial f}{\partial x_1}=\lim_{\delta\to 0}\frac{f(\mathbf{x}+{\delta}_1)-f(\mathbf{x})}{\delta}=f^\prime(\mathbf{x})\quad\text{with}\ {\delta_1}=[\delta\ 0\ 0\ \cdots\ 0]^T\\ \frac{\partial^2f}{\partial x_1\partial x_2}=\lim_{\delta\to0}\frac{f^\prime(\mathbf{x}+{\delta}_2)-f^\prime(\mathbf{x})}{\delta}\quad\text{with}\ {\delta}_2=[0\ \delta\ 0\ \cdots\ 0]^T \end{align*}
漫步最优化三十三——牛顿法相关推荐
- 漫步最优化三十四——高斯-牛顿法
你的温柔像羽毛,\textbf{你的温柔像羽毛,} 秘密躺在我怀抱.\textbf{秘密躺在我怀抱.} 你的微笑像拥抱,\textbf{你的微笑像拥抱,} 只有我能看到.\textbf{只有我能看到. ...
- 漫步最优化四十三——拟牛顿法
从相距千里,\textbf{从相距千里,} 到心与心的碰撞,\textbf{到心与心的碰撞,} 情感是一种随机,\textbf{情感是一种随机,} 也是一种必然.\textbf{也是一种必然.} 从一 ...
- 漫步最优化三十九——Fletcher-Reeves法
你的目光像桥梁,\textbf{你的目光像桥梁,} 指引我通往你心路的捷径.\textbf{指引我通往你心路的捷径.} 你的魅力像磁铁,\textbf{你的魅力像磁铁,} 加快我靠向你身边的步伐.\t ...
- 漫步最优化三十八——非二次函数最小化
你独一无二的声音,\textbf{你独一无二的声音,} 穿越了繁杂喧嚣,\textbf{穿越了繁杂喧嚣,} 回荡在我的脑中.\textbf{回荡在我的脑中.} 你独一无二的声音,\textbf{你独一 ...
- 漫步最优化三十五——共轭
我对你的喜欢像玻璃,\textbf{我对你的喜欢像玻璃,} 透明的能被你看穿.\textbf{透明的能被你看穿.} 我对你的思念像影子,\textbf{我对你的思念像影子,} 傍晚时分就被拉长.\te ...
- 漫步最优化三十一——梯度法
我拿起笔芯,\textbf{我拿起笔芯,} 开始在心里慢慢书写回忆.\textbf{开始在心里慢慢书写回忆.} 记录第一次遇见的你,\textbf{记录第一次遇见的你,} 记录第一次牵手的你,\tex ...
- 漫步最优化二十三——一维优化
你的每一句话,回荡在耳边:\textbf{你的每一句话,回荡在耳边:} 你闪动的双眼,徘徊在脑海.\textbf{你闪动的双眼,徘徊在脑海.} 好像告诉你,\textbf{好像告诉你,} 天天在想你. ...
- 漫步最优化三——优化算法的一般结构
你的出现,让我的眼中,心中有了蔚蓝的天空:\textbf{你的出现,让我的眼中,心中有了蔚蓝的天空:} 你的出现,让梦的城堡,殿堂留住美好的时光.\textbf{你的出现,让梦的城堡,殿堂留住美好的时 ...
- 漫步最优化三十七——共轭梯度法
我卸不下对你的喜欢,\textbf{我卸不下对你的喜欢,} 因为爱会慢慢增加重量.\textbf{因为爱会慢慢增加重量.} 我醉心于你的发香,\textbf{我醉心于你的发香,} 因为它让回想有了画面 ...
最新文章
- 【最新刷榜】层次化视觉Transformer来啦!性能大幅优于DeiT、ViT和EfficientNet
- OpenCASCADE:扩展数据交换(XDE)的简介
- 转:MySQL史上最全性能优化方式
- WPF中通过AForge实现USB摄像头拍照
- 低脂肪肉能帮你减肥吗?
- php给一个参数布尔值,php – 布尔值和字符串条件
- [热议]Java是新的COBOL吗?
- Node.js:使用session存储用户信息
- C#之DotNetBar2使用方法 - itemPanel1
- 竹林七贤:没有信仰的人生有多可怕?
- 学神经网络需要什么基础,深度神经网络怎么用
- Android 最简单的自定义证件照Mask之一
- 互联网厂商抢着布局的“无币区块链”到底是什么?
- 2020年度广东学法普法平台开始了
- 逆向js实例---美拍
- 区块链市场——专为用户打造的一站式应用下载平台
- 安装实例中出现的ORA-27123和ORA-12532的错误
- 解决猫眼自定义字体的问题-获取影院实时电影拍片或实时票房等
- 001-SE-0011-网络编程
- SSH Secure Shell Client乱码问题
热门文章
- Centos7 安装Docker(v2021 version 20.10.5) 并通过docker-compose运行TiDB集群
- CentOS上快速安装Oracle服务器脚本
- 一机双平面、TCP半连接攻击——SYN攻击详解
- CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
- java 手写 jvm高性能缓存
- javascript Blob数据解析 HUOBI火币api数据解析
- 【JavaScript】提取字符串里的分数,及计算平均分并与平均分比较输出
- [ACTF2020 新生赛]Include
- TCP三次握手抓包观察实战篇
- 如何使用粒子氩气进行位置跟踪