概率图模型
把概率模型用图的方式表示出来。
条件随机场(crf)工业界用的最多,能很自然的与深度学习融合到一起。
从logistic到crf
假设一共有
n
n
n个标签类别
{
y
i
}
i
=
1
n
\left\{y_{i}\right\}_{i=1}^{n}
{yi}i=1n,
m
m
m个特征,
{
x
i
}
i
=
1
m
,
x
1
=
1
\left\{x_{i}\right\}_{i=1}^{m}, x_{1}=1
{xi}i=1m,x1=1,这里
x
1
x_1
x1是偏置。所以有:
p
(
y
1
∣
x
)
=
1
Z
(
x
)
exp
(
∑
i
=
1
m
θ
1
,
i
x
i
)
p
(
y
2
∣
x
)
=
1
Z
(
x
)
exp
(
∑
i
=
1
m
θ
2
,
i
x
i
)
⋮
p
(
y
n
∣
x
)
=
1
Z
(
x
)
exp
(
∑
i
=
1
m
θ
n
,
i
x
i
)
\begin{gathered} p\left(y_{1} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\sum_{i=1}^{m} \theta_{1, i} x_{i}\right) \\ p\left(y_{2} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\sum_{i=1}^{m} \theta_{2, i} x_{i}\right) \\ \vdots \\ p\left(y_{n} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\sum_{i=1}^{m} \theta_{n, i} x_{i}\right) \end{gathered}
p(y1∣x)=Z(x)1exp(i=1∑mθ1,ixi)p(y2∣x)=Z(x)1exp(i=1∑mθ2,ixi)⋮p(yn∣x)=Z(x)1exp(i=1∑mθn,ixi)
每个
y
i
y_i
yi对应一套参数
{
θ
j
i
}
i
=
1
m
\left\{\theta_{j i}\right\}_{i=1}^{m}
{θji}i=1m,每套参数之间没有联系。
Z
(
x
)
Z(\mathbf{x})
Z(x)是归一化参数,需要保证输出的离散值是概率。现在我们将上述公式变形,把上面多个公式用一个公式表示:
p
(
y
j
∣
x
)
=
1
Z
(
x
)
exp
(
I
(
j
=
k
)
∑
k
=
1
n
∑
i
=
1
m
θ
k
,
i
x
i
)
I
(
j
=
k
)
I
=
{
1
j
=
k
0
j
≠
k
\begin{gathered} p\left(y_{j} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\mathbf{I}(j=k) \sum_{k=1}^{n} \sum_{i=1}^{m} \theta_{k, i} x_{i}\right) \\ \mathbf{I}(j=k)^{\mathrm{I}}= \begin{cases}1 & j=k \\ 0 & j \neq k\end{cases} \end{gathered}
p(yj∣x)=Z(x)1exp(I(j=k)k=1∑ni=1∑mθk,ixi)I(j=k)I={10j=kj=k
I
\text { I }
I 是示性函数,它虽然简单,但是它是建立起不同标签联系的桥梁。我们将公式(2)进一步等价改造成下面的形式:
p
(
y
j
∣
x
)
=
1
Z
(
x
)
exp
(
∑
p
=
(
1
,
1
)
n
,
m
θ
p
f
p
(
y
j
,
x
)
)
p\left(y_{j} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\sum_{p=(1,1)}^{n, m} \theta_{p} f_{p}\left(y_{j}, \mathbf{x}\right)\right)
p(yj∣x)=Z(x)1exp⎝⎛p=(1,1)∑n,mθpfp(yj,x)⎠⎞
θ
p
\theta_{p}
θp是需要学习的参数,
f
p
f_{p}
fp是人工定义的“特征”,Logistic模型是上述公式的特殊形式。为了和logistic等价,
f
p
f_{p}
fp的定义如下:
f
(
k
,
i
)
(
y
j
,
x
)
=
I
(
j
=
k
)
x
i
f_{(k, i)}\left(y_{j}, \mathbf{x}\right)=\mathbf{I}(j=k) x_{i}
f(k,i)(yj,x)=I(j=k)xi
这个特征函数与标签有关,因此logistic定义的特征只和当下的标签有关。这个假设并不一定有意义,对多数分类问题有意义,但是对有一些分类问题却不是。
上面公式可以进一步改写:
p
(
y
j
∣
x
)
=
1
Z
(
x
)
exp
(
∑
p
=
1
n
m
θ
p
f
p
(
y
j
,
x
)
)
p\left(y_{j} \mid \mathbf{x}\right)=\frac{1}{Z(\mathbf{x})} \exp \left(\sum_{p=1}^{n m} \theta_{p} f_{p}\left(y_{j}, \mathbf{x}\right)\right)
p(yj∣x)=Z(x)1exp(p=1∑nmθpfp(yj,x))
注意一共定义了
n
m
nm
nm个“特征”。
现在我们考虑复杂些的序列标注问题,标签为
y
ˉ
=
(
y
1
,
y
2
,
⋯
,
y
T
)
\bar{y}=\left(y^{1}, y^{2}, \cdots, y^{T}\right)
yˉ=(y1,y2,⋯,yT),输入也是一个序列:
X
‾
=
(
x
1
,
x
2
,
⋯
,
x
T
)
\overline{\mathbf{X}}=\left(\mathbf{x}^{\mathbf{1}}, \mathbf{x}^{\mathbf{2}}, \cdots, \mathbf{x}^{\mathbf{T}}\right)
X=(x1,x2,⋯,xT)
这里的
x
1
,
x
2
,
⋯
x_1, x_2, \cdots
x1,x2,⋯是一列样本,比如一段一个人的面部视频,
x
1
x_1
x1表示第一张图片。然后让每一张图片打标签。输入输出都是序列。
现在需要输出条件概率:
p
(
y
ˉ
∣
x
‾
)
p(\bar{y} \mid \overline{\mathbf{x}})
p(yˉ∣x)
如果用Logistic对这个序列进行建模,那么就会长成这个样子:
p
(
y
ˉ
∣
x
‾
)
=
1
Z
ˉ
(
x
)
∏
t
=
0
T
exp
(
∑
p
=
1
n
m
θ
p
f
p
(
y
t
,
x
t
)
)
p(\bar{y} \mid \overline{\mathbf{x}})=\frac{1}{\bar{Z}(\mathbf{x})} \prod_{t=0}^{T} \exp \left(\sum_{p=1}^{n m} \theta_{p} f_{p}\left(y^{t}, \mathbf{x}^{\mathbf{t}}\right)\right)
p(yˉ∣x)=Zˉ(x)1t=0∏Texp(p=1∑nmθpfp(yt,xt))
logistic定义的“特征”至于当下的标签有关。也就是
y
t
y^{t}
yt只决定于
x
t
\mathbf{x}^{\mathbf{t}}
xt。但是这显然不一定合理,因为视频是一系列的图片,需要根据图片来判断当下这个人在做什么样的行为,如果只看当下时刻的图片特征,如果此人张着嘴巴,可能是在吃饭,可能是在唱歌,如果能知道上一张图片对应的行为标签,比如是唱歌,那么当下这个图片对应的行为就有很大概率时在唱歌。所以,对于序列标注问题,“特征”应该和上一个时刻的标签有关。
【理论上应该和过去都相关,但是我们这里做了一个很强的马尔科夫假设,即只和上一个时刻相关,这样能大幅度减少模型的复杂度。】
为了使的“特征”
f
p
f_p
fp和上一个时刻标签有关系,我们将logistic的模型进行一般化:
p
(
y
ˉ
∣
x
‾
)
=
1
Z
ˉ
(
x
)
∏
t
=
1
T
exp
(
∑
p
=
1
P
θ
p
f
p
(
y
t
,
y
t
−
1
,
x
t
)
)
p(\bar{y} \mid \overline{\mathbf{x}})=\frac{1}{\bar{Z}(\mathbf{x})} \prod_{t=1}^{T} \exp \left(\sum_{p=1}^{P} \theta_{p} f_{p}\left(y^{t}, y^{t-1}, \mathbf{x}^{\mathbf{t}}\right)\right)
p(yˉ∣x)=Zˉ(x)1t=1∏Texp(p=1∑Pθpfp(yt,yt−1,xt))
式(9)是线性链CRF的一般定义,其包含了logistic,也就是说,Logistic是上式的一种特殊情况。
朴素贝叶斯和crf在工业中用的较多。
EM算法
隐变量:表示的其实是数据的不完整性,也就是训练数据并不能给出关于模型结果的全部信息,因此只能对模型中未知的状态做出概率性的推测。
三硬币模型,但其实双硬币模型更好理解。
P
(
y
∣
π
,
p
,
q
)
=
∑
z
P
(
y
,
z
∣
π
,
p
,
q
)
=
∑
z
P
(
y
∣
z
,
π
,
p
,
q
)
P
(
z
∣
π
,
p
,
q
)
=
π
p
y
(
1
−
p
)
1
−
y
+
(
1
−
π
)
q
y
(
1
−
q
)
1
−
y
\begin{aligned} & P(y \mid \pi, p, q) \\ =& \sum_{z} P(y, z \mid \pi, p, q) \\ =& \sum_{z} P(y \mid z, \pi, p, q) P(z \mid \pi, p, q) \\ =& \pi p^{y}(1-p)^{1-y}+(1-\pi) q^{y}(1-q)^{1-y} \end{aligned}
===P(y∣π,p,q)z∑P(y,z∣π,p,q)z∑P(y∣z,π,p,q)P(z∣π,p,q)πpy(1−p)1−y+(1−π)qy(1−q)1−y
max π , p , q ∏ i = 1 n P ( y i ∣ π , p , q ) = max π , p , q ∏ i = 1 n [ π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ] = max π , p , q ∑ i = 1 n log [ π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ] = max π , p , q L ( π , p , q ) \begin{aligned} & \max _{\pi, p, q} \prod_{i=1}^{n} P\left(y_{i} \mid \pi, p, q\right) \\ =& \max _{\pi, p, q} \prod_{i=1}^{n}\left[\pi p^{y_{i}}(1-p)^{1-y_{i}}+(1-\pi) q^{y_{i}}(1-q)^{1-y_{i}}\right] \\ =& \max _{\pi, p, q} \sum_{i=1}^{n} \log \left[\pi p^{y_{i}}(1-p)^{1-y_{i}}+(1-\pi) q^{y_{i}}(1-q)^{1-y_{i}}\right] \\ =& \max _{\pi, p, q} L(\pi, p, q) \end{aligned} ===π,p,qmaxi=1∏nP(yi∣π,p,q)π,p,qmaxi=1∏n[πpyi(1−p)1−yi+(1−π)qyi(1−q)1−yi]π,p,qmaxi=1∑nlog[πpyi(1−p)1−yi+(1−π)qyi(1−q)1−yi]π,p,qmaxL(π,p,q)
最大似然估计的本质:存在即合理。也就是样本存在的概率就是出现的最大概率。对于式(11), p , q , π p, q, \pi p,q,π是未知的, n , y i n, y_i n,yi是已知的。那能不能用梯度下降呢?理论上可以,但是因为log有加号,所以很麻烦。而且 p , q , π p, q, \pi p,q,π是有约束的,都在[0, 1]之间。EM算法就是用Q函数来作为它的下界的一个近似。很多场景下,EM算法和梯度下降和牛顿法是等价的。
关于EM算法的收敛性:
稳定点(驻点):
- p ( x ∣ θ ) p(\mathbf{x} \mid \theta) p(x∣θ)的稳定点指此处是导数为0。这个驻点可能是极大值点,也可能是极小值点,也可能是鞍点。
收敛性:
- 似然函数的收敛,也就是 p ( x ∣ θ ) p(\mathbf{x} \mid \theta) p(x∣θ)可能会收敛。
- 模型参数的收敛,也就是 θ \theta θ也可能收敛。 θ \theta θ是迭代的过程。
K-means算法是EM算法的一种应用,一种特殊情况。K-means算法等价于用快速牛顿法对量化误差进行优化,也就是把k-means聚类问题转化为优化问题,这个优化问题用快速牛顿法来解决的话,其得到的结果与EM算法的结果等价。K-means中的迭代过程就是经典的EM过程,属于hard,也就是e步做了截断,只看最近的样本。
EM算法并不与梯度下降等价,但是在很多问题中有联系。在高斯混合聚类中也有应用,算soft聚类,每个样本要看所有的求E步。
协同过滤的思想跟EM思想接近。SMO算法的思想也与EM思想接近。
深度学习
西瓜书大而全,深度学习内容相对简略。深度学习不一定在所有领域都能取代传统算法,进入一个新领域,也要学习前人积累的其他算法模型。
之前介绍过的Logistic, 支持向量机,决策树和概率图模型算是传统AI模型,它们都有一个共同的假设:局部不变性,也就是说在原始数据集中某个区域有一个标记为正标签的样本,如果有一个新样本离它很近,我们就认为这个新样本与此区域这的旧样本一样是正标签。问题在于怎么定义这个“近”。
局部不变性有局限性。我们可以考虑下图中的一个棋盘问题。棋盘中我们按照交替排列的规律排放两种标签的样本。我们想要训练一个函数 f f f来预测位于棋盘某个位置的样本标签。如果我们的模型只有局部不变性,就至少需要 4 2 4^{2} 42个样本进行训练。如果样本数量不足,比如第二个棋盘的情况,只有四个样本。如果一个新样本位于左上角的格子,会被预测为圈,因为离新样本最近的旧样本是圈。但是如果新样本位于第2行第4列,根据局部不变性,就会被预测为叉,因为离它最近的旧样本是第一行同一列的叉。但是显然这预测错了。
原因就在于局部不变性没有考虑到周期性,人能很容易认识出周期性结构。在这个棋盘中,只有两个维度,如果有10000个维度,就需要 4 10000 4^{10000} 410000个样本来训练。这就是另一种形式的维度灾难。这里的周期性其实可以被视为先验知识,深度学习的一个本质就是通过构建网络结构,来同时学习获得先验知识,例如这里的周期性。也就是说深度学习相比较传统机器学习的优势就是:局部不变性+先验知识。当然深度学习除了网络结构设计,还包含损失函数设计和优化方法选择。