当前位置: 首页 > news >正文

Fisher信息矩阵与Hessian矩阵:区别与联系全解析

Fisher信息矩阵与Hessian矩阵:区别与联系全解析

在统计学和机器学习中,Fisher信息矩阵(FIM)和Hessian矩阵是两个经常出现的概念,它们都与“二阶信息”有关,常用来描述函数的曲率或参数的敏感性。你可能听说过,Fisher信息矩阵可以定义为对数似然函数二阶导数的负期望值,看起来很像Hessian矩阵的某种形式。那么,这两者到底有什么区别,又有哪些联系呢?今天我们就来一探究竟。


Fisher信息矩阵是什么?

Fisher信息矩阵是统计学中的一个核心工具,用来衡量概率分布 ( p ( x ∣ θ ) p(x|\theta) p(xθ) ) 中包含的参数 ( θ \theta θ ) 的信息量。它有两种等价定义:

  1. 基于得分函数(Score Function)
    I ( θ ) i j = E [ ∂ log ⁡ p ( x ∣ θ ) ∂ θ i ∂ log ⁡ p ( x ∣ θ ) ∂ θ j ∣ θ ] I(\theta)_{ij} = E\left[ \frac{\partial \log p(x|\theta)}{\partial \theta_i} \frac{\partial \log p(x|\theta)}{\partial \theta_j} \bigg| \theta \right] I(θ)ij=E[θilogp(xθ)θjlogp(xθ) θ]
    这是得分函数的协方差,反映了参数变化引起的似然波动。

  2. 基于二阶导数
    I ( θ ) i j = − E [ ∂ 2 log ⁡ p ( x ∣ θ ) ∂ θ i ∂ θ j ∣ θ ] I(\theta)_{ij} = -E\left[ \frac{\partial^2 \log p(x|\theta)}{\partial \theta_i \partial \theta_j} \bigg| \theta \right] I(θ)ij=E[θiθj2logp(xθ) θ]
    这是对数似然函数二阶偏导数的负期望值。

这两种定义在正则条件下(比如可微性和积分交换性)是等价的,我们稍后会证明。

通俗理解

Fisher信息矩阵像一个“信息探测器”,告诉你通过数据能了解多少关于 ( θ \theta θ ) 的知识。它是期望值,代表分布的平均特性。


Hessian矩阵是什么?

Hessian矩阵则是一个更广义的概念,出现在数学和优化领域。对于任意函数 ( f ( θ ) f(\theta) f(θ) ),Hessian矩阵 ( H ( θ ) H(\theta) H(θ) ) 定义为:

H ( θ ) i j = ∂ 2 f ( θ ) ∂ θ i ∂ θ j H(\theta)_{ij} = \frac{\partial^2 f(\theta)}{\partial \theta_i \partial \theta_j} H(θ)ij=θiθj2f(θ)

在统计学或机器学习中,如果 ( f ( θ ) = − log ⁡ p ( x ∣ θ ) f(\theta) = -\log p(x|\theta) f(θ)=logp(xθ) )(负对数似然,作为损失函数),Hessian就是:

H ( θ ) i j = − ∂ 2 log ⁡ p ( x ∣ θ ) ∂ θ i ∂ θ j H(\theta)_{ij} = -\frac{\partial^2 \log p(x|\theta)}{\partial \theta_i \partial \theta_j} H(θ)ij=θiθj2logp(xθ)

注意,这里的Hessian是一个具体的数据函数,依赖于观测值 ( x x x )。

通俗理解

Hessian矩阵像一张“曲率地图”,告诉你函数在某一点的凹凸性或变化速度。在优化中(如牛顿法),它直接用来调整步长。


Fisher信息矩阵与Hessian的联系

从定义上看,Fisher信息矩阵和Hessian矩阵似乎很像,尤其是Fisher的二阶导数定义:

I ( θ ) i j = − E [ ∂ 2 log ⁡ p ( x ∣ θ ) ∂ θ i ∂ θ j ∣ θ ] I(\theta)_{ij} = -E\left[ \frac{\partial^2 \log p(x|\theta)}{\partial \theta_i \partial \theta_j} \bigg| \theta \right] I(θ)ij=E[θiθj2logp(xθ) θ]

而Hessian是:

H ( θ ) i j = − ∂ 2 log ⁡ p ( x ∣ θ ) ∂ θ i ∂ θ j H(\theta)_{ij} = -\frac{\partial^2 \log p(x|\theta)}{\partial \theta_i \partial \theta_j} H(θ)ij=θiθj2logp(xθ)

它们的联系显而易见:Fisher信息矩阵是Hessian矩阵在真实参数 ( θ \theta θ ) 下的期望值。换句话说,Fisher取了Hessian的平均,抹去了单个数据的随机性,反映了分布的整体特性。

