首页 > 其他分享 >【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p

时间:2023-12-28 14:36:35浏览次数:36  
标签:变量 变分 贝叶斯 分布 推断 数据




变分推断:从求分布的推断问题,变成缩小距离的优化问题

  • 频率学派与贝叶斯学派
  • 隐空间和隐变量
  • 变分推断
  • 完整推导



 


频率学派与贝叶斯学派

学过概率论,应该了解过,概率分为 2 个学派:

  • 频率学派:数据是客观的(看到啥就是啥,隐变量z->观察变量/输入变量x),直接求统计指标即可(似然函数),代表之作像 CNN、RNN、transformer 这类判别模型(学习类别边界)
  • 贝叶斯学派:数据来自隐变量z(每个孩子都有一个妈,【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据),数据都有主观的先验的分布(知道先验,贝叶斯公式推导后验),代表之作像 VAE、GAN、扩散模型 这类概率生成模型(学习概率分布)

隐空间和隐变量

隐空间和隐变量相当于幕后的英雄,虽然不直接出现在台前,但是对整个剧情的发展起着决定性的作用。

隐空间可以理解为一种隐藏的、不直接观测到的多维空间,它包含了数据的一些内在特征或属性。这些特征不是直接在数据中展示的,但是通过学习和推断,我们可以揭示数据背后的结构。你可以把隐空间想象成一个幕后的控制室,它控制着数据表现出来的各种特性和样式。

  • 以人脸识别为例,原始的图像数据是由成千上万的像素点组成的,这是我们直接观测到的。但是人脸的一些内在特征,比如笑容的形状、眼睛的距离、鼻子的大小等,都是隐藏在这些像素点背后的。这些特征构成了一个隐空间,在这个空间中,每一个维度都代表了人脸的一个内在特征。机器学习模型通过学习这个隐空间,可以更好地理解和处理复杂的图像数据。

隐变量则是隐空间中的具体坐标或者点,它们代表了数据在隐空间中的具体位置。这些变量帮助我们描述数据中不可直接观测的特性或因素。隐变量像是那些影响剧情但不直接出现的角色,虽然你看不到他们,但他们的存在通过剧情中的其他角色或事件表现出来。

  • 以心理学研究为例,研究者可能对人的“智力”或“创造力”这样的抽象概念感兴趣。这些概念不能直接测量,因此它们是隐变量。研究者通过设计一系列的测试题目(观察到的变量),试图测量和理解这些隐变量。

隐空间是一个抽象的空间,而隐变量是在这个空间中的具体点,它们一起帮助我们探索和理解数据背后的深层次信息。

助我们捕捉数据的本质和复杂度,而不必被数据的高维表象所困扰。

变分推断

把贝叶斯学派的公式展开:

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_02

按照贝叶斯展开后,分母 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_深度学习_03

可以用 马尔科夫链-蒙特卡洛方法 来近似,但 马尔科夫链-蒙特卡洛方法 是基于 迭代 策略(一步步来的那种)。

  • 导致ta计算慢,不适合深度学习这种大规模数据的计算

变分推断另一种解法,适合深度学习这种大规模数据的计算、适合并行计算。

按照贝叶斯学派的思想,估计下图的黄色分布,那设置一个先验(有点像高斯分布),用高斯分布去套这个黄色分布:

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_04

目的是,让高斯分布尽可能的重合黄色分布。

  • 用变分分布去逼近推断后的后验分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_05
  • 最小化俩个分布的 KL 散度

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_06

  • 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_07 代表一个叫做q的概率分布,【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_08
  • 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_09
  • 我们要找到一个参数 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_10,使得 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_07【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_08
  • KL 散度用于,衡量俩个分布之间的距离

公式的目标是找到一个概率分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_13,使得它与给定数据 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_14 的真实概率分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_深度学习_15

通过调整参数 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_16 的值,我们可以调整 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_17

比如上图,调整参数 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_16

变分推断步骤:

  • 输入:数据x,模型 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_19
  • 需要推断的是后验概率 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_20,但不能直接求
  • 构造后验概率 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_20 的近似分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_深度学习_22
  • 不断缩小 q 和 p 之间的距离,直至收敛

展开上面公式的 KL 散度(变成期望和log运算表示):

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_23

完整推导

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_24

第二行:将 KL 散度的定义展开为期望值的形式,【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_25 表示在 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_13

第三行:除法变成减法形式

第四行:【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_27 替换后验公式 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_28

