Machine Learning - 李宏毅 学习笔记 (20)

基于语法(根据脑中内建的语法)生成POS序列:假设大脑中的马尔科夫链,放在句首的词性概率,进行随机采样,继续根据采样结果后个词的词性概率采样,循环直至结束。

示例给的句子词性是PN V D N(专有名词,动词,冠词,名词),则用概率形式表示为\(P("PN V D N")=0.4 * 0.8 * 0.25 * 0.95 * 0.1\)(包括结束)

步骤二:

基于词典根据词序生成一个句子:根据词性找出词典中对应词汇,从不同词性集合中采样出不同词汇出现的概率。

示例给的句子是"John saw the saw",即\(P("John saw the saw"|"PN V D N")=0.2 * 0.17 * 0.63 * 0.17\)

HMM可以描述为利用POS标记序列得到对应句子的几率,即:\(P(x,y)=P(y) \cdot P(x|y) = P("PN V D N") \cdot P("John saw the saw"|"PN V D N")\)

隐马尔科夫模型的一般性解释:

Step1是转移概率,即\(P(y)=P(y^{1}|start) \cdot \prod P(y^{k+1|y}) \cdot P(end|y^{L})\)

Step2是发散概率,即\(P(x|y)= \prod P(x^{k}|y^{k})\)

概率估计:对于上述概率\(P(y^{k+1|y})\)\(P(x^{k}|y^{k})\),从训练数据中得到

转移概率等价于现在训练集里面s出现的次数除以s后面跟s\'的次数

发散概念等价于s在整个词汇中出现的次数除以s词性的目标词汇次数

词汇标记:

任务是计算\(P(x,y)\),给定x(Observed),发现y(Hidden)。

$y =argmaxP(y|x) -> argmax\frac{P(x,y)}{P(x)} -> argmaxP(x,y) \(,所以转化为只要穷举所有的\)P(x,y)$,找出使其几率最大的y即可。

Viterbi维特比算法:应用非常广泛的动态规划算法,在求解隐马尔科夫、条件随机场的预测概率计算等问题常用。

假设有\(|S|\)个标记,序列\(y\)的长度为\(L\);有可能的\(y\)\(|S|^{L}\)(空间极为庞大)

利用维特比算法解决\(y=argmaxP(x,y)\)复杂度为\(O(L|S|^{2})\)

把上述步骤做个总结:

模型:\(F(x,y)=P(x,y)=P(y)P(x|y)\)

推导:给定x,求出最大y,使得定义函数值达到最大(即维特比算法):\(y=argmaxP(x,y)\)

训练:从训练集中得到\(P(y)\)\(P(x|y)\),该过程就是计算概率的问题或是统计语料库中词频的问题

缺点:可以通过提高模型的复杂度弥补该缺点,但是要尽量避免过拟合

在推导过程中对\(y=argmaxP(x,y)\),我们需要\((x,\hat{y}):P(x,\hat{y})>P(x,y)\),对此HMM可能无法处理该类问题

通常情况下,隐马尔可夫模型是判断未知数据出现的最大可能性,即\((x,y)\)在训练数据中从未出现过,但可能有较大的概率\(P(x,y)\)

当训练数据很少的时候,使用隐马尔可夫模型,其性能表现是可行的,但当训练集很大时,性能表现较差。

隐马尔可夫模型会产生未卜先知的情况,因为转移概率和发散概率,在训练时是分开建模的,两者是相互独立的,我们也可以用一个更复杂的模型来模拟两个序列之间的可能性,但要避免过拟合。所以下述引入条件随机场,模型与马尔科夫模型一样,但是可以克服其缺点。

Conditional Random Field CRF条件随机场

条件随机场模型描述的也是\(P(x,y)\)问题,但是表现形式不一样:\(P(x,y) \propto exp(w \cdot \phi (x,y))\),其中\(\phi(x,y)\)是一个特征向量,\(w\)是一个权重向量,可以从训练数据中学习得到,\(exp(w \cdot \phi (x,y))\)总是正的,可能大于1。

所以有:\(P(x,y)=\frac{exp(w \cdot \phi (x,y))}{R}\)\(P(y|x)=\frac{P(x,y)}{ΣP(x,y^{r})}= \frac{exp(w \cdot \phi{x,y})}{Z(x)}\),其中\(Σexp(...)\)仅与\(x\)有关,与\(y\)无关。

其实HMM和CRF模型上实则是一个东西:

HMM模型:\(P(x,y)=P(y^{1}|start) \cdot \prod P(y^{k+1|y}) \cdot P(end|y^{L}) \prod P(x^{k}|y^{k})\)

对其取对数log得到:\(logP(x,y)=logP(y _ {1}|start) + ΣlogP(y _ {l+1}|y _ {l}) + logP(end|y _ {L}) + ΣlogP(x _ {l}|y _ {l})\),其中$ ΣlogP(x _ {l}|y _ {l}) = ΣlogP(t|s) \cdot N _ {s,t}(x,y) \(,Σ表示穷举所有可能的标记`s`和所有可能的单词`t`,\)logP(x _ {l}|y _ {l})\(表示给定标记`s`的单词取对数的形式,\)N _ {s,t}(x,y)$表示为单词t被标记成s,在(x,y)对中总共共出现的次数 - x是实词,y是词性

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsszd.html