证明两种定义的等价性

为什么 ( I ( θ ) i j = E [ s i s j ] = − E [ ∂ 2 log ⁡ p ∂ θ i ∂ θ j ] I(\theta)_{ij} = E\left[ s_i s_j \right] = -E\left[ \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} \right] I(θ)ij=E[sisj]=E[θiθj2logp] )?我们来推导一下:

得分函数 ( s i = ∂ log ⁡ p ∂ θ i s_i = \frac{\partial \log p}{\partial \theta_i} si=θilogp ),其二阶导数为:

∂ s i ∂ θ j = ∂ 2 log ⁡ p ∂ θ i ∂ θ j \frac{\partial s_i}{\partial \theta_j} = \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} θjsi=θiθj2logp

计算得分函数的协方差:

I ( θ ) i j = E [ s i s j ] I(\theta)_{ij} = E[s_i s_j] I(θ)ij=E[sisj]

考虑 ( E [ s i ] = 0 E[s_i] = 0 E[si]=0 )(得分函数期望为零,请参考笔者的另一篇博客:统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?),我们对 ( s i s_i si ) 求偏导的期望:

E [ ∂ s i ∂ θ j ] = E [ ∂ 2 log ⁡ p ∂ θ i ∂ θ j ] E\left[ \frac{\partial s_i}{\partial \theta_j} \right] = E\left[ \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} \right] E[θjsi]=E[θiθj2logp]

另一方面:

∂ s i ∂ θ j = ∂ ∂ θ j ( 1 p ∂ p ∂ θ i ) = − 1 p 2 ∂ p ∂ θ j ∂ p ∂ θ i + 1 p ∂ 2 p ∂ θ i ∂ θ j \frac{\partial s_i}{\partial \theta_j} = \frac{\partial}{\partial \theta_j} \left( \frac{1}{p} \frac{\partial p}{\partial \theta_i} \right) = -\frac{1}{p^2} \frac{\partial p}{\partial \theta_j} \frac{\partial p}{\partial \theta_i} + \frac{1}{p} \frac{\partial^2 p}{\partial \theta_i \partial \theta_j} θjsi=θj(p1θip)=p21θjpθip+p1θiθj2p

= − s i s j + ∂ 2 log ⁡ p ∂ θ i ∂ θ j = -s_i s_j + \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} =sisj+θiθj2logp

取期望:

E [ ∂ 2 log ⁡ p ∂ θ i ∂ θ j ] = E [ s i s j ] + E [ ∂ s i ∂ θ j ] E\left[ \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} \right] = E[s_i s_j] + E\left[ \frac{\partial s_i}{\partial \theta_j} \right] E[θiθj2logp]=E[sisj]+E[θjsi]

由于 ( E [ s i ] = 0 E[s_i] = 0 E[si]=0 ),且在正则条件下可以交换积分和导数:

E [ ∂ s i ∂ θ j ] = ∂ ∂ θ j E [ s i ] = 0 E\left[ \frac{\partial s_i}{\partial \theta_j} \right] = \frac{\partial}{\partial \theta_j} E[s_i] = 0 E[θjsi]=θjE[si]=0

所以:

E [ ∂ 2 log ⁡ p ∂ θ i ∂ θ j ] = E [ s i s j ] E\left[ \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} \right] = E[s_i s_j] E[θiθj2logp]=E[sisj]

取负号:

I ( θ ) i j = E [ s i s j ] = − E [ ∂ 2 log ⁡ p ∂ θ i ∂ θ j ] I(\theta)_{ij} = E[s_i s_j] = -E\left[ \frac{\partial^2 \log p}{\partial \theta_i \partial \theta_j} \right] I(θ)ij=E[sisj]=E[θiθj2logp]

这证明了两种定义的等价性。


Fisher信息矩阵与Hessian的区别

尽管有联系,两者在使用和性质上有显著差别:

1. 定义基础

  • Fisher信息矩阵:基于概率分布 ( p ( x ∣ θ ) p(x|\theta) p(xθ) ),是期望值,反映分布的统计特性。
  • Hessian矩阵:基于具体函数(比如 ( − log ⁡ p ( x ∣ θ ) -\log p(x|\theta) logp(xθ) )),依赖特定数据 ( x x x ),是瞬时值。

2. 随机性

  • Fisher:取了期望,消除了数据的随机波动,是理论上的平均曲率。
  • Hessian:直接计算某次观测的二阶导数,受数据噪声影响,可能不稳定。

3. 应用场景

  • Fisher:用于统计推断,比如Cramér-Rao下界,衡量参数估计的理论精度。
  • Hessian:用于优化算法(如牛顿法),直接处理损失函数的局部曲率。