第五行:log运算展开后验公式,再把中括号外面的 E 放进来了

第六行:合并 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_29 变成 KL 散度形式,【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_30

常数前面的 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_31

  • 数据的似然度 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_深度学习_32
  • 潜在变量的先验分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_概率分布_33

最小化 -证据下界,等于最大化证据下界,因为前面有一个负号:

【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_数据_34

最终推断结果,告诉我们,可以通过最大化证据下界来近似地学习模型的参数。

通过优化证据下界,我们可以找到一个概率分布 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p_算法_13,使得ta能最好地解释观测数据,并且与真实潜在变量的分布尽量接近。


标签:变量,变分,贝叶斯,分布,推断,数据
From: https://blog.51cto.com/u_13937572/9014732

相关文章

  • 如何用Redis构建分布式锁系统?
       对常见的加锁场景的归纳,只涉及到了JVM的api锁和redis的分布式锁。其实也可以用zookeeper或者mysql,其他的以后在分享吧,其实最完美的还是老外那套saga状态机解决分布式事务比较完美,缺点就是难度很大要用到领域驱动的思想,国内普遍用的贫血模型,切换到DDD还是需要些时间研究......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、广播变量BroadcastVariables示例1、介绍2、广播变量示例3、验证三、BroadcastState与BroadcastVariable区别本文简单的介绍了flink中关于广播变量的简单使用示例。一、maven依赖为避免篇幅过长,所有基础依赖均在第一篇文章中列出,具......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、Flinksink介绍三、sink到文件、console示例1、console输出2、sink到文件1)、sinktxt文件到hdfs上2)、sinkcsv文件到本地3)、sinktext文件到hdfs上(writeUsingOutputFormat)四、sink到socket示例(writeToSocket)五、Jdbc/mysql示例1、maven依......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、分布式缓存(DistributedCache)示例1、介绍2、maven依赖3、实现4、验证1)、验证步骤2)、验证本文介绍了flink关于分布式缓存的使用示例,比较简单。本文除了maven依赖外,没有其他依赖。本示例需要hadoop环境可用。一、maven依赖为避免篇幅过长,所......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、sink到ClickHouse示例1、介绍2、maven依赖3、创建clickhouse表4、验证clickhouseweb页面是否正常5、实现1)、userbean2)、sink实现6、验证1)、nc输入2)、启动应用程序3)、观察应用程序控制台输出4)、查看clickhouse表中的数据本文介绍了nc作......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、环境或版本说明三、flinksink到kafka示例1、介绍2、1.13.6版本示例1)、maven依赖2)、实现3)、验证步骤3、1.17.0版本示例1)、maven依赖2)、实现3)、验证步骤本文介绍了flink将数据sink到kafka的示例,并提供了flink的1.13.6和1.17两个版本sink到......
  • 【史上最小白】变分自编码器 VAE:从降维本质,到自编码器,再到变分自编码器
    变分自编码器降维本质:寻找隐空间和隐变量自编码器:论降维,PCA纯线性不及我深邃,编码器-解码器不及我牛逼无损重建变分自编码器VAE:解决自编码器的过拟合问题引入正则化:从求最大似然函数MLE,改成最大后验估计MAP变分推理损失函数=无损重建+正则化 降维本质:寻找隐空间和隐变量机......
  • 无涯教程-Java泛型 - 类型推断
    类型推断表示Java编译器查看方法调用以及其相应的声明来检查和确定类型的参数,如果可用,则返回分配的类型。如果未使用类型推断,则编译器会生成未经检查的转换警告。Typeinference-语法Box<Integer>integerBox=newBox<>();Box  -Box是一个通用类。<>  -运算符表......
  • 请谈谈对分布式锁的理解和实现?
    面试题之五请谈谈对分布式锁的理解和实现?难度指数:四星级考察频率:85%开发年限:3-5年一.概念分布式锁:是一种跨进程、机器节点的互斥锁,可以用来保证多台机器接待对于共享资源的访问排它性。和线程本质上是一样的,线程锁的生命周期是单进程多线程,分布式锁的生命周期是多进程多机器......
  • 使用分布式锁实现定时任务的精确调度
    定时任务,实现分布式控制定时任务使用分布式锁实现定时任务的精确调度在分布式系统中,实现定时任务的精确调度是一项具有挑战性的任务。由于分布式环境中存在多个节点,传统的定时任务可能会出现并发执行、重复执行或者错过执行的问题。为了解决这些问题,我们可......