黑塞矩阵(Hessian Matrix)

article/2025/8/27 15:40:36

在机器学习课程里提到了这个矩阵,那么这个矩阵是从哪里来,又是用来作什么用呢?先来看一下定义:

黑塞矩阵(Hessian Matrix),又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。黑塞矩阵最早于19世纪由德国数学家Ludwig Otto Hesse提出,并以其名字命名。黑塞矩阵常用于牛顿法解决优化问题。


一般来说, 牛顿法主要应用在两个方面, 1, 求方程的根; 2, 最优化.

在机器学习里,可以考虑采用它来计算n值比较少的数据,在图像处理里,可以抽取图像特征,在金融里可以用来作量化分析。

图像处理可以看这个连接:

http://blog.csdn.net/jia20003/article/details/16874237

量化分析可以看这个:

http://ookiddy.iteye.com/blog/2204127

下面使用TensorFlow并且使用黑塞矩阵来求解下面的方程:


代码如下:

#python 3.5.3  蔡军生    
#http://edu.csdn.net/course/detail/2592    
#  
import tensorflow as tf
import numpy as npdef cons(x):return tf.constant(x, dtype=tf.float32)
def compute_hessian(fn, vars):mat = []for v1 in vars:temp = []for v2 in vars:# computing derivative twice, first w.r.t v2 and then w.r.t v1temp.append(tf.gradients(tf.gradients(f, v2)[0], v1)[0])temp = [cons(0) if t == None else t for t in temp] # tensorflow returns None when there is no gradient, so we replace None with 0temp = tf.stack(temp)mat.append(temp)mat = tf.stack(mat)return matx = tf.Variable(np.random.random_sample(), dtype=tf.float32)
y = tf.Variable(np.random.random_sample(), dtype=tf.float32)f = tf.pow(x, cons(2)) + cons(2) * x * y + cons(3) * tf.pow(y, cons(2)) + cons(4)* x + cons(5) * y + cons(6)
# arg1: our defined function, arg2: list of tf variables associated with the function
hessian = compute_hessian(f, [x, y])sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(hessian))
输出结果如下:


再来举多一个例子的源码,它就是用来计算量化分析,这个代码很值钱啊,如下:

#python 3.5.3  蔡军生    
#http://edu.csdn.net/course/detail/2592    
# 
import numpy as np
import scipy.stats as stats
import scipy.optimize as opt#构造Hessian矩阵
def rosen_hess(x):x = np.asarray(x)H = np.diag(-400*x[:-1],1) - np.diag(400*x[:-1],-1)diagonal = np.zeros_like(x)diagonal[0] = 1200*x[0]**2-400*x[1]+2diagonal[-1] = 200diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:]H = H + np.diag(diagonal)return H
def rosen(x):"""The Rosenbrock function"""return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
def rosen_der(x):xm = x[1:-1]xm_m1 = x[:-2]xm_p1 = x[2:]der = np.zeros_like(x)der[1:-1] = 200*(xm-xm_m1**2) - 400*(xm_p1 - xm**2)*xm - 2*(1-xm)der[0] = -400*x[0]*(x[1]-x[0]**2) - 2*(1-x[0])der[-1] = 200*(x[-1]-x[-2]**2)return derx_0 = np.array([0.5, 1.6, 1.1, 0.8, 1.2])res = opt.minimize(rosen, x_0, method='Newton-CG', jac=rosen_der, hess=rosen_hess,options={'xtol': 1e-8, 'disp': True})
print("Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian):")
print(res)

输出结果如下:

====================== RESTART: D:/AI/sample/tf_1.43.py ======================
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 20
         Function evaluations: 22
         Gradient evaluations: 41
         Hessian evaluations: 20
