自由能(Free Energy)(一)

news/2024/5/19 1:39:47 标签: 自由能, 因果关系, 强化学习

博客内容参考,本篇博客所有内容基于在这个链接内容做的一些加工以及思考,强烈建议去看一遍原文。

前言

假设一个场景,你在球场投篮,那么你是如何完成这个投篮动作呢?你的大脑会先根据抛物线公式计算一下角度高度等,甚至考虑微弱的风向吗?显然是不可能的,我们的大脑可能就是预估大概这个力度、角度,篮球是否会中,并且在篮球抛向球筐的过程中,我们的大脑还会不断的修正我们一开始预测的结果。

那么我们大脑是如何根据观察到的东西来进行预测以及动作呢?我们知道,我们大脑其实就仅仅只有各种感官数据的输入,并没有关于环境真实的状态。

假设 X h y p o t h e s e ∈ R n X_{hypothese} \in R^n XhypotheseRn表示大脑试图去推断环境的真实状态,这里的n假设环境存在n个状态,比如上面例子中,篮筐的位置,篮球的位置等等,为了简单起见,我们用 x x x表示。
假设 Y o b s e r v a t i o n ∈ R q Y_{observation} \in R^q YobservationRq表示感官数据,例如眼睛看到的,手摸到的,其中q表示q个感官,为了简单起见,用 y y y表示。
假设 U ∈ R l U \in R^l URl表示对环境做出的动作,比如抬起手臂,将球投出去等等。其中 l l l表示可以做的动作数量。

那么大脑所存在的世界,就可以表示成如下结构:
Brain and world
OK,那么定义好变量后,如何根据我们所观察到的去推断外部环境的隐状态 x x x呢?这里,我们首先会想到利用贝叶斯公式,根据 P ( x , y ) = P ( x ∣ y ) P ( y ) = P ( y ∣ x ) P ( x ) P(x,y)=P(x|y)P(y)=P(y|x)P(x) P(x,y)=P(xy)P(y)=P(yx)P(x),可以得到如下公式:
P ( x ∣ y ) = P ( y ∣ x ) P ( x ) P ( y ) P(x|y) = \frac{P(y|x)P(x)}{P(y)} P(xy)=P(y)P(yx)P(x),其中 P ( x ∣ y ) P(x|y) P(xy)也被称为后验概率, P ( y ∣ x ) P(y|x) P(yx)是似然, P ( x ) P(x) P(x)是先验, P ( y ) P(y) P(y)有时候也被称为证据。

在这里, P ( x ) P(x) P(x)通常会假设其符合高斯分布。如果我们知道了这 P ( y ) , P ( y ∣ x ) , P ( x ) P(y) , P(y|x),P(x) P(y),P(yx),P(x)这三个分布,我们当然可以求出这个后验概率,但是一般情况下,是不知道的,主要原因是在于计算 P ( y ) P(y) P(y),因为 P ( y ) = ∑ x P ( y ∣ x ) P ( x ) o r ∫ P ( y ∣ x ) P ( x ) d x P(y)=\sum_{x}P(y|x)P(x) or \int {P(y|x)P(x)dx} P(y)=xP(yx)P(x)orP(yx)P(x)dx,所以其实是很难计算的。

那么在这里,一个通用的解决办法就是使用变分推断,使用另一个分布去近似你想要求的分布。
比如在这里使用 q ( x ; ξ ) q(x;\xi) q(x;ξ)来近似分布 p ( x ∣ y ) p(x|y) p(xy)。其中 ξ \xi ξ是一个分布的参数,比如高斯分布的话就是均值和方差。
这个 q ( x ; ξ ) q(x;\xi) q(x;ξ)有时也被称为认知密度分布(Recognition density)
在这里插入图片描述
那么此时,我们的结构就变为如下所示:
在这里插入图片描述

What the brain is doing? -Prediction error minimization

本质上来说,我们大脑做的就是最小化我们的预测误差,通过给定的观察数据推断的环境状态与真实的环境状态之间距离最小。那么如何最小化这个prediction error呢?主要是通过两个方面:1.改进我们的脑海中的内部模型,去更好的匹配输入的感官数据。2.通过在环境中做Action。
第一点好理解,那么如何第二点是怎么理解呢?什么叫做在环境中做Action可以改变prediction error呢?
在这里举个例子,假设你社恐或者内向,然后现在突然叫你去演讲,那么此时你就可能会逃避这个演讲,推脱这个演讲,以保持原来的prediction error。所以为什么我们习惯于待在舒适圈呢,从这个角度来说,因为待在舒适圈我们大脑对外部环境的prediction error是最小的,一旦跳出舒适圈,那大脑的内部模型就会被破坏,而对于生物来说,我们的根本任务就是活着,那么对于大脑来说就是尽可能最小化这个prediction error;所以一旦跳出舒适圈,大脑就会控制我们,想让我们尽快回到熟悉的圈子。

