1、隐马尔可夫模型HMM
1.1Sequence2Sequence
什么是Seq2Seq问题呢?简单来说,就是输入是一个序列,输出也是一个序列。输入和输出的序列可以相等,也可以不相等。在本文中,可以先假设输入输出序列相等。
1.2 HMM
这里用了一个通俗易懂的例子来解释HMM模型,POS tagging,词性标注。
PN表示专有名词Proper Noun
V表示动词
D 定冠词
N名词
通常情况下,我们要生成1个句子,可以分为2个步骤。
一、根据语法设计好一个词性序列
二、根据字典中的词汇填充生成一个句子。
举例子来说,
图片表示,开始start后面接的词为PN的概率是0.4,接动词V的概率是0.1,接定冠词D的概率是0.5。依次类推。这样,第一步构思的词性顺序为 PN V D N的概率则为0.4x0.8x0.25x0.95x0.1。
类似地,在词性结构已经是PN V D N的第一步的基础上,生成的句子为 John saw the saw的概率为0.2x0.17x0.63x0.17。
那怎么计算第2步的概率呢?
计算方法如上图所示,其中y表示词性,x表示单词。我们是根据词汇x来求目标词性y,目标词性y是隐含的变量,这也是HMM中隐的由来。
现在问题只在于说如何计算。其实很简单,可以直接根据训练数据将这些概率统计出来。
如上图所示,词性
s
′
s'
s′接在词性
s
s
s后面的概率为训练数据中词性s后面出现词性
s
′
s'
s′的次数除以词性s出现的总次数。
词性s的单词为特定单词t的概率则为训练数据中所有单词为t且词性属于s的次数除以词性s出现的总次数。
通过对训练数据中的相关词汇和词性进行统计,便可计算出相应的概率。
1.3 Viterbi算法
上述可知,假设有
∣
S
∣
|S|
∣S∣个词性,序列长度为L。那么该序列的词性可能存在
∣
S
∣
L
|S|^{L}
∣S∣L种答案。计算复杂度很高。而Vertibi算法则是专门解决该问题而衍生出的优化算法。
概括来说,HMM可分为上述3个步骤。
1.3 HMM模型的缺点
举个例子来说,假如训练数据中,
y
l
−
1
y_{l-1}
yl−1为名词N,后面接动词V的概率为0.9,接定冠词D的概率为0.1。而在给定词性为动词V的条件下,该单词为单词a的概率为0.5,为单词c的概率为0.5。在给定词性为D的条件下,为单词a的概率为1。
现在我们假设出现了该种场景,第一个单词为N,后一个单词为a,求后一个单词的词性预测。
这个例子比较简单,可以直接穷举出来。假如该单词词性
y
l
=
D
y_{l}=D
yl=D,那么概率p=0.11=0.1。
假如该单词词性
y
l
=
V
y_{l}=V
yl=V,p=0.90.5=0.45。因此,答案应该为V。
这个答案V看上去是没有问题的,但是假设我们的训练数据是上述这种情况,完全满足Transition probability 和Emission probability情况。我们预测的最佳答案是N-V-a。
但是,我们的训练数据中原本就出现了N-D-a这种样本。HMM模型所给的答案是训练数据中从未见过的情况,因为其概率最大。这种情况我们认为HMM预测的更好还是原数据更好呢?
答案显然是原数据中出现的样本最好。由此引申出HMM模型的缺陷问题:可能会预测出训练数据中从未出现过的结果。在训练数据为小样本数据集时其实时有一定好处的,因为这样泛化能力更强。
要想解决HMM的缺陷,有2种解决思路,一是使用更为复杂的模型,而是使用条件随机场CRF。文章来源:https://www.toymoban.com/news/detail-665331.html
2、CRF
2.1 CRF模型
我们首先给出CRF的模型,先不纠结如何来的,后续会一一证明。
P
(
y
∣
x
)
=
P
(
x
,
y
)
∑
y
′
P
(
x
,
y
′
)
P(y|x)=\frac{P(x,y)}{\sum_{y'}P(x,y')}
P(y∣x)=∑y′P(x,y′)P(x,y)
可根据前面的HMM部分推到得出。字面意思也很好理解,词性为y,词汇为x的组合概率除以词汇为x,词性为所有可能的y的概率之和,便可得到在给定词汇x的情况下词性为y的概率。
CRF从模型上咋一看,和HMM简直时两个东西。但实际上,只是表达形式不同,建模的思想还是很接近的。
上面公式为HMM模型种的概率推导,取log后可将相乘的形式方便地转化为相加的形式。我们将上面公式种相加的4项一一拆解开。
首先看最后一项,s代表词性,t代表词汇。公式所想表达的含义为,在一个序列长度为l
的句子中,在给定每个词性为y的情况下词汇为x的的概率取对数之和等于给定词性s情况下取词汇t的概率对数之和乘以出现的次数。
上面的公式还是很复杂的,必须结合这个例子来看下。结合例子就很容易看懂上述的公式。
依此类推,另外3个表达式可以同样进行表示。
最后,便从这里推导出了CRF的模型表达式。
这里注意,我们在训练时并不会对w进行范围限制。log函数取值范围为负无穷到正无穷。我们这里CRF模型最后用的并不是等号,而是正比符号。
我们可以一步一步分解一下
ϕ
(
x
,
y
)
\phi(x,y)
ϕ(x,y),看下其中的结构组成到底时什么。可分解为2部分,第一部分时关于tags和words之间的关系。第二部分是关于tags之间的关系。
第一部分对应的为
N
s
,
t
(
x
,
y
)
N_{s,t}(x,y)
Ns,t(x,y)。
第二部分则对应于
N
s
t
a
r
t
,
s
(
x
,
y
)
,
N
s
,
s
′
(
x
,
y
)
,
N
s
,
e
n
d
(
x
,
y
)
N_{start,s}(x,y),N_{s,s'}(x,y),N_{s,end}(x,y)
Nstart,s(x,y),Ns,s′(x,y),Ns,end(x,y)。文章来源地址https://www.toymoban.com/news/detail-665331.html
2.2 CRF模型训练
到了这里,关于李宏毅机器学习笔记:结构学习,HMM,CRF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!