Result of minimizing Rosenbrock function via Newton-Conjugate-Gradient algorithm (Hessian):
     fun: 1.47606641102778e-19
     jac: array([ -3.62847530e-11,   2.68148992e-09,   1.16637362e-08,
         4.81693414e-08,  -2.76999090e-08])
 message: 'Optimization terminated successfully.'
    nfev: 22
    nhev: 20
     nit: 20
    njev: 41
  status: 0
 success: True
       x: array([ 1.,  1.,  1.,  1.,  1.])
>>> 


可见hessian矩阵可以使用在很多地方了吧。

1. C++标准模板库从入门到精通 

http://edu.csdn.net/course/detail/3324

2.跟老菜鸟学C++

http://edu.csdn.net/course/detail/2901

3. 跟老菜鸟学python

http://edu.csdn.net/course/detail/2592

4. 在VC2015里学会使用tinyxml库

http://edu.csdn.net/course/detail/2590

5. 在Windows下SVN的版本管理与实战 

 http://edu.csdn.net/course/detail/2579

http://edu.csdn.net/course/detail/2582
http://edu.csdn.net/course/detail/2672


可以看更多的网站:

http://blog.csdn.net/ubunfans/article/details/41520047

http://blog.csdn.net/baimafujinji/article/details/51167852

http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/

http://www.cnblogs.com/logosxxw/p/4651413.html



http://chatgpt.dhexx.cn/article/8uxHssEw.shtml

相关文章

hessian矩阵

黑塞矩阵(Hessian Matrix), 又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。黑塞矩阵最早于19世纪由德国数学家Ludwig Otto Hesse提出,并以其名字命名…

黑塞矩阵

黑塞矩阵 编辑 黑塞矩阵(Hessian Matrix),又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个 多元函数的二阶 偏导数构成的方阵,描述了函数的局部 曲率。黑塞矩阵最早于19世纪由德国数学家Ludwig Otto Hesse提出&#xff0…

Hessian矩阵(黑塞矩阵)

文章目录 黑塞矩阵与多元函数的极值泰勒展开及海塞矩阵海塞矩阵的意义海塞矩阵在图像处理中的应用基于尺度空间的Hessian简化算法 黑塞矩阵与多元函数的极值 一元函数求极值,例如函数: 通常先求其一阶导数,根据费马定理极值点处的一阶导数一…

H3C链路聚合

实验拓扑 图 1-1 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备,以此类推;另外,同一网段中,IP 地址的主机位为…

H3C S6520交换机在现网环境下如何配置链路聚合(现网实操经验)

设备 Device A:H3C S6520-26Q-SI(已堆叠IRF) software, Version 7.1.070,Release 6326H3C Device B:锐捷RG-NBS3100 POE交换机 业务需求 增加公司网络网络冗余高可用性,核心交换机(Device A)至各楼层POE交换机设备Device B配置链路聚合,链路聚合实现两设备间流量在聚…

华三企业交换机链路聚合实例

本期为大家带来华三交换机的链路聚合的实例,请看拓补图 前言:华三的交换机链路聚合和华为的有异曲同工之妙,下面是关键字 华三Bridge-Aggregation1 华为Eth-trunk 华三加入聚合组,在端口下敲 port link-aggregation group 1 华…

华三-以太网链路聚合

1.8.1 二层静态聚合配置举例 1. 组网需求 Device A与Device B通过各自的二层以太网接口GigabitEthernet4/0/1~GigabitEthernet4/0/3相互连接。 在Device A和Device B上分别配置二层静态链路聚合组,并实现设备间VLAN 10和…

H3C交换机链路聚合配置方法

H3C交换机链路聚合配置方法 拓扑图配置步骤交换机A的配置交换机B的配置结果说明 拓扑图 配置步骤 交换机A的配置 采用动态聚合模式:创建二层聚合接口,并配置动态聚合模式 [设备A]interface bridge-aggregation 1 [设备A-Bridge-Aggregation1] link-agg…

华三 h3c 交换机链路聚合