OK ,回归正题,那么对于第一点,我们想让内部模型更好的匹配真实的环境模型,那么如何去衡量分布的接近程度呢?在这里,我们使用KL散度来衡量,那么也就是说对于第一点,我们想要最小化 a r g m i n ξ D K L ( q ( x ; ξ ) ∣ ∣ p ( x ∣ y ) ) ( 1 ) argmin_{\xi} D_{KL}(q(x;\xi)||p(x|y)) (1) argminξDKL(q(x;ξ)p(xy))(1),但是这里依然有个问题,那就是我们并不知道 p ( x ∣ y ) p(x|y) p(xy),那么在这里怎么办呢? 其实如果知道变分推断的同学,此时应该知道可以怎么做。

首先,将 D K L ( q ( x ; ξ ) ∣ ∣ p ( x ∣ y ) ) D_{KL}(q(x;\xi)||p(x|y)) DKL(q(x;ξ)p(xy))展开,变成 ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( x ∣ y ) d x \int q(x;\xi)log \frac{q(x;\xi)}{p(x|y)}dx q(x;ξ)logp(xy)q(x;ξ)dx
然后通过如下变换:
D K L ( q ( x ; ξ ) ∣ ∣ p ( x ∣ y ) ) = ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( x ∣ y ) d x = ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( y ) p ( x , y ) d x = ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( x , y ) d x + ∫ q ( x ; ξ ) l o g p ( y ) d x = ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( x , y ) d x + l o g p ( y ) D_{KL}(q(x;\xi)||p(x|y))=\int q(x;\xi)log \frac{q(x;\xi)}{p(x|y)}dx= \int q(x;\xi)log \frac{q(x;\xi)p(y)}{p(x,y)}dx \\ =\int q(x;\xi)log \frac{q(x;\xi)}{p(x,y)}dx +\int q(x;\xi)log p(y)dx =\int q(x;\xi)log \frac{q(x;\xi)}{p(x,y)}dx +logp(y)\\ DKL(q(x;ξ)p(xy))=q(x;ξ)logp(xy)q(x;ξ)dx=q(x;ξ)logp(x,y)q(x;ξ)p(y)dx=q(x;ξ)logp(x,y)q(x;ξ)dx+q(x;ξ)logp(y)dx=q(x;ξ)logp(x,y)q(x;ξ)dx+logp(y)
最终,我们得到了上述式子,在这里,我们称 F ( y ; ξ ) = ∫ q ( x ; ξ ) l o g q ( x ; ξ ) p ( x , y ) d x \mathcal{F}(y;\xi) = \int q(x;\xi)log \frac{q(x;\xi)}{p(x,y)}dx F(y;ξ)=q(x;ξ)logp(x,y)q(x;ξ)dx自由能(Free energy),由此我们可以得到如下等式:
F ( y ; ξ ) = D K L ( q ( x ; ξ ) ∣ ∣ p ( x ∣ y ) ) − l o g p ( y ) ≥ − l o g p ( y ) \mathcal{F}(y;\xi) = D_{KL}(q(x;\xi)||p(x|y))-logp(y) \ge -logp(y) F(y;ξ)=DKL(q(x;ξ)p(xy))logp(y)logp(y),其中 − l o g p ( y ) -logp(y) logp(y)称为Surprise。
<a class=自由能公式" />
我们可以从上面这个公式中看到有趣的几点:
1.自由能只和观察数据y以及大脑内部推断外部环境状态的参数 ξ \xi ξ有关,是关于这两个概率分布对应的函数。
2.最小化自由能的同时会最小化Surprise。因为KL散度是≥0的。
3.最小化自由能的同时,Prediction error也会减小。

那么现在有一个问题,这个Surprise是什么?我们最小化自由的能的同时可以最小化它,这有什么作用吗?参考链接——> Surprise是什么?
简单举个例子来说明Surprise是什么,比如你日常喝水,突然被呛到了,这个事情就具有很高的Surprise,因为它发生的概率不是很高,所以当其发生了,就会具有很高的Surprise;所以,我们可以暂时简单的认为,一个事情发生是概率高,那么Surprise就很低,反之则很高。

那么这个Surprise重要吗?当然重要,举个例子,对于生物而言,最根本的任务就是活着,所以我们希望周围的环境是有序的,不是处处Surprise的,否则哪天可能就因为Surprise挂了。
虽然这个Surprise我们是无法直接计算的,但是我们可以通过最小化自由能来保证最小化它
自由能原理的一个灵感来自于生物体为了生存而抵抗无序的必要性,通过最大限度的减少感官数据中非典型事件发生相关的意外。
让我们从熵的角度来看,最小化这个Surprise将会带来什么? 首先根据熵的定义,我们可以得到
H ( p ( y ) ) = − ∫ − ∞ + ∞ p ( y ) l o g ( p ( y ) ) d y H(p(y))=- \int_{-\infty}^{+\infty} p(y)log(p(y))dy H(p(y))=+p(y)log(p(y))dy
通过这个公式,我们可以发现,当我们最小化这个Surprise时候,熵也是被最小化的,也就是说外部状态的长期平均意外会被最小化,说简单的,相比于Surprise大的,可以活得更久的可能性更大.
还有一点就是,最小化这个Surprise,那么 H ( p ( x ) ) H(p(x)) H(p(x))也会变小,也就说明了你的外部状态是稳定的。

