博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
online lda 的dirichlet_expectation函数
阅读量:6154 次
发布时间:2019-06-21

本文共 785 字,大约阅读时间需要 2 分钟。

hot3.png

起因

看onlineldavb.py的时候看到求E[log(theta)] 期望的函数如下:

def dirichlet_expectation(alpha):    """For a vector theta ~ Dir(alpha), computes E[log(theta)] given alpha."""    if (len(alpha.shape) == 1):        return(psi(alpha) - psi(n.sum(alpha)))    return(psi(alpha) - psi(n.sum(alpha, 1))[:, n.newaxis])
今天看了半天都不理解为何dirichlet的期望可以由上面的函数来实现,后来看到几个公式之后才明白,这里记录一下过程。

psi函数

psi应该是gamma函数的一阶导数,有以下代码可以理解:

>>> from scipy import special>>> x = [2, 3, 25.5]>>> special.polygamma(1, x)array([ 0.64493407,  0.39493407,  0.03999467])>>> special.polygamma(0, x) == special.psi(x)array([ True,  True,  True], dtype=bool)
polygamma是gamma函数的N阶导数。

公式推导

\Psi(x) = \frac{d}{dx} \ln(\Gamma(x))

其它细节可参考链接:http://www.hiit.fi/u/ahonkela/dippa/node95.html

(话说osc如何插入公式?)

转载于:https://my.oschina.net/dancing/blog/187365

你可能感兴趣的文章
关于C#导出 文本文件
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
Javascript一些小细节
查看>>
禁用ViewState
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
HTTP缓存应用
查看>>
KubeEdge向左,K3S向右
查看>>
DTCC2013:基于网络监听数据库安全审计
查看>>
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>