链路聚合 一:二层静态聚合 这里配置链路聚合,根据以往我的习惯和经验,聚合端口和要加入聚合组的端口属性应该一致,要么都是access,要么都是trunk,如果不对的话,请大佬留言告知! […

华三H3C链路聚合配置实例

华三链路聚合配置 上拓扑 命令配置 interface Bridge-Aggregation1 #创建聚合口1 port link-type trunk #聚合口设置为trunk模式 port trunk permit vlan all #放行所有vlan 进入接口,绑定聚合口 interface GigabitEthernet1/0/47 port link-type trunk port trunk…

华三路由器链路聚合配置(华三交换机配置)

华三路由器链路聚合配置拓扑如下: 1.华三路由器链路聚合配置:配置链路聚合 SW1设备配置 <H3C>system-view #进入系统视图 [H3C]sysname sw1 #将设备命名为sw1 [sw1]int…

华三设备链路聚合技术原理与配置

基本原理 背景&#xff1a;设备之间存在多条链路时&#xff0c;由于STP的存在&#xff0c;实际上只有一条链路会转发数据&#xff0c;带宽很大的浪费。 原理&#xff1a;将多个物理接口捆绑成为一个逻辑接口&#xff0c;可以实现增加带宽的目的。 链路聚合的优势&#xff1a;…

华三链路聚合实验配置

文章目录 链路聚合实验实验拓扑实验需求实验解法 总结成员端口的状态聚合模式聚合边缘接口聚合负载分担类型 链路聚合实验 实验拓扑 实验需求 1.按照图示配置PC3和PC4的 2.P地址 3.在SW1和SW2的两条直连链路上配置静态链路聚合&#xff0c;实现链路冗余&#xff0c;并可以增加…

华三交换机配置链路聚合

华三和华为交换机叫 链路聚合 思科交换机叫 端口聚合 二层聚合配置 1、聚合方式&#xff1a; &#xff08;1&#xff09;、lacp 静态链路聚合 动态链路聚合&#xff08;开启lacp模式&#xff0c;常用&#xff09; &#xff08;2&#xff09;、手工负载分担 2、配置步骤 静态端…

华三交换机配置静态链路聚合

拓扑如下&#xff1a; 1.配置链路聚合 SW1设备配置 <H3C>system-view #进入系统视图 [H3C]sysname sw1 #将设备命名为sw1 [sw1]interface bridge-aggregation 1 …

【H3C模拟器】配置交换机的链路聚合

目录 链路聚合的介绍 链路聚合的作用 链路负载均衡原理 链路聚合的分类 链路聚合的实例 本章我们主要讲华三交换机的链路聚合的介绍和相关实例的操作。 链路聚合的介绍 链路聚合&#xff08;英文&#xff1a;Link Aggregation&#xff09;是一个计算机网络术语&#xff…

H3C交换机链路聚合配置

一、链路聚合分为以下三步&#xff1a; 1、在所需要聚合的交换机上分别创建一个聚合组。 2、将交换机需要聚合的接口加入到聚合组中。 3、查看聚合状态是否配置成功。 二、实验举例&#xff1a; 1、在H3C模拟器拉两台交换机&#xff0c;将需要聚合的两个接口互联。 2、自动…

H3C华三链路聚合的原理及配置

1.链路聚合的作用&#xff1a; 将多条物理链路捆绑在一起形成一条以太网逻辑链路&#xff0c;实现增加链路带宽的目的&#xff0c;同时这些捆绑在一起的链路通过相互动态备份&#xff0c;可以有效地提高链路的可靠性 2.聚合模式&#xff1a; ⑴静态聚合&#xff1a;一旦配置好…

如何设置打开图片的默认方式

如果之前已经设置了打开图片的默认方式&#xff0c;右击后发现打开方式中也没有设置默认打开方式相关选项&#xff0c;呢么只需要右击图片&#xff0c;选择属性&#xff0c;在属性中选择更改&#xff0c;更给成你想要打开的默认方式即可