machine learning
文章平均质量分 73
July_Zh1
计算机硕士在读,关注模式识别,计算机视觉,图像处理。
展开
-
LDA主题模型学习笔记3:变分推断(E-step)
上文《LDA主题模型学习笔记:求解隐变量和模型参数(EM思想)》中在E-step我们要用变分推断求解如下的优化问题: (γ∗,ϕ∗)=argmin(γ,ϕ)D(q(θ,z|γ,ϕ)||p(θ,z|w,α,β))(\gamma^*,\phi^*)=argmin_{(\gamma,\phi)} D(q(\theta,\mathbf z|\gamma,\phi)||p(\theta,\mathbf z|原创 2015-06-10 09:44:42 · 8825 阅读 · 10 评论 -
torch学习笔记3.2:实现自定义模块(cpu)
在使用torch时,如果想自己实现一个层,则可以按照《torch学习笔记1:实现自定义层》 中的方法来实现。但是如果想要实现一个比较复杂的网络,往往需要自己实现多个层(或类),并且有时可能需要重写其他模块中已有的函数来达到自己的目的,如果还是在nn模块中添加,会比较混乱,并且不利于本地git仓库统一管理,这个时候,我们可以自己实现一个像nn一样的模块,在代码中使用时 require即可。我们来实现原创 2016-11-06 22:17:38 · 1991 阅读 · 0 评论 -
torch学习笔记3.1:实现自定义模块(lua)
在使用torch时,如果想自己实现一个层,则可以按照《torch学习笔记1:实现自定义层》 中的方法来实现。但是如果想要实现一个比较复杂的网络,往往需要自己实现多个层(或类),并且有时可能需要重写其他模块中已有的函数来达到自己的目的,如果还是在nn模块中添加,会比较混乱,并且不利于本地git仓库统一管理,这个时候,我们可以自己实现一个像nn一样的模块,在代码中使用时 require即可。我们来实现一原创 2016-11-05 20:55:57 · 2885 阅读 · 0 评论 -
torch学习笔记1:实现自定义层
当我们要实现自己的一些idea时,torch自带的模块和函数已经不能满足,我们需要自己实现层(或者类),一般的做法是把自定义层加入到已有的torch模块中。实现lua实现如果自定义层的功能可以通过调用torch中已有的函数实现,那就只需要用lua实现,torch的文档中也提供了简单的说明。 现在我们来实现一个NewClass: - 在torch目录下(torch/extra/nn/)创建文件Ne原创 2016-10-21 16:16:18 · 3674 阅读 · 0 评论 -
数据标准化与PCA白化原理探索
PCA是实验中很常用的工具,一般用来做降维,它的实现有很多很多种,其中牵涉相当多的细节,笔者在实现PCA时常常有困惑,为什么查到的各种代码总有一些不同的trick,有时候对样本提前归一化?有时候又要减均值?这些操作对于PCA降维效果到底有什么影响?这篇文章从PCA白化入手,探究这些trick背后的原因。1 Whitening (白化)白化1有两种,一种是PCA Whitening,一种是ZCA Wh原创 2016-05-14 14:13:25 · 4857 阅读 · 0 评论 -
GMM高斯混合模型学习笔记(EM算法求解)
提出混合模型主要是为了能更好地近似一些较复杂的样本分布,通过不断增加component个数,可以任意地逼近任何连续的概率分布,所以我们认为任何样本分布都可以用混合模型来建模。因为高斯函数具有一些很实用的性质,所以高斯混合模型被广泛地使用。 GMM与kmeans类似,也是属于clustering,不同的是,kmeans是把每个样本点聚到其中一个cluster,而GMM是给出这些样本点到每个c原创 2015-06-11 23:02:55 · 5223 阅读 · 0 评论 -
kmeans
kmeans是很经典的一种聚类方法,也比较简单,本文主要记录kmeans的思路,代码以后再补。主要参考资料:wikihttp://en.wikipedia.org/wiki/K-means_clustering漫谈clustering之kmeanshttp://blog.pluskid.org/?page_id=781,简介a.目标:kmeans算法原创 2015-05-16 10:36:28 · 953 阅读 · 0 评论 -
EM算法学习笔记1:简介
EM(Expectation Maximization)算法是以迭代的方式来解决一类最大似然(maximum likelihood)问题的方法,这类问题通常比较难直接求解,通常需要引入隐变量,在假设隐变量已知的情况下,再求最大似然解,求解时隐变量一般用它的期望代替,这样反复迭代,直到收敛。 现在观测到一个样本集X\mathbf X,它对应隐变量集为Z\mathbf Z,模型参数为θ\theta原创 2015-06-11 14:56:49 · 1258 阅读 · 0 评论 -
LDA主题模型学习笔记3.5:变分参数推导
现在来推导一下得到变分参数更新式的过程,这一部分是在论文的附录中,为避免陷入过多细节而影响整体理解,可以在刚开始学习LDA的时候先不关注求解细节。首先要把L写成关于γ,ϕ\gamma,\phi函数。根据之前我们对L的定义:L(γ,ϕ;α,β)=Eq[logp(θ,z,w|α,β)]−Eq[logq(θ,z)]L(\gamma,\phi;\alpha,\beta)=E_q[logp(\theta,\m原创 2015-06-12 16:53:54 · 3977 阅读 · 12 评论 -
EM算法学习笔记2:深入理解
文章《EM算法学习笔记1:简介》中介绍了EM算法的主要思路和流程,我们知道EM算法通过迭代的方法,最后得到最大似然问题的一个局部最优解。本文介绍标准EM算法背后的原理。我们有样本集X,隐变量Z,模型参数θ\theta,注意他们3个都是向量,要求解的log似然函数是lnp(X|θ)lnp(X|\theta),而这个log似然函数难以求解,我们假设隐变量Z已知,发现lnp(X,Z|θ)lnp(X,Z|\原创 2015-06-18 20:21:04 · 2893 阅读 · 0 评论 -
LDA主题模型学习笔记4:求解模型参数(M-step)
这一步,我们根据E-step得到的γ,phi\gamma,phi,最大化L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta),得到α,β\alpha,\beta.1,拉格朗日乘数法求解β\beta 首先把L(γ,ϕ;α,β)L(\gamma,\phi;\alpha,\beta)简化,只保留与β\beta有关的部分。因为β\beta是每一行存一个主题的词分布,所以每一行的原创 2015-07-02 11:09:15 · 3152 阅读 · 0 评论 -
ADC方法(asymmetric distance computation)
《Aggregating local descriptors into a compact image representation》论文笔记提取到VLAD特征后,要先用PCA降维,然后再用ADC方法对每一幅图像建立索引,这里先介绍ADC方法。ADC方法是对图片库中,除query vector x之外的所有图的vector Y=y1,y2...ynY={y_1,y_2...y_n},做kmeans产原创 2015-07-25 11:09:45 · 3454 阅读 · 2 评论 -
PCA(principal component analysis)主成分分析法
《Aggregating local descriptors into a compact image representation》论文笔记 在论文中,提取到VLAD特征后,要对特征向量进行PCA降维,就是用一个大小为D’ * D的矩阵M,对VLAD特征向量x做变换,降维后的vector是x’ = Mx,x’的大小是D’维。矩阵M是由原样本的协方差矩阵的D’个特征向量构成。 为什么M要是特征原创 2015-07-25 22:10:40 · 2761 阅读 · 0 评论 -
LDA主题模型学习笔记5:C源码理解
1,说明本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做注释,代码可在这里下载:https://github.com/Blei-Lab/lda-c这份代码实现论文《Latent Dirichlet Allocation》中介绍的LDA模型,用变分EM算法求解参数。为了使代码在vs2013中运行做了一些微小改动,但不影响原代码的逻辑。vs2013工程可在我的资源中原创 2015-07-02 14:29:07 · 4551 阅读 · 9 评论 -
LDA主题模型学习笔记2:求解隐变量和模型参数(EM思想)
上一篇《LDA主题模型学习笔记1:模型建立》中,我们已经对一个文档集的生成过程建立了三层的LDA主题模型,模型参数是α,β\alpha,\beta,引入了隐变量θ,z\theta,\mathbf z,接下来就是要确定这些参数,也就是参数估计问题。 原始论文《Latent Dirichlet Allocation》中,作者使用EM算法来估计参数,只是由于模型本身有些复杂,在E-step求解隐原创 2015-06-07 22:48:30 · 9870 阅读 · 3 评论 -
LDA主题模型学习笔记1:模型建立
LDA于2003年在论文《Latent Dirichlet Allocation》中提出,是一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出,从而根据主题分布进行文本分类原创 2015-06-06 23:37:21 · 10640 阅读 · 3 评论 -
torch学习笔记3.3:实现自定义模块(gpu)
在使用torch时,如果想自己实现一个层,则可以按照《torch学习笔记1:实现自定义层》 中的方法来实现。但是如果想要实现一个比较复杂的网络,往往需要自己实现多个层(或类),并且有时可能需要重写其他模块中已有的函数来达到自己的目的,如果还是在nn模块中添加,会比较混乱,并且不利于本地git仓库统一管理,这个时候,我们可以自己实现一个像nn一样的模块,在代码中使用时 require即可。我们来实现原创 2016-11-06 22:36:24 · 2568 阅读 · 0 评论