4. 计算复杂度

  • Fisher:需要知道分布并计算期望,理论上精确但实践中常需近似(如K-FAC)。
  • Hessian:只需对具体数据求二阶导数,但在大规模模型中计算和存储成本高。
举例:正态分布

对于 ( x ∼ N ( μ , σ 2 ) x \sim N(\mu, \sigma^2) xN(μ,σ2) ):

  • Fisher:
    I μ μ = − E [ − 1 σ 2 ] = 1 σ 2 I_{\mu\mu} = -E\left[ -\frac{1}{\sigma^2} \right] = \frac{1}{\sigma^2} Iμμ=E[σ21]=σ21
    (二阶导数为常数,期望不变)

  • Hessian:
    H μ μ = − ∂ 2 log ⁡ p ∂ μ 2 = 1 σ 2 H_{\mu\mu} = -\frac{\partial^2 \log p}{\partial \mu^2} = \frac{1}{\sigma^2} Hμμ=μ22logp=σ21
    (对于单次观测,值固定)

这里两者相等,但如果数据有噪声或分布复杂,Hessian会波动,而Fisher保持稳定。


实际中的联系与应用

1. 大样本近似

在最大似然估计(MLE)中,当样本量很大时,Hessian矩阵的平均值趋近于Fisher信息矩阵:

1 n ∑ i = 1 n H ( θ ; x i ) ≈ I ( θ ) \frac{1}{n} \sum_{i=1}^n H(\theta; x_i) \approx I(\theta) n1i=1nH(θ;xi)I(θ)

这为参数估计的协方差提供了近似:( Cov ( θ ^ ) ≈ I ( θ ) − 1 \text{Cov}(\hat{\theta}) \approx I(\theta)^{-1} Cov(θ^)I(θ)1 )。

2. 优化中的融合

  • 牛顿法:直接用Hessian调整步长,但计算昂贵。
  • 自然梯度下降:用Fisher信息代替Hessian,结合统计特性,效率更高。
  • 折中方案:如K-FAC,用Fisher的近似加速Hessian类优化。

3. 参数正交性

Fisher的非对角元素 ( I i j = 0 I_{ij} = 0 Iij=0 ) 表示参数正交,而Hessian的非对角元素反映具体数据的参数耦合。Fisher提供理论指导,Hessian提供实践反馈。


总结

Fisher信息矩阵和Hessian矩阵是一对“亲戚”:Fisher是Hessian的期望版本,前者关注分布的统计信息,后者关注具体数据的曲率。它们在统计推断和优化中各有侧重,但在理论和实践中常常相辅相成。理解它们的区别与联系,能帮助我们在模型设计和训练中更灵活地选择工具——是追求理论精度,还是优化实际收敛?答案就在这两者之中。

后记

2025年2月24日23点00分于上海,在Grok3大模型辅助下完成。

相关文章:

Fisher信息矩阵与Hessian矩阵:区别与联系全解析

Fisher信息矩阵与Hessian矩阵:区别与联系全解析 在统计学和机器学习中,Fisher信息矩阵(FIM)和Hessian矩阵是两个经常出现的概念,它们都与“二阶信息”有关,常用来描述函数的曲率或参数的敏感性。你可能听说…...

【HTML— 快速入门】HTML 基础

准备工作 vscode下载 百度网盘 Subline Text 下载 Sublime Text下载 百度网盘 vscode 下载 Sublime Text 是一款轻量好用的文本编辑器,我们在写前端代码时,使用 Sublime Text 打开比使用记事本打开,得到的代码体验更好,比 vscode…...

Docker 与 Serverless(无服务器架构)

Serverless(无服务器架构) 是一种新的云计算架构,它通过让开发者专注于业务逻辑而无需管理服务器基础设施,来简化应用的开发和部署。Serverless 模型通常由云服务提供商管理基础设施的所有方面,而开发者只需提供代码和…...

DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。

DMA 定制固件教程 小白跟着操作做可以做出的单人固件 图文教程 链接:https://docs.qq.com/doc/DQ01lVGtHelROVHNv 本图文教程包含内容: 一、DMA仿真技术采集真实单人固件 二、网卡TLP仿真固件生成 三、DMA仿真技术io、中断逻辑,从零仿真 四、…...

嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)

目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…...

飞鱼科技游戏策划岗内推

协助策划完成相关工作,包括但不仅限于策划配置,资料搜集,游戏体验; 游戏策划相关作品;游戏大赛经历;游戏demo制作经历;游戏公司策划岗位实习经历优先 内推码 DSZP7YFU...

前端如何进行性能优化

