Expectation Propagation (EP)

Expectation Propagation (EP) 是一个迭代算法,其中使用一个密度概率g(\theta)(包含具体参数组)来近似目标概率密度f(\theta)。类似于重要性抽样。

EP属于一组消息传递算法,该算法使用一组局部推断推断目标密度。首先我们假设目标概率密度f(\theta)有一些便利的因式分解:

f(\theta) \propto \prod ^{K}_{k=0}f_k(\theta)

在贝叶斯推理中,目标概率密度f通常是后验概率p(\theta|y),举个例子其中可以将因子k=0分配给先验p(\theta),并将因子从1到K当作似然函数(将数据划分成k个部分p(y_k|\theta),且每一个都是独立于给定的模型参数)。消息传递算法的工作原理是用概率密度g(\theta)

迭代逼近目标概率密度 f(\theta)

g(\theta) \propto \prod ^{K}_{k=0}g_k(\theta)

 并且使用一些合适的初始化所有的g_k(\theta)。其中因子f_k(\theta)与近似的g_k(\theta)合起来称为位置群,而近似的分布g(\theta)被称为全局近似。

 因为分成了K份,对于算法的每次迭代,加上先验,则有k=0,...,K。我们采用当前的近似函数g(\theta)同时将目标f(\theta)中的因子f_k(\theta) 替换成 g_k(\theta),这样定义了 cavity distribution 如下:

g_{-k}(\theta) \propto \frac{g(\theta)}{g_k(\theta)}

 和一个tilted distribution:

g_{\setminus k}(\theta)\propto f_k(\theta)g_{-k}(\theta)

 该算法首先构造了一个对 tilted distribution (g_{\setminus k}(\theta))的近似值g^{new}(\theta),之后用g_k^{new}(\theta) \propto g^{new}(\theta)/g_{-k}(\theta) 来更新对于目标因子f_k(\theta)的近似值。按顺序活并行迭代这些更新如一下算法所示:

 在某些来源中,上述步骤2b有更严格的表述:

g_k^{new}(\theta)=argmin_{g_k(\theta)}D(f_k(\theta)g_{-k}(\theta)\left | \right |g_k(\theta)g_{-k}(\theta))

 其中D\left ( \cdot ||\cdot \right )表示离散度方法。在定义中,该算法可以更自由地实现任何近似方法,而不必最小化任何发散。

全局近似g(\theta)和位置近似g_k(\theta)被限制在一个选定的指数族中,例如多元正态分布。由于步骤2b通常被定义了,位置近似g_k(\theta)被更新,导致产生的KL离散度是KL(f_k(\theta)g_{-k}(\theta)||g_k(\theta)g_{-k}(\theta))最小的。

 

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.csdn.net/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新待开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值