OK,现在我们可以通过最小化自由能去提高我们大脑内部的模型于外部环境模型的匹配程度了,但是这并不是我们主要的目标。假设这个模型的已经达到了百分百匹配(虽然不可能),但是我们要的是对未来可预测,也就是prediction error最小,那么为了达到这个目标,我们需要的是知道这个分布: P ( x , y ) = P ( y ∣ x ) P ( x ) P(x,y)=P(y|x)P(x) P(x,y)=P(yx)P(x),这个联合分布也常被称为生成模型。当我们知道这个分布的时候, 我们就知道根据我们推断的环境状态x’分布,未来时刻的感官数据是什么(比如看到什么,听见什么等等)。

OK,那么现在让我们再次更新一下之前的结构图:
在这里插入图片描述
OK,那么这里,我们可以发现,只要最小化这个自由能,那么我们就可以更好的对外部环境进行建模,减少大脑的Prediction Error。那么根据上面定义的公式,我们可以发现只要对两个部分都最小化就可以了,如下图所示:
在这里插入图片描述
其中,对于感知部分(Perceptual part),我们只要找到一个参数 ξ \xi ξ,使得 D K L ( q ( x ; ξ ) ∣ ∣ p ( x ∣ y ) ) D_{KL}(q(x;\xi)||p(x|y)) DKL(q(x;ξ)p(xy))最小即可。
对于行动部分(Active part),我们之前讲了,我们无法直接计算 p ( y ) p(y) p(y),但是我们知道,y是由环境产生的,然后我们的Agent做的动作action u u u可以影响到环境状态,进而影响y。但是我们依然无法计算 p ( y ) p(y) p(y),但是这已经不要紧了,我们只要找到动作 u u u,它可以最小化自由能即可。

在这里,对于感知部分其实讲完了,接下来的重点就是第二部分了。其实这和Judel提出的因果三阶梯有着相应的关系,Perceptual part同时包含了第一阶梯观察,Active Part 对应于第二阶梯干预。最终的整一个模型对应着第三阶梯反事实。


http://www.niftyadmin.cn/n/1060857.html

相关文章

【时间序列分析】04. 自回归模型

Contents自回归模型推移算子齐次常系数线性差分方程通解的收敛性非齐次常系数线性差分方程自回归模型的定义AR(p){\rm AR}(p)AR(p) 模型的平稳解Wold 系数的递推公式自回归模型 推移算子 为了方便对时间序列的讨论&#xff0c;需要对时间序列的时间指标 ttt 引入向后推移算子…

如果判断图片是否存在,可以使用javascript,省资源并且方便简单.

<img src"a.gif" οnerrοr"javascript:this.srcb.gif" />转载于:https://www.cnblogs.com/engine/p/4304026.html

Chromium Graphics Update in 2014(滑动)

原创文章&#xff0c;转载请注明为链接原始来源对于http://blog.csdn.net/hongbomin/article/details/40897433. 摘要&#xff1a;Chromium图形栈在2014年有多项改进。在图形性能和资源消耗方面做了进一步优化&#xff0c;比如ubercompositor的使用&#xff0c;GPU加速的光栅化…

BNUOJ34977夜空中最亮的星(数学,向量的应用)

夜空中最亮的星 Time Limit: 2000msMemory Limit: 65536KB64-bit integer IO format: %lld Java class name: MainPrev Submit Status Statistics Discuss NextFont Size: - Type: None Graph Theory 2-SAT Articulation/Bridge/Biconnected Component …

cookies,sessionStorage和localStorage的区别

共同点&#xff1a;都是保存在浏览器端&#xff0c;且同源的。 区别&#xff1a;cookie数据始终在同源的http请求中携带&#xff08;即使不需要&#xff09;&#xff0c;即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器&#xff…

JS获得URL参数

使用JavaScript获得URL在参数值方法一&#xff1a;function getUrlParam(name) { var reg new RegExp("(^|&)" name "([^&]*)(&|$)");//构造一个含有目标參数的正則表達式对象 var r window.location.search.substr(1).match(reg); //匹配…

PAT:1080. Graduate Admission (30) 部分错误(录取以学校为导向而不是考生志愿为导向导致的错误)...

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int want[106]; //各学校招生人数 struct Student { int GE,GI,sum,rank,ID; int prefer[6]; bool R; //代表该生录取情况 }STU[40066]; bool cmp(Student a,Student b) { i…

【Henu ACM Round #12 B】 Alice, Bob, Two Teams

【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 写个前缀和 和 一个后缀和。 (即前i个字符A所代表的数字的和以及前i个字符B所代表的数字的和。。 然后枚举前i个字符翻转。 求B对应数字的最大值 枚举i..n这些字符翻转 求B对应数字的最大值 两个同时求最大值就…