多元函数极值、Hessian矩阵、正定矩阵
这篇笔记,来自我对支持向量机(SVM)算法原理的学习。支持向量机算法最终归结为二次规划问题,研究二次规划问题,必须先从一般的最优化问题开始分析。如无特别声明,本文最优化问题特指寻求目标函数最小值。
一元函数最优化问题,可以简单归结为极值点必须满足下面两个条件:
dfdx=0(1)\frac{df}{dx}=0\tag{1} dxdf=0(1)
d2fdx2>0(2)\frac{d^2f}{dx^2}>0 \tag{2} dx2d2f>0(2)
#条件推广:一阶导数为零
二元函数情形,很容易得到第一个条件(1)式的推广形式:
∂f∂x=0,∂f∂y=0(3)\frac{\partial f}{\partial x}=0, \frac{\partial f}{\partial y}=0\tag{3} ∂x∂f=0,∂y∂f=0(3)
#条件推广:二阶导数为正
我们可以认为,沿任意方向 (dx1,dx2)=(cosαdt,sinαdt)(dx_1, dx_2)=(\cos\alpha dt, \sin \alpha dt)(dx1,dx2)=(cosαdt,sinαdt),都有
d2fdt2>0(4)\frac{d^2 f}{d t^2} > 0\tag{4} dt2d2f>0(4)
下面我们推导一下,看看有什么结果,
dfdt=∂f∂x1dx1dt+∂f∂x2dx2dt=∂f∂x1cosα+∂f∂x2sinα(5)\frac{df}{dt}=\frac{\partial f}{\partial x_1}\frac{dx_1}{dt} + \frac{\partial f}{\partial x_2}\frac{dx_2}{dt}=\frac{\partial f}{\partial x_1}\cos \alpha + \frac{\partial f}{\partial x_2}\sin \alpha\tag{5} dtdf=∂x1∂fdtdx1+∂x2∂fdtdx2=∂x1∂fcosα+∂x2∂fsinα(5)
$$
\frac{d2f}{dt2}=…=\frac{\partial^2 f}{\partial x_12}\cos2 \alpha
- \frac{\partial^2 f}{\partial x_1 \partial x_2}\cos \alpha \sin \alpha
- \frac{\partial^2 f}{\partial x_2 \partial x_1}\cos \alpha \sin \alpha
- \frac{\partial^2 f}{\partial x_22}\sin2 \alpha \tag{6}
$$
对于所有的 α\alphaα ,要求上式恒大于零,那么函数的这四个二阶偏导应该满足什么条件呢?
#Hessian矩阵
令 d=(cosα,sinα)d=(\cos \alpha, \sin \alpha)d=(cosα,sinα),则有,
dT(∂2f∂x12∂2f∂x1∂x2∂2f∂x2∂x1∂2f∂x22)d>0(7)d^T \left( \begin{matrix} \frac{\partial^2f}{\partial x_1^2} & \frac{\partial^2f}{\partial x_1 \partial x_2} \\ \frac{\partial^2f}{\partial x_2 \partial x_1} & \frac{\partial^2f}{\partial x_2^2} \end{matrix} \right) d > 0\tag{7} dT(∂x12∂2f∂x2∂x1∂2f∂x1∂x2∂2f∂x22∂2f)d>0(7)
其中,矩阵
H(f)=(∂2f∂x12∂2f∂x1∂x2∂2f∂x2∂x1∂2f∂x22)(8)H(f)=\left( \begin{matrix} \frac{\partial^2f}{\partial x_1^2} & \frac{\partial^2f}{\partial x_1 \partial x_2} \\ \frac{\partial^2f}{\partial x_2 \partial x_1} & \frac{\partial^2f}{\partial x_2^2} \end{matrix} \right)\tag{8} H(f)=(∂x12∂2f∂x2∂x1∂2f∂x1∂x2∂2f∂x22∂2f)(8)
称为 Hessian 矩阵,如果函数f(x)f(x)f(x)二阶导数连续,则该矩阵实对称矩阵。我们看到,二元函数取得极小值的另一个条件的推广形式是,函数的 Hessian 矩阵是正定矩阵。其实,这个结论很容易推广到 nnn 原函数。
由前面讨论可知,(7)式表示函数在方向 ddd 的二阶导数,这算是 Hessian 矩阵的几何意义吧。
#多元函数极值的判定
如果实值多元函数 f(x)f(x)f(x) 二阶连续可导,并且在临界点 x‾\overline xx 处梯度(一阶导数)等于0,即 ∇f(x‾)=0\nabla f(\overline x)=0∇f(x)=0 , 为驻点。仅通过一阶导数无法判断在临界点 处是极大值还是极小值。
记 f(x)f(x)f(x) 在 x‾\overline xx 点处的 Hessian 矩阵为 H(x‾)H(\overline x)H(x) 。由于 f(x)f(x)f(x) 在 x‾\overline xx 点处连续,所以 H(x‾)H(\overline x)H(x) 是一个 n×nn \times nn×n 的对称矩阵。对于 H(x‾)H(\overline x)H(x) ,有如下结论:
- 如果 H(x‾)H(\overline x)H(x) 是正定矩阵,则临界点 x‾\overline xx 处是一个局部的极小值。
- 如果 H(x‾)H(\overline x)H(x) 是负定矩阵,则临界点 x‾\overline xx 处是一个局部的极大值。
- 如果 H(x‾)H(\overline x)H(x) 是不定矩阵,则临界点 x‾\overline xx 处不是极值。
#正定矩阵的判定
接下来的问题就是如何判断一个矩阵是否为正定矩阵了,这方面参考资料很多,本文不再赘述。
原创不易,如有帮助,敬请点赞、关注、收藏,谢谢支持!
多元函数极值、Hessian矩阵、正定矩阵相关推荐
- 协方差矩阵—Hessian矩阵—正定矩阵
文章目录 一.基本概念 1.1 协方差矩阵 及推导 1.2 Hessian矩阵 1.3 Hessian矩阵 示例 1.3 正定矩阵定义及性质 1.4 正定矩阵 示例 一.基本概念 1.1 协方差矩阵 ...
- Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵)
Steger算法(Line_Gauss)-光条中心线提取(基于Hessian矩阵) 算法背景介绍 Hessian 矩阵与泰勒多项式 关于求t 导数与中心点.亚像素点 高斯函数作用 文献 算法背景介绍 ...
- 多维梯度法(Multidimensional Gradient Methods)求多元函数极值或局部最大值
多维梯度法 利用优化函数的导数信息来指导搜索 与直接搜索方法相比,更快地找到解决方案 需要对解决方案进行良好的初步估计 目标函数需要是可微的 梯度法 首先介绍一下梯度法. 梯度是一个向量算子,用▽表示 ...
- Hessian矩阵与多元函数极值
Hessian矩阵与多元函数极值 海塞矩阵(Hessian Matrix),又译作海森矩阵,是一个多元函数的二阶偏导数构成的方阵.尽管它是一个具有悠久历史的数学成果,但是在机器学习和图像处理(例如SI ...
- matlab 海塞矩阵 多元函数求极值,基于Hessian矩阵的多元函数极值问题.pdf
您所在位置:网站首页 > 海量文档  > 电子工程/通信技术 > 无线电电子学/电信技术 基于Hessian矩阵的多元 ...
- 矩阵的二次型,矩阵的迹、正定矩阵、Hessian矩阵、实对称
一.二次型: 1.1 定义 含有nnn个变量x1,x2,-,xnx_1,x_2,\dots,x_nx1,x2,-,xn的二次齐次函数(如果变量乘以一个系数,则新函数会是原函数再乘上系数的某次方倍 ...
- python sympy求多元函数的梯度、Hessian矩阵
1 求梯度 sympy实际上提供了求梯度的方法,但个人认为不是很直观,求出的是∂f∂xi⃗+∂f∂yj⃗+∂f∂zk⃗\frac{\partial f}{\partial x} \vec {i}+\f ...
- 极限和连续+偏导+方向导数+可微+梯度+链式法则+hessian矩阵
文章目录 前言 一.极限和连续 二.偏导数 三.方向导数 四.可微 五.梯度 六.链式法则 七.Hessian矩阵 前言 多元函数 y对某一个变量的导数是偏导数: 偏导数的结果可以推广到任意方向,也就 ...
- hessian矩阵特征值
研究hessian矩阵去噪的过程中想了解下hessian矩阵特征值的意义及用法 Hessian矩阵的特征值:就是形容其在该点附近特征向量方向的凹凸性,特征值越大,凸性越强. 对于二维图像的某点的hes ...
最新文章
- linux 6.8 dns,CentOS6.8下安装DNS服务器
- Php Fatal error: Allowed memory size of 33554432 bytes exhausted 的解决办法
- ADAS方案设计成功关键:图像处理技术
- 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )
- for循坏的穷举与迭代,while、do while循环
- java 向上取整_java 中的异常处理和常用类使用
- //输入学生人数,挨个输入姓名,身高,年龄,求平均年龄,然后按身高降序排列输出...
- JavaScript新手入门教程大全~~~
- 金哥和你一起学模型压缩——结构篇
- Android RecyclerView封装下拉刷新与上拉加载更多
- .Net: C#中的委托(Delegate)和事件(Event)
- 10张思维导图--javascript
- 读《南怀瑾讲人生哲理》
- 高性能web 架构之 mysql 读写分离
- 17.scrapy框架简例使用
- 解决iPhone连接电脑,照片每次弹出
- 数据库第四次实验报告
- Linux系统命令查看edid,Linux下得到显示屏参数的方法
- 什么叫首充?关于流量卡首充的说明!
- android 摄像头 测距,GitHub - infonous/Everest: Android 手机拍照测距
热门文章
- 李彦宏夫人马东敏-----转自百度百科
- TP5 使用GD库将一个头像缩略并处理成圆形png
- vs2019怎么样建立头文件_VS2019编译运行 C/C++ 详细教程——同时美化你的 IDE
- 起码北京, 不相信眼泪
- 金红石型TiO2单晶基片|金红石光学极二氧化钛TiO2单晶;氧化镓单晶衬底|Ga2O3单晶衬底
- linux内核优盘配置,mini2440建立交叉编译环境+配置linux内核
- 数据质量管理系统有效清理垃圾数据
- 【电子购书商城】(二)Login登录功能的实现
- python中fact用法_Python covariance.EllipticEnvelope方法代码示例
- html 右端对齐,html标题右对齐