概率图模型的综合叙述:
特征函数便是图中的conditional。对图简单的说明,综合概述Naive Bayes,Logistic Regression,HMM,Linear-chain CRF之间的关系。Naive Bayes经过条件参数的加入即为Logistic Regression,同时这两者经过序列化即特征函数加入了对相邻状态之间的判断即变为HMM和Linear-chain CRF,最后经过广义图模型的扩展变为最后两者。
Logistic Regression:
逻辑回归综述:
Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。Logistic regression可以用来回归,也可以用来分类,主要是二分类。它给我们提供的就是你的这个样本属于正类的可能性是多少。
逻辑回归与线性回归的关系:
逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。
逻辑函数(Logistic function):
首先我们要先介绍一下Sigmoid函数,也称为假设函数(Hypothesis function):
g
(
z
)
=
1
1
+
e
−
z
g(z)=\frac{1}{1+e^{-z}}
g ( z ) = 1 + e − z 1
其函数曲线如下:
从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要
逻辑回归的假设函数形式如下:
h
θ
(
x
)
=
g
(
θ
T
x
)
,
g
(
z
)
=
1
1
+
e
−
z
h_\theta(x)=g(\theta^T x),g(z)= \frac{1}{1+e^{-z}}
h θ ( x ) = g ( θ T x ) , g ( z ) = 1 + e − z 1
其中
x
x
x 是我们的输入,
θ
\theta
θ 为我们要求取的参数,不同输入变量对于整个判断有着不一样的影响力。
h
θ
(
x
)
h_\theta(x)
h θ ( x ) 是我们的输出,表现当前参数和输入情况下的输出下面对输出会做出解释。所以:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)= \frac{1}{1+e^{-\theta^T x}}
h θ ( x ) = 1 + e − θ T x 1
实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然,我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是:
p
(
y
=
1
∣
(
x
;
θ
)
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
p(y=1|(x;\theta))=g(\theta^T x)=\frac{1}{1+e^{-\theta^T x}}
p ( y = 1 ∣ ( x ; θ ) ) = g ( θ T x ) = 1 + e − θ T x 1
这个函数的意思就是在给定
x
x
x 和
θ
\theta
θ 的条件下
y
=
1
y=1
y = 1 的概率。
这里
g
(
⋅
)
g(\cdot)
g ( ⋅ ) 就是我们上面提到的sigmoid函数,与之相对应的决策函数(针对输出进行判断)为:
y
∗
=
1
,
i
f
P
(
y
=
1
∣
x
)
>
0.5
y^* = 1,\quad if\quad P(y=1|x)>0.5
y ∗ = 1 , i f P ( y = 1 ∣ x ) > 0 . 5
选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。
决策边界(Decision Boundary)
决策边界,也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。注意:决策边界是假设函数的属性,由参数决定,而不是由数据集的特征决定。
这里我们引用Andrew Ng 课程上的两张图来解释这个问题:
上面两张图很清晰的解释了什么是决策边界,决策边界其实就是一个方程 ,在逻辑回归中,决策边界由
θ
T
x
=
0
\theta^T x = 0
θ T x = 0 定义,在某种特殊输入点集情况下
θ
T
x
=
0
\theta^T x = 0
θ T x = 0 输出为0,
P
(
y
=
1
∣
(
x
;
θ
)
)
=
1
P(y = 1|(x;\theta))=1
P ( y = 1 ∣ ( x ; θ ) ) = 1 。
P
(
y
=
1
∣
(
x
;
θ
)
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
P(y = 1|(x;\theta))=g(\theta^T x) = \frac{1}{1+e^{-\theta^T x}}
P ( y = 1 ∣ ( x ; θ ) ) = g ( θ T x ) = 1 + e − θ T x 1
这里我们要注意理解一下假设函数和决策边界函数的区别与联系。决策边界是假设函数的属性,由假设函数的参数($\theta $)决定。
在逻辑回归中,假设函数
h
θ
(
x
)
h_\theta(x)
h θ ( x ) 用于计算样本属于某类别的可能性;决策函数
y
∗
=
1
,
i
f
P
(
y
=
1
∣
x
)
>
0.5
y^* = 1,\quad if\quad P(y=1|x)>0.5
y ∗ = 1 , i f P ( y = 1 ∣ x ) > 0 . 5 用于计算(给出)样本的类别;决策边界
θ
T
x
=
0
\theta^T x = 0
θ T x = 0 是一个方程,用于标识出分类函数(模型)的分类边界。
代价函数(Cost Function)
什么是代价函数?
假设有训练样本
(
x
,
y
)
(x,y)
( x , y ) ,模型为
h
h
h , 参数为
θ
\theta
θ 。
h
(
θ
)
=
g
(
θ
T
x
)
=
1
1
+
e
−
θ
T
x
h(\theta)=g(\theta^T x)= \frac{1}{1+e^{-\theta^T x}}
h ( θ ) = g ( θ T x ) = 1 + e − θ T x 1 (
θ
T
\theta^T
θ T 表示
θ
\theta
θ 的转置)。
<1>. 概况来讲,任何能够衡量模型预测出来的值
h
(
θ
)
h(\theta)
h ( θ ) 与真实值
y
y
y 之间的差异的函数都可以叫做代价函数
C
(
θ
)
C(\theta)
C ( θ ) ,如果有多个样本,则可以将所有代价函数的取值求均值,记做
J
(
θ
)
J(\theta)
J ( θ ) 。因此很容易就可以得出以下关于代价函数的性质:
选择代价函数时,最好挑选对参数
θ
\theta
θ 可微的函数(全微分存在,偏导数一定存在)
对于每种算法来说,代价函数不是唯一的;
代价函数是参数
θ
\theta
θ 的函数;
总的代价函数
J
(
θ
)
J(\theta)
J ( θ ) 可以用来评价模型的好坏,代价函数越小说明模型和参数越符合训练样本
(
x
,
y
)
(x,y)
( x , y ) ;
J
(
θ
)
J(\theta)
J ( θ ) 是一个标量;
<2>. 当我们确定了模型
h
h
h ,后面做的所有事情就是训练模型的参数
θ
\theta
θ 。那么什么时候模型的训练才能结束呢?这时候也涉及到代价函数,由于代价函数是用来衡量模型好坏的,我们的目标当然是得到最好的模型(也就是最符合训练样本的模型)。因此训练参数的过程就是不断改变
θ
\theta
θ ,从而得到更小的
J
(
θ
)
J(\theta)
J ( θ ) 的过程。理想情况下,当我们取到代价函数
J
J
J 的最小值时,就得到了最优的参数
θ
\theta
θ ,记为:
min
θ
J
(
θ
)
\min_\theta{J(\theta)}
min θ J ( θ )
例如,
J
(
θ
)
=
0
J(\theta) = 0
J ( θ ) = 0 ,表示我们的模型完美的拟合了观察的数据,没有任何误差。
<3>. 在优化参数
θ
\theta
θ 的过程中,最常用的方法是梯度下降,这里的梯度就是代价函数
J
(
θ
)
J(\theta)
J ( θ ) 对
θ
1
,
θ
2
,
θ
3
,
…
\theta_1,\theta_2,\theta_3,\ldots
θ 1 , θ 2 , θ 3 , … 的偏导数。由于需要求偏导,我们可以得到另一个关于代价函数的性质:
选择代价函数时,最好挑选对参数
θ
\theta
θ 可微的函数(全微分存在,偏导数一定存在)
代价函数的常见形式
经过上面的描述,一个好的代价函数需要满足两个最基本的要求:能够评价模型的准确性,对参数
θ
\theta
θ 可微。
<1>. 在线性回归中,最常用的是均方误差 (Mean squared error),即
J
(
θ
0
,
θ
1
)
=
1
2
m
∑
i
=
1
m
(
y
^
(
i
)
−
y
(
i
)
)
2
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta_0,\theta_1)=\frac{1}{2m}\sum^m_{i=1}(\hat{y}^{(i)}-{y}^{(i)})^2 \\ = \frac{1}{2m}\sum^m_{i=1}(h_\theta{(x^{(i)})}-{y}^{(i)})^2
J ( θ 0 , θ 1 ) = 2 m 1 ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 2 m 1 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2
m
m
m :训练样本的个数;
h
θ
(
x
)
h_\theta{(x)}
h θ ( x ) :用参数
θ
\theta
θ 和
x
x
x 预测出来的
y
y
y 值;
y
y
y :原训练样本中的
y
y
y 值,也就是标准答案;
上角标
(
i
)
(i)
( i ) :第
i
i
i 个样本。
<2>. 在逻辑回归中,最常用的是代价函数是交叉熵 (Cross Entropy),交叉熵是一个常见的代价函数,在神经网络中也会用到。下面是《神经网络与深度学习》一书对交叉熵的解释:
交叉熵是对「出乎意料」(译者注:原文使用suprise)的度量。神经元的目标是去计算函数x→y=y(x)。但是我们让它取而代之计算函数x→a=a(x)。假设我们把a当作y等于1的概率,1−a是y等于0的概率。那么,交叉熵衡量的是我们在知道y的真实值时的平均「出乎意料」程度。当输出是我们期望的值,我们的「出乎意料」程度比较低;当输出不是我们期望的,我们的「出乎意料」程度就比较高。
在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵(Shannon Entropy),它是香农信息量(Shannon Information Content, SIC)的期望。香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶。更多解释可以看这里 。
J
(
θ
)
=
−
1
m
[
∑
i
=
1
m
(
y
(
i
)
log
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
J(\theta)=-\frac{1}{m}[\sum^m_{i=1}({y}^{(i)}\log{h_\theta({x}^{(i)})}+(1-{y}^{(i)})\log{(1-h_\theta(x^{(i)}))}]
J ( θ ) = − m 1 [ ∑ i = 1 m ( y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ]
代价函数的意义:
简单的解释一下为什么这么定义代价函数呢?
对于单个的样本来讲,
J
(
θ
)
J(\theta)
J ( θ ) 所对应的
C
(
θ
)
C( \theta)
C ( θ ) 为:
C
(
θ
)
=
y
log
h
θ
(
x
)
+
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
C(\theta) = y\log{h_\theta (x)+(1-y)\log{(1-h_\theta (x))}}
C ( θ ) = y log h θ ( x ) + ( 1 − y ) log ( 1 − h θ ( x ) )
上面的方程等价于:
C
(
θ
)
=
{
−
log
(
h
θ
(
x
)
)
,
y
=
1
−
log
(
1
−
h
θ
(
x
)
)
,
y
=
0
w
h
e
r
e
:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
C(\theta)=\begin{cases} -\log{(h_\theta(x))},y=1\\ -\log{(1-h_\theta(x))},y=0\end{cases}where:h_\theta(x)=\frac{1}{1+e^{-\theta^T x}}
C ( θ ) = { − log ( h θ ( x ) ) , y = 1 − log ( 1 − h θ ( x ) ) , y = 0 w h e r e : h θ ( x ) = 1 + e − θ T x 1
当
y
=
1
y = 1
y = 1 时:
C
(
θ
)
=
−
log
(
h
θ
(
x
)
)
C(\theta)= -\log{(h_\theta(x))}
C ( θ ) = − log ( h θ ( x ) )
其函数图像为:
从图中可以看出:
y
=
1
y = 1
y = 1 ,当预测值
h
θ
(
x
)
=
1
h_\theta(x) = 1
h θ ( x ) = 1 时,可以看出代价函数
C
(
θ
)
C(\theta)
C ( θ ) 的值为0,这正是我们希望的。如果预测值
h
θ
(
x
)
=
0
h_\theta(x) = 0
h θ ( x ) = 0 ,即
P
(
y
=
1
∣
(
x
;
θ
)
)
=
0
P(y=1|(x;\theta))= 0
P ( y = 1 ∣ ( x ; θ ) ) = 0 ,意思是预测
y
=
1
y=1
y = 1 的概率为0,但是事实上
y
=
1
y = 1
y = 1 ,因此代价函数
C
(
θ
)
=
∞
C(\theta)=\infty
C ( θ ) = ∞ 相当于给学习算法一个惩罚。
同理,我们也可以画出当
y
=
0
y=0
y = 0 时, 函数
C
(
θ
)
C(\theta)
C ( θ ) 的图像:
代价函数与参数:
代价函数衡量的是模型预测值
h
(
θ
)
h(\theta)
h ( θ ) 与标准答案
y
y
y 之间的差异,所以总的代价函数
J
J
J 是
h
(
θ
)
h(\theta)
h ( θ ) 和
y
y
y 的函数,即,
J
=
f
(
h
(
θ
)
,
y
)
J=f(h(\theta), y)
J = f ( h ( θ ) , y ) 。又因为
y
y
y 都是训练样本中给定的,
h
(
θ
)
h(\theta)
h ( θ ) 有$ \theta
决
定
,
所
以
,
最
终
还
是
模
型
参
数
决定,所以,最终还是模型参数
决 定 , 所 以 , 最 终 还 是 模 型 参 数 \theta
的
改
变
导
致
了
的改变导致了
的 改 变 导 致 了 J
的
改
变
。
对
于
不
同
的
的改变。对于不同的
的 改 变 。 对 于 不 同 的 \theta
,
对
应
不
同
的
预
测
值
,对应不同的预测值
, 对 应 不 同 的 预 测 值 h(\theta)
,
也
就
对
应
着
不
同
的
代
价
函
数
,也就对应着不同的代价函数
, 也 就 对 应 着 不 同 的 代 价 函 数 J$的取值。变化过程为:
θ
→
h
(
θ
)
,
y
→
J
(
θ
)
\theta \to h(\theta),y \to J(\theta)
θ → h ( θ ) , y → J ( θ )
代价函数与梯度
梯度下降中的梯度指的是代价函数对各个参数的偏导数,偏导数的方向决定了在学习过程中参数下降的方向,学习率(通常用α表示)决定了每步变化的步长,有了导数和学习率就可以使用梯度下降算法(Gradient Descent Algorithm)更新参数了, 即求解使
J
(
θ
)
J(\theta)
J ( θ ) 最小的参数
θ
\theta
θ :
θ
j
=
θ
j
−
α
(
∂
∂
θ
j
)
J
(
θ
)
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j =\theta_j-\alpha(\frac{\partial}{\partial{\theta_j}})J(\theta)\\=\theta_j-\alpha\frac{1}{m}\sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
θ j = θ j − α ( ∂ θ j ∂ ) J ( θ ) = θ j − α m 1 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i )
看来其和线性回归中的梯度下降函数形式一模一样,但其实是不一样的,因为在logistic回归中
h
θ
(
x
)
=
1
1
+
e
(
−
θ
T
x
)
h_\theta(x) = \frac{1}{1+e^{(-\theta^T x)}}
h θ ( x ) = 1 + e ( − θ T x ) 1
关于从
θ
j
−
α
(
∂
∂
θ
j
)
J
(
θ
)
\theta_j-\alpha(\frac{\partial}{\partial{\theta_j}})J(\theta)
θ j − α ( ∂ θ j ∂ ) J ( θ ) 到推
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j-\alpha\frac{1}{m}\sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
θ j − α m 1 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) 导如下:
狭义的多项逻辑回归参数化定义:
P
(
Y
=
k
∣
x
)
=
exp
(
w
k
⋅
x
)
1
+
∑
k
=
1
K
−
1
exp
(
w
k
⋅
x
)
)
,
k
=
1
,
2
,
…
,
K
−
1
P(Y=k | x)=\frac{\exp \left(w_{k} \cdot x\right)}{\left.1+\sum_{k=1}^{K-1} \exp \left(w_{k} \cdot x\right)\right)}, k=1,2, \ldots, K-1
P ( Y = k ∣ x ) = 1 + ∑ k = 1 K − 1 exp ( w k ⋅ x ) ) exp ( w k ⋅ x ) , k = 1 , 2 , … , K − 1
是不是和CRF的定义式有一点像了?引用一下CRF的公式如下:
P
w
(
y
∣
x
)
=
exp
(
w
⋅
F
(
y
,
x
)
)
∑
y
exp
(
w
⋅
F
(
y
,
x
)
)
)
P_{w}(y | x)=\frac{\exp (w \cdot F(y, x))}{\left.\sum_{y} \exp (w \cdot F(y, x))\right)}
P w ( y ∣ x ) = ∑ y exp ( w ⋅ F ( y , x ) ) ) exp ( w ⋅ F ( y , x ) )
我们是不是可以把逻辑回归中的
w
k
⋅
x
w_{k} \cdot x
w k ⋅ x 看作是特征函数?
当我们把逻辑回归拓展成最大熵模型时,得到“广义的逻辑回归模型”:
1.统计训练集中的先验
P
~
(
x
)
,
P
~
(
x
,
y
)
\tilde{P}(x), \tilde{P}(x, y)
P ~ ( x ) , P ~ ( x , y ) 。
2.设计特征函数
f
(
x
,
y
)
f(x,y)
f ( x , y ) ,
x
x
x 与
y
y
y 满足某种关系取1,不满足取0。(当然可以取其他值,比如之前举的例子,两个动词一起出现时就取-1)
3.训练数据集上符合特征的期望:
E
P
~
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
E_{\tilde{P}}=\sum_{x, y} \tilde{P}(x, y) f(x, y)
E P ~ = ∑ x , y P ~ ( x , y ) f ( x , y ) 。这个式子的意思是,假设我们只有一个特征函数
f
f
f ,特定的
(
x
,
y
)
(x,y)
( x , y ) 在总数为10的训练集上出现过1次,且刚好满足着唯一的特征函数,那么训练数据上的
E
P
~
E_{\tilde{P}}
E P ~ 为0.1.
4.若模型学到了
P
(
y
∣
x
)
P(y | x)
P ( y ∣ x ) ,我们便可以认为
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
\sum_{x, y} \tilde{P}(x) P(y | x) f(x, y)=\sum_{x, y} \tilde{P}(x, y) f(x, y)
∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) = ∑ x , y P ~ ( x , y ) f ( x , y ) 。至此,我们已经在Naive Bayes的基础上融入了特征函数,也就是conditional。
5.实际上这是满足条件的模型有很多,我们选一个可以让熵最大的模型。经过一系列数学步骤(拉格朗日对偶,求偏导,使偏导数为0),我们得到最大熵模型
P
w
(
y
∣
x
)
=
exp
(
w
⋅
F
(
y
,
x
)
)
∑
y
exp
(
w
⋅
F
(
y
,
x
)
)
)
P_{w}(y | x)=\frac{\exp (w \cdot F(y, x))}{\left.\sum_{y} \exp (w \cdot F(y, x))\right)}
P w ( y ∣ x ) = ∑ y exp ( w ⋅ F ( y , x ) ) ) exp ( w ⋅ F ( y , x ) ) ,天啊,简直和CRF最后的模型一样一样的。
逻辑回归模型(最大熵模型)统计的是训练集中的各种数据满足特征函数的频数(conditional),而贝叶斯模型统计的是训练集中的各种数据的频数。
逻辑回归模型(最大熵模型)统计的是训练集中的各种数据满足特征函数的频数,而CRF统计的是训练集中相关数据 (比如说相邻的词,不相邻的词不统计) 满足特征函数的频数。