Python Import Hook

最近看到了__Haoyi Li__大神的macropy项目,整体实现的思路很有意思。hack进python的import过程, 然后用macros的代码展开ast模块parse过的AST。这里有一个基础问题就是pythonimport hook是什么样子的。

KMeans初始化

Kmeans是种相当简单优雅的聚类算法,被用在各种地方,而是各种聚类算法的baseline,也有很多算法用它当做后处理的手段。

三硬币问题-Expectation Propagation解法

某师兄在临死(毕业)前,挖了个坑希望给他闲得XX疼的时候想出来的三硬币问题给出EM、Gibbs Sampling、VBEM、loop bp以及VBEP各种解法。现在他已经成为一名出色的sql工程师了。我算是给出这个Expectation Propagation解法,告慰他的在天之灵,少传播一点负能量。

Laplace Approximation

在进行概率图模型中建模的时候,大多数情况下,我们都会尽量选择共轭先验,这样可以在计算时利用积分积掉一些不好求的部分。还有一些情况是在生成模型中,混入了广义线性模型,带隐变量同时又带有非共轭的模型,这就导致后验分布写出来的形式很难进行处理。比如这篇论文里面,由于使用softmax函数的原因,导致非共轭的情况出现,这种时候,主要采用两种手段,Laplace Approximation或者Sampling的方法。最近碰巧遇到了,就记录一下。

lambda演算到Y-combinator

这篇是我读《the little scheme》之后想记下来一些东西,这本书初看是在介绍简单的scheme的语法,写一些例子,但是在最后几章分别介绍了图灵停机问题和Y combinator,我才发现作者的心思。 \(\lambda\)-Calculus的语法与规约 语法以及自由变量 先给出lambda演算的BNF 然后给出一些例子: 简单的解释一下的话,对于单一的x,就是指一个变量x,而对于(x y)这种形式,意义是将x应用

Gibbs Sampling与B-LDA

之前已经见过了变分推断这种求近似解的手段,它似乎为我们对复杂模型提供了一个漂亮的解法,但是我们也发现变分推断求解过程比较复杂,又比较依赖指数家族共轭分布(虽然非指数家族或者非共轭可解,但是手段更加复杂),MC(蒙特卡洛方法)就提供了另一种手段,其中在概率图模型上常用的就是MCMC(蒙特卡洛马尔科夫)方法,用一句话描述MCMC,就是对于在随机向量\(X\)状态空间上的随机过程\({X(1),...,X(t)}\),如果给出适当的概率转移矩阵并作用于\(X\),就可以构造出马尔可夫链使\(X(t)\)的分布收敛到其真实后验分布.因此,这一类算法称为MCMC算法。其中比较常见的就是Gibbs采样算法。

变分推断与LDA

首先从LDA(Latent Dirichlet Allocation)开始,LDA是文档聚类的生成模型,又是PGM(概率图模型)很典型的一个例子,先看看它的生成图模型(这里并不讨论LDA与PLSA优劣,或者是其他有关文档主题发现模型有关的问题,主要是以LDA为一个例子,学习变分推断这个方法)。

EM与GLAD

GLADJacob Whitehill在2009年NIPS上提出了一个算法,其本质只是采用简化的Item Response Theory中的模型,利用EM算法求解隐含变量,得到题目正确的答案。