1. 减少HTTP请求 合并文件:将多个CSS或JavaScript文件合并为一个,减少请求次数。 使用CSS Sprites:将多个小图标合并为一张大图,通过背景定位显示。 内联小资源:将小的CSS或JavaScript直接嵌入HTML中,减少…...

大白话Vuex 核心概念(state、mutations、actions)的使用案例与原理

大白话Vuex 核心概念(state、mutations、actions)的使用案例与原理 Vuex是Vue.js应用程序中专门用来管理状态的工具,就好像是一个大管家,帮你把项目里一些重要的数据和操作管理得井井有条。下面用大白话结合案例来介绍Vuex核心概…...

阿里云ack的创建与实战应用案例

阿里云ack的创建与应用案例 创建前开通ack相关服务:开始创建简单的魔方游戏,熟悉sv与clb自动注册创建部署一个nginx 服务示例:走不同域名访问不同svc资源:为什么需要 Ingress ?创建第一个域名的 Deployment和Service。…...

鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar)

鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar) 1、效果展示2、下载 DevEco Studio3、创建项目4、新建页面模板5、更改应用信息6、新建以下页面7、Index.ets8、真机运行9、图片资源文件 1、效果展示 2、下载 DevEco Studio 访问官网根据自己的版本…...

Vue组件:从使用到原理的深度解析

一、什么是Vue组件? 组件是Vue的核心特性之一,它允许开发者将UI拆分为独立可复用的代码片段。每个组件本质上是一个Vue实例,具有自己的: 模板(Template) 数据(Data) 方法&#xf…...

Docker部署 MongoDB及常用命令

docker 部署 docker run -d \--name mongo \-e MONGO_INITDB_ROOT_USERNAMEroot \-e MONGO_INITDB_ROOT_PASSWORD123456 \-p 27017:27017 \-v ./local-mongo-data:/data/db \mongo:latest或者编写 docker-compose.yaml 文件。如下: version: 3.1services:mongo:im…...

27.[前端开发-JavaScript基础]Day04-函数基本使用-递归-变量作用域-函数式编程

一、JavaScript函数 1 认识JavaScript函数 程序中的foo、bar、baz 认识函数 函数使用的步骤 2 函数的声明和调用 声明和调用函数 函数的参数 有参数的函数练习 函数的返回值 函数的练习 arguments参数(JS高级再学习) 3 函数的递归调用 函数中调用函数…...

mac修改docker的daemon.json 镜像文件

1、找到daemon.json文件的位置 docker info 可以看出位置在: /Users/spuer/.docker 2. 进入daemon.json 所在的目录: cd /Users/spuer/.docker3. 查看daemon.json的内容: more daemon.json可以看出,没有配置registry-mirrors&…...

KIMI K1.5:大规模强化学习在大语言模型中的应用与工程实践

目录 1、核心技术创新:长上下文强化学习 2、策略优化的技术细节 2.1、在线镜像下降变体 2.2、长度惩罚机制 2.3、智能采样策略 3、工程架构创新 3.1、混合部署框架 3.2、代码沙箱与奖励模型 3.3、分布式系统架构 4、实验成果与性能提升 5、结论与未来展望 大语言模…...

seacms v9 实现的MySQL注入

目录 过滤关键词information_schema 怎么办 一、环境搭建 二、环境分析 三、源代码分析 1、过滤程序 2、注入点 四、获取数据库名 五、获取数据库表名 六、获取表的列名 七、获取数据信息 过滤关键词information_schema 怎么办 1.、利用sys数据库(MySQL 5.…...

Go中slice和map引用传递误区

背景 关于slice和map是指传递还是引用传递,很多文章都分析得模棱两可,其实在Go中只有值传递,但是很多情况下是因为分不清slice和map的底层实现,所以导致很多人在这一块产生疑惑,下面通过代码案例分析slice和map到底是…...

C# Unity 唐老狮 No.2 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…...

【Uniapp-Vue3】开发userStore用户所需的相关操作

在项目根路径下创建的stores文件夹中创建user.js文件 并将以下内容复制到user.js中 import {ref} from "vue" import { defineStore } from pinia; const uniIdCo uniCloud.importObject("uni-id-co") const db uniCloud.database(); const usersTable…...

DeepSeek开源周首日:发布大模型加速核心技术可变长度高效FlashMLA 加持H800算力解码性能狂飙升至3000GB/s

FlashMLA的核心技术特性包括对BF16精度的全面支持,以及采用块大小为64的页式键值缓存(Paged KV Cache)系统,实现更精确的内存管理。在性能表现方面,基于CUDA12.6平台,FlashMLA在H800SXM5GPU上创下了显著成绩…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...