最近有份课程作业要求熟悉PLSA,于是就开起金山词霸,钻研老外的牛B语义分析工具——PLSA
背景:
自然语言和文本处理是人工智能和机器学习方面的一个重大的挑战。在这个领域中的任何巨大进步都会对信息检索,信息过滤,智能接口,语言识别,自然语言处理,机器学习产生重大的影响。机器学习的主要难点在于“被阐述”的词法和“真正要表达”的语义的区别。产生这个问题的原因主要是:1.一个单词可能有多个意思和多个用法。2.同义词和近义词,而且根据不同的语境或其他因素,不同的单词也有可能表示相同的意思。
LSA是处理这类问题的著名技术。其主要思想就是映射高维向量到潜在语义空间,使其降维。LSA的目标就是要寻找到能够很好解决实体间词法和语义关系的数据映射。正是由于这些特性,使得LSA成为相当有价值并被广泛应用的分析工具。PLSA是以统计学的角度来看待LSA,相比于标准的LSA,他的概率学变种有着更巨大的影响。
概念:
概率潜在语义分析基于双模式和共现的数据分析方法延伸的经典的统计学方法。概率潜在语义分析应用于信息检索,过滤,自然语言处理,文本的机器学习或者其他相关领域。概率潜在语义分析与标准潜在语义分析的不同是,标准潜在语义分析是以共现表(就是共现的矩阵)的奇异值分解的形式表现的,而概率潜在语义分析却是基于派生自LCM的混合矩阵分解。考虑到word和doc共现形式,概率潜在语义分析基于多项式分布和条件分布的混合来建模共现的概率。所谓共现其实就是W和D的一个矩阵,所谓双模式就是在W和D上同时进行考虑。
PLSA的缺点:
PLSA有时会出现过拟合的现象。所谓过拟合(Overfit),是这样一种现象:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据。此时我们就叫这个假设出现了overfit的现象。出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。
解决办法,要避免过拟合的问题,PLSA使用了一种广泛应用的最大似然估计的方法,期望最大化。PLSA中训练参数的值会随着文档的数目线性递增。PLSA可以生成其所在数据集的的文档的模型,但却不能生成新文档的模型。
关于SVD:
LSA的基本思想就是把高维的文档降到低维空间,那个空间被称为潜在语义空间。这个映射必须是严格线性的而且是基于共现表(就是那个矩阵啦)的奇异值分解。
LSA的算法:
PLSA是LSA的概率学延伸,所以我们首先要知道LSA的算法。
假设有N篇的document,D={d_1, … ,d_N},和M个words,W={w_1, … ,w_M},再设置K个潜在类Z={z_1, … ,z_K}。
首先,建立一个N*M的项——文档矩阵,统计频率。矩阵A中的每一项分别对应了DiWj出现的频率。这个就是前面说的共现表。
接着,对这个矩阵做奇异值分解。这个是奇异值分解的公式。A(n*m) = U(n*n) E(n*m) V(m*m)
保留奇异值矩阵E的K个特征值(奇异值是特征值的非负平方根)。然后求矩阵A的共轭转置A*,然后奇异值分解A*。
A*(n*m) = U(n*k) E(k*k) V(k*m)
A* ≈ A
这时,一个项(term)其实就是K维向量空间的的一个向量。
把意义相同的项(term)做同一映射。
到这里就很清楚的看出来,LSA没有建立统计学基础。但是PLSA就解决了这个问题。
PLSA:
PLSA是更为先进的方法。他解决了同义词和多义词的问题,利用了强化的期望最大化算法(EM)来训练隐含类(潜在类)。而且相对了LSA,有了坚实的统计学基础。
PLSA的建模——层面模型
层面模型就是关联于潜在类Z的共现表的潜在可变模型。在层面模型中,文档被视为潜在的K个层面的混合。每一个层面就是word对于z(潜在类)的概率分布。
PLSA的建模——数据的共现
对于每一组(w,d)都使之与潜在变量z关联。
PLSA的建模——预测words
已经的是文档的概率,首先要计算潜在类Z根据条件概率D,生成单词W根据条件概率Z。
PLSA的公式:
P(w,d) = |
∑ |
P(c)P(d | c)P(w | c) = P(d) |
∑ |
P(c | d)P(w | c) |
注:这里的C和上面说的Z是一样的。
公式解析:第一个公式是对称公式,在这个公式中,W和D都是以相同的方式(都用了W和D基于C的条件概率)通过潜在类C处理的。第二个公式是非对称公式。在这个公式中,对于每一个D,先根据D的条件概率计算C,然后根据C的条件概率计算W。事实上,这个公式可以扩展成计算任何一对离散变量的共现。因为我们的W和D是已知的,但是Z是未知的,所以我们的重心放在求Z上。那么如何求Z呢?
最大似然估计:
概率学中有很多隐含的量是未知的,我们处理的办法有很多种,可以根据经典统计学,也有很多现在统计学的分支,比较著名的是贝叶斯统计学。
在PLSA中,我们使用最大似然估计来训练隐含量。最大似然估计中比较常用的算法就是期望最大化算法。期望最大化算法分为两步:
1. Expectation Step——隐含参数的估计
2. Maximization Step——确定实际参数,然后根据实际参数做最大似然估计。
关于过拟合的问题,过拟合的概念已经提到了,在PLSA中,我们通过修改EM(期望最大化)的算法来避免这个问题,我么把这个算法称为强化的期望最大化算法(tempered EM)。
强化的期望最大化算法中引入了控制参数beta。
Beta值起始是1,紧着逐渐减少。引入beta的目的就是为了避免过拟合的问题,在beta中,过拟合和不充分拟合的状态被定义。具体的算法是:
让beta的初始值为1,然后根据待训练数据来测试模型,如果成功,则使用该beta,如果不成功,则收敛。收敛的意思就是使得beta = n*beta, n<1。
评论