对于分类任务,线性回归模型就无能为力了,但是我们可以在线性模型的函数进行后再加入一层激活函数,这个函数是非线性的,激活函数的反函数叫做链接函数。我们有两种线性分类的方式:
- 硬分类,我们直接需要输出观测对应的分类。这类模型的代表为:
a. 线性判别分析(Fisher 判别)
b. 感知机 - 软分类,产生不同类别的概率,这类算法根据概率方法的不同分为两种
a. 生成式(根据贝叶斯定理先计算参数后验,再进行推断):高斯判别分析(GDA)和朴素贝叶斯等为代表
ⅰ. GDA(连续)
ⅱ. Naive Bayes(离散)
b. 判别式(直接对条件概率进行建模):Logistic 回归
1 硬分类-两分类
1.1 感知机算法 Perception
思想:错误驱动
模型:
f
(
x
)
=
s
i
g
n
(
w
T
x
)
f(x)=sign(w^Tx)
f(x)=sign(wTx)
我们选取激活函数为:
sign
(
a
)
=
{
+
1
,
a
≥
0
−
1
,
a
<
0
\operatorname{sign}(a)=\left\{\begin{array}{l} +1, a \geq 0 \\ -1, a<0 \end{array}\right.
sign(a)={+1,a≥0−1,a<0这样就可以将线性回归的结果映射到两分类的结果上了。
定义损失函数为错误分类的数目,比较直观的方式是使用指示函数,但是指示函数不可导,因此可以定义: L ( w ) = ∑ x i ∈ D w r o n g − y i w T x i L(w)=\sum\limits_{x_i\in\mathcal{D}{wrong}}-y_iw^Tx_i L(w)=xi∈Dwrong∑−yiwTxi 其中, D w r o n g \mathcal{D}_{wrong} Dwrong是错误分类集合,实际在每一次训练的时候,我们采用梯度下降的算法。损失函数对 w w w 的偏导为: ∂ ∂ w L ( w ) = ∑ x i ∈ D w r o n g − y i x i \frac{\partial}{\partial w}L(w)=\sum\limits_{x_i\in\mathcal{D}{wrong}}-y_ix_i ∂w∂L(w)=xi∈Dwrong∑−yixi 但是如果样本非常多的情况下,计算复杂度较高,但是,实际上我们并不需要绝对的损失函数下降的方向,我们只需要损失函数的期望值下降,但是计算期望需要知道真实的概率分布,我们实际只能根据训练数据抽样来估算这个概率分布(经验风险): E D [ E p ^ [ ∇ w L ( w ) ] ] = E D [ 1 N ∑ i = 1 N ∇ w L ( w ) ] \mathbb{E}{\mathcal D}[\mathbb{E}\hat{p}[\nabla_wL(w)]]=\mathbb{E}{\mathcal D}[\frac{1}{N}\sum\limits_{i=1}^N\nabla_wL(w)] ED[Ep^[∇wL(w)]]=ED[N1i=1∑N∇wL(w)] 我们知道, N N N 越大,样本近似真实分布越准确,但是对于一个标准差为 σ \sigma σ 的数据,可以确定的标准差仅和 N \sqrt{N} N 成反比,而计算速度却和 N N N 成正比。因此可以每次使用较少样本,则在数学期望的意义上损失降低的同时,有可以提高计算速度,如果每次只使用一个错误样本,我们有下面的更新策略(根据泰勒公式,在负方向): w t + 1 ← w t + λ y i x i w^{t+1}\leftarrow w^{t}+\lambda y_ix_i wt+1←wt+λyixi 是可以收敛的,同时使用单个观测更新也可以在一定程度上增加不确定度,从而减轻陷入局部最小的可能。在更大规模的数据上,常用的是小批量随机梯度下降法。
1.2 线性判别分析(Linear Discriminant Analysis,LDA或者Fisher判别分析)
X
=
(
x
1
x
2
⋯
x
N
)
⊤
=
(
x
1
r
x
1
⋮
x
N
)
N
×
p
Y
=
(
y
1
y
2
N
)
N
×
1
\begin{array}{l} X=\left(x_{1} x_{2} \cdots x_{N}\right)^{\top}=\left(\begin{array}{c} x_{1}^{r} \\ x_{1} \\ \vdots \\ x_{N} \end{array}\right)_{N \times p} Y=\left(\begin{array}{l} y_{1} \\ y_{2} \\ _{N} \end{array}\right)_{N \times 1} \end{array}
X=(x1x2⋯xN)⊤=⎝⎜⎜⎜⎛x1rx1⋮xN⎠⎟⎟⎟⎞N×pY=⎝⎛y1y2N⎠⎞N×1
{
(
x
i
,
y
i
)
}
i
=
1
N
,
x
i
∈
R
p
,
y
i
∈
{
t
1
,
−
1
}
\left\{\left(x_{i}, y_{i}\right)\right\}_{i=1}^{N}, \quad x_{i} \in \mathbb{R}^{p}, \quad y_{i} \in\left\{t_{1},-1\right\}
{(xi,yi)}i=1N,xi∈Rp,yi∈{t1,−1}
x
c
1
=
{
x
i
∣
y
i
=
+
1
}
,
x
c
2
=
{
x
i
∣
y
i
=
−
1
}
x_{c_{1}}=\left\{x_{i} | y_{i}=+1\right\}, \quad x_{c_{2}}=\left\{x_{i} | y_{i}=-1\right\}
xc1={xi∣yi=+1},xc2={xi∣yi=−1}
∣
x
c
1
∣
=
N
1
,
∣
x
c
2
∣
=
N
2
,
N
1
+
N
2
=
N
\left|x_{c_{1}}\right|=N_{1}, \quad\left|x_{c_{2}}\right|=N_{2}, \quad N_{1}+N_{2}=N
∣xc1∣=N1,∣xc2∣=N2,N1+N2=N
思想:类内小,类间
大(松耦合,高内聚)
在 LDA 中,我们的基本想法是选定一个方向,将试验样本顺着这个方向投影,投影后的数据需要满足两个条件,从而可以更好地分类:
- 相同类内部的试验样本距离接近。
- 不同类别之间的距离较大。
在上图中,就是需要找到超平面 w T x w_{T}x wTx将两类数据分开,而 w w w就是我们需要求的法向量。
首先是投影,我们假定原来的数据是向量 x x x,那么顺着 w w w 方向的投影就是标量: z = w T ⋅ x ( = ∣ w ∣ ⋅ ∣ x ∣ cos θ ) z=w^T\cdot x(=|w|\cdot|x|\cos\theta) z=wT⋅x(=∣w∣⋅∣x∣cosθ)
对于 z z z而言,其均值和协方差分别为:
z i = w ⊤ x i z ˉ = 1 N ∑ i = 1 N z i = 1 N ∑ i = 1 N w ⊤ x i S z = 1 N ∑ i = 1 N ( z i − z ˉ ) ( z i − z ˉ ) T = 1 N ∑ i = 1 N ( w ⊤ x i − z ˉ ) ( w ⊤ x i − z ˉ ) T \begin{array}{l} z_{i}=w^{\top} x_{i} \\ \\ \bar{z}=\frac{1}{N} \sum_{i=1}^{N} z_{i}=\frac{1}{N} \sum_{i=1}^{N} w^{\top} x_{i} \\ \\ S_{z}=\frac{1}{N} \sum_{i=1}^{N}\left(z_{i}-\bar{z}\right)\left(z_{i}-\bar{z}\right)^{T} \\ \\ \quad=\frac{1}{N} \sum_{i=1}^{N}\left(w^{\top} x_{i}-\bar{z}\right)\left(w^{\top} x_{i}-\bar{z}\right)^{T} \end{array} zi=w⊤xizˉ=N1∑i=1Nzi=N1∑i=1Nw⊤xiSz=N1∑i=1N(zi−zˉ)(zi−zˉ)T=N1∑i=1N(w⊤xi−zˉ)(w⊤xi−zˉ)T
对第一点,相同类内部的样本更为接近,我们假设属于两类的试验样本数量分别是 N 1 N_1 N1和 N 2 N_2 N2,那么我们采用方差矩阵来表征每一个类内的总体分布,这里我们使用了协方差的定义,用 S S S 表示原数据的协方差(下面的 S 1 , S 2 S1,S2 S1,S2就表示两个类别各自的协方差):
C
1
:
Var
z
[
C
1
]
=
1
N
1
∑
i
=
1
N
1
(
z
i
−
z
c
1
‾
)
(
z
i
−
z
c
1
‾
)
T
=
1
N
1
∑
i
=
1
N
1
(
w
T
x
i
−
1
N
1
∑
j
=
1
N
1
w
T
x
j
)
(
w
T
x
i
−
1
N
1
∑
j
=
1
N
1
w
T
x
j
)
T
=
w
T
1
N
1
∑
i
=
1
N
1
(
x
i
−
x
c
1
‾
)
(
x
i
−
x
c
1
‾
)
T
w
=
w
T
S
1
w
\begin{aligned} C_{1}: \operatorname{Var}_{z}\left[C_{1}\right] &=\frac{1}{N_{1}} \sum_{i=1}^{N_{1}}\left(z_{i}-\overline{z_{c 1}}\right)\left(z_{i}-\overline{z_{c 1}}\right)^{T} \\ &=\frac{1}{N_{1}} \sum_{i=1}^{N_{1}}\left(w^{T} x_{i}-\frac{1}{N_{1}} \sum_{j=1}^{N_{1}} w^{T} x_{j}\right)\left(w^{T} x_{i}-\frac{1}{N_{1}} \sum_{j=1}^{N_{1}} w^{T} x_{j}\right)^{T} \\ &=w^{T} \frac{1}{N_{1}} \sum_{i=1}^{N_{1}}\left(x_{i}-\overline{x_{c 1}}\right)\left(x_{i}-\overline{x_{c 1}}\right)^{T} w \\ &=w^{T} S_{1} w \end{aligned}
C1:Varz[C1]=N11i=1∑N1(zi−zc1)(zi−zc1)T=N11i=1∑N1(wTxi−N11j=1∑N1wTxj)(wTxi−N11j=1∑N1wTxj)T=wTN11i=1∑N1(xi−xc1)(xi−xc1)Tw=wTS1w
C
2
:
Var
z
[
C
2
]
=
1
N
2
∑
i
=
1
N
2
(
z
i
−
z
c
2
‾
)
(
z
i
−
z
c
2
‾
)
T
=
w
T
S
2
w
\begin{aligned} C_{2}: \operatorname{Var}_{z}\left[C_{2}\right] &=\frac{1}{N_{2}} \sum_{i=1}^{N_{2}}\left(z_{i}-\overline{z_{c 2}}\right)\left(z_{i}-\overline{z_{c 2}}\right)^{T} \\ &=w^{T} S_{2} w \end{aligned}
C2:Varz[C2]=N21i=1∑N2(zi−zc2)(zi−zc2)T=wTS2w
所以类内距离可以记为:
Var
z
[
C
1
]
+
Var
z
[
C
2
]
=
w
T
(
S
1
+
S
2
)
w
\operatorname{Var}_{z}\left[C_{1}\right]+\operatorname{Var}_{z}\left[C_{2}\right]=w^{T}\left(S_{1}+S_{2}\right) w
Varz[C1]+Varz[C2]=wT(S1+S2)w 对于第二点,我们可以用两类的均值表示这个类间距离:
(
z
c
1
‾
−
z
c
2
‾
)
2
=
(
1
N
1
∑
i
=
1
N
1
w
T
x
i
−
1
N
2
∑
i
=
1
N
2
w
T
x
i
)
2
=
(
w
T
(
x
c
1
‾
−
x
c
2
‾
)
)
2
=
w
T
(
x
c
1
‾
−
x
c
2
‾
)
(
x
c
1
‾
−
x
c
2
‾
)
T
w
\begin{aligned} (\overline{z_{c 1}}-\overline{z_{c 2}})^{2} &=\left(\frac{1}{N_{1}} \sum_{i=1}^{N_{1}} w^{T} x_{i}-\frac{1}{N_{2}} \sum_{i=1}^{N_{2}} w^{T} x_{i}\right)^{2} \\ &=\left(w^{T}(\overline{x_{c 1}}-\overline{x_{c 2}})\right)^{2} \\ &=w^{T}(\overline{x_{c 1}}-\overline{x_{c 2}})(\overline{x_{c 1}}-\overline{x_{c 2}})^{T} w \end{aligned}
(zc1−zc2)2=(N11i=1∑N1wTxi−N21i=1∑N2wTxi)2=(wT(xc1−xc2))2=wT(xc1−xc2)(xc1−xc2)Tw
综合这两点,希望两个类别的均值差越大越好,这样它们就会分的更开;而对于它们各自的方差则越小越好,因为希望各自类别内的波动越小越好。由于协方差是一个矩阵,于是我们用将这两个值相除来得到我们的损失函数,并最大化这个值:
w
^
=
argmax
J
(
w
)
=
argmax
(
z
c
1
‾
−
z
c
2
‾
)
2
Var
z
[
C
1
]
+
Var
z
[
C
2
]
=
argmax
w
w
T
(
x
c
1
‾
−
x
c
2
‾
)
(
x
c
1
‾
−
x
c
2
‾
)
T
w
w
T
(
S
1
+
S
2
)
w
=
argmax
w
w
T
S
b
w
w
T
S
w
w
\begin{aligned} \hat{w}=\operatorname{argmax} J(w) &=\operatorname{argmax} \frac{(\overline{z_{c 1}}-\overline{z_{c 2}})^{2}}{\operatorname{Var}_{z}\left[C_{1}\right]+\operatorname{Var}_{z}\left[C_{2}\right]} \\ \\ &=\underset{w}{\operatorname{argmax}} \frac{w^{T}(\overline{x_{c 1}}-\overline{x_{c 2}})(\overline{x_{c 1}}-\overline{x_{c 2}})^{T} w}{w^{T}\left(S_{1}+S_{2}\right) w} \\ \\ &=\underset{w}{\operatorname{argmax}} \frac{w^{T} S_{b} w}{w^{T} S_{w} w} \end{aligned}
w^=argmaxJ(w)=argmaxVarz[C1]+Varz[C2](zc1−zc2)2=wargmaxwT(S1+S2)wwT(xc1−xc2)(xc1−xc2)Tw=wargmaxwTSwwwTSbw
令
S
b
=
(
x
c
1
‾
−
x
c
2
‾
)
(
x
c
1
‾
−
x
c
2
‾
)
T
,
S
w
=
(
S
1
+
S
2
)
S_{b}=(\overline{x_{c 1}}-\overline{x_{c 2}})(\overline{x_{c 1}}-\overline{x_{c 2}})^{T},S_w=(S_1+S_2)
Sb=(xc1−xc2)(xc1−xc2)T,Sw=(S1+S2)
这样,我们就把损失函数和原数据集以及参数结合起来了。下面对这个损失函数求偏导,注意我们其实对
w
w
w 的绝对值没有任何要求,只对方向有要求,因此只要一个方程就可以求解了:
∂
∂
w
J
(
w
)
=
2
S
b
w
(
w
T
S
w
w
)
−
1
−
2
w
T
S
b
w
(
w
T
S
w
w
)
−
2
S
w
w
=
0
⟹
S
b
w
(
w
T
S
w
w
)
=
(
w
T
S
b
w
)
S
w
w
⟹
S
w
w
=
(
w
T
S
b
w
/
w
T
S
w
w
)
S
b
w
⟹
w
∝
S
w
−
1
S
b
w
=
S
w
−
1
(
x
c
1
‾
−
x
c
2
‾
)
(
x
c
1
‾
−
x
c
2
‾
)
T
w
∝
S
w
−
1
(
x
c
1
‾
−
x
c
2
‾
)
\begin{array}{l} \frac{\partial}{\partial w} J(w)=2 S_{b} w\left(w^{T} S_{w} w\right)^{-1}-2 w^{T} S_{b} w\left(w^{T} S_{w} w\right)^{-2} S_{w} w=0 \\ \\ \Longrightarrow S_{b} w\left(w^{T} S_{w} w\right)=\left(w^{T} S_{b} w\right) S_{w} w \\ \\ \Longrightarrow S_{w} w=\left(w^{T} S_{b} w/w^{T} S_{w} w\right) S_{b} w \\ \\ \Longrightarrow w \propto S_{w}^{-1} S_{b} w=S_{w}^{-1}(\overline{x_{c 1}}-\overline{x_{c 2}})(\overline{x_{c 1}}-\overline{x_{c 2}})^{T} w \propto S_{w}^{-1}(\overline{x_{c 1}}-\overline{x_{c 2}}) \end{array}
∂w∂J(w)=2Sbw(wTSww)−1−2wTSbw(wTSww)−2Sww=0⟹Sbw(wTSww)=(wTSbw)Sww⟹Sww=(wTSbw/wTSww)Sbw⟹w∝Sw−1Sbw=Sw−1(xc1−xc2)(xc1−xc2)Tw∝Sw−1(xc1−xc2) 上边的
w
T
S
b
w
,
w
T
S
w
w
w^{T} S_{b} w,w^{T} S_{w} w
wTSbw,wTSww都是实数,可以直接乘除,而
w
w
w只考虑方向,因此这两项可以直接删除。
(
x
c
1
‾
−
x
c
2
‾
)
T
w
(\overline{x_{c 1}}-\overline{x_{c 2}})^{T}w
(xc1−xc2)Tw中的
x
c
1
x_{c 1}
xc1维度是
p
∗
1
p*1
p∗1,因此括号内转置后维度是
1
∗
p
1*p
1∗p,
w
w
w的维度是
p
∗
1
p*1
p∗1,相乘后是个实数,也可以不考虑。
于是
S
w
−
1
(
x
c
1
‾
−
x
c
2
‾
)
S_{w}^{-1}(\overline{x_{c 1}}-\overline{x_{c 2}})
Sw−1(xc1−xc2) 就是我们需要寻找的方向。最后可以归一化求得单位的
w
w
w 值。
2 软输出
先介绍生成模型(generative model)和判别模型(discriminative model)的区别,然后重点介绍生成模型中的两个例子:高斯判别分析(Gaussian discriminant analysis)和朴素贝叶斯方法(Naive Bayes)
监督学习一般学习的是一个决策函数:
y
=
f
(
x
)
y=f(x)
y=f(x)
或者是条件概率分布:
p
(
y
∣
x
)
p(y|x)
p(y∣x)
判别模型直接用数据学习这个函数或分布,例如Linear Regression和Logistic Regression。
生成模型是用数据先学习联合概率分布
p
(
x
,
y
)
p(x,y)
p(x,y),然后根据贝叶斯公式求
p
(
y
∣
x
)
p(y|x)
p(y∣x):
p
(
y
∣
x
)
=
p
(
x
,
y
)
p
(
x
)
=
p
(
x
∣
y
)
p
(
y
)
p
(
x
)
p(y | x)=\frac{p(x, y)}{p(x)}=\frac{p(x | y) p(y)}{p(x)}
p(y∣x)=p(x)p(x,y)=p(x)p(x∣y)p(y)
预测数据x的时候,当
p
(
y
∣
x
)
p(y|x)
p(y∣x)最大时,此时的y即预测结果:
arg
max
y
p
(
y
∣
x
)
=
arg
max
y
p
(
x
∣
y
)
p
(
y
)
p
(
x
)
=
arg
max
y
p
(
x
∣
y
)
p
(
y
)
\begin{aligned} \arg \max _{y} p(y | x) &=\arg \max _{y} \frac{p(x | y) p(y)}{p(x)} \\ &=\arg \max _{y} p(x | y) p(y) \end{aligned}
argymaxp(y∣x)=argymaxp(x)p(x∣y)p(y)=argymaxp(x∣y)p(y)(因为y的取值不影响p(x)的大小,所以可以忽略p(x)的值)这里用了期望风险最小化准则(Empirical Minimization Principle),具体可以查看《统计学习方法》的chapter4.1.2。
2.1 概率判别模型:逻辑回归 Logistics Regression
有时候我们只要得到一个类别的概率,那么我们需要一种能输出 [ 0 , 1 ] [0,1] [0,1] 区间的值的函数。考虑两分类模型,我们利用判别模型,希望对 p ( C ∣ x ) p(C|x) p(C∣x) 建模,利用贝叶斯定理: p ( C 1 ∣ x ) = p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 1 ) p ( C 1 ) + p ( x ∣ C 2 ) p ( C 2 ) p(C_1|x)=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)} p(C1∣x)=p(x∣C1)p(C1)+p(x∣C2)p(C2)p(x∣C1)p(C1) 取 a = ln p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 2 ) p ( C 2 ) a=\ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)} a=lnp(x∣C2)p(C2)p(x∣C1)p(C1),于是: p ( C 1 ∣ x ) = 1 1 + exp ( − a ) p(C_1|x)=\frac{1}{1+\exp(-a)} p(C1∣x)=1+exp(−a)1 上面的式子叫 Logistic Sigmoid 函数,其参数表示了两类联合概率比值的对数。在判别式中,不关心这个参数的具体值,模型假设直接对 a a a 进行。
Logistic 回归的模型假设是: a = w T x a=w^Tx a=wTx 于是,通过寻找 w w w 的最佳值可以得到在这个模型假设下的最佳模型。概率判别模型常用最大似然估计的方式来确定参数。
对于一次观测,
y
y
y的取值只有0和1,那么对应的概率是:
p
1
=
P
(
y
=
1
∣
x
)
=
σ
(
w
T
x
)
=
1
1
+
e
−
w
T
x
,
y
=
1
p
2
=
P
(
y
=
0
∣
x
)
=
1
−
P
(
y
=
1
∣
x
)
=
e
−
w
T
x
1
+
e
−
w
T
x
,
y
=
0
\begin{array}{l} p_{1}=P(y=1 | x)=\sigma\left(w^{T} x\right)=\frac{1}{1+e^{-w^{T} x}}, \quad y=1 \\ p_{2}=P(y=0 | x)=1-P(y=1| x)=\frac{e^{-w^{T} x}}{1+e^{-w^{T} x}}, \quad y=0 \end{array}
p1=P(y=1∣x)=σ(wTx)=1+e−wTx1,y=1p2=P(y=0∣x)=1−P(y=1∣x)=1+e−wTxe−wTx,y=0
那么,将上面两个式子进行合并,可获得分类
y
y
y 的概率为(假定
C
1
=
1
,
C
2
=
0
C_1=1,C_2=0
C1=1,C2=0):
p
(
y
∣
x
)
=
p
1
y
p
0
1
−
y
p(y|x)=p_1^yp_0^{1-y}
p(y∣x)=p1yp01−y
那么对于 N N N 次独立全同的观测 MLE为: w ^ = a r g m a x w J ( w ) = a r g m a x w ∑ i = 1 N ( y i log p 1 + ( 1 − y i ) log p 0 ) = a r g m a x w ∑ i = 1 N ( y i log p 1 + ( 1 − y i ) log ( 1 − p 1 ) ) = a r g m a x w ∑ i = 1 N ( y i log p 1 1 − p 1 + log ( 1 − p 1 ) ) \hat{w}=\mathop{argmax}_wJ(w)=\mathop{argmax}w\sum\limits_{i=1}^N(y_i\log p_1+(1-y_i)\log p_0) \\ =\mathop{argmax}w\sum\limits_{i=1}^N(y_i\log p_1+(1-y_i)\log (1-p_1)) \\ =\mathop{argmax}w\sum\limits_{i=1}^N(y_i\log \frac{p_1}{1-p_1}+\log (1-p_1)) w^=argmaxwJ(w)=argmaxwi=1∑N(yilogp1+(1−yi)logp0)=argmaxwi=1∑N(yilogp1+(1−yi)log(1−p1))=argmaxwi=1∑N(yilog1−p1p1+log(1−p1)) 注意到,这个表达式是交叉熵表达式的相反数乘 N N N,MLE 中的对数也保证了可以和指数函数相匹配,从而在大的区间汇总获取稳定的梯度。
对这个函数求导数,注意到: p 1 ′ = ( 1 1 + exp ( − a ) ) ′ = p 1 ( 1 − p 1 ) p_1'=(\frac{1}{1+\exp(-a)})'=p_1(1-p_1) p1′=(1+exp(−a)1)′=p1(1−p1) 则: J ′ ( w ) = ∑ i = 1 N y i ( 1 − p 1 ) x i − p 1 x i + y i p 1 x i = ∑ i = 1 N ( y i − p 1 ) x i J'(w)=\sum\limits_{i=1}^Ny_i(1-p_1)x_i-p_1x_i+y_ip_1x_i=\sum\limits_{i=1}^N(y_i-p_1)x_i J′(w)=i=1∑Nyi(1−p1)xi−p1xi+yip1xi=i=1∑N(yi−p1)xi 由于概率值的非线性,放在求和符号中时,这个式子无法直接求解。于是在实际训练的时候,和感知机类似,也可以使用不同大小的批量随机梯度上升(对于最小化就是梯度下降)来获得这个函数的极大值。
2.2 概率生成模型
2.2.1 高斯判别分析 GDA
在生成模型中,我们需要知道的就是
p
(
x
∣
y
)
,
p
(
x
∣
y
)
p(x|y),p(x|y)
p(x∣y),p(x∣y)和
p
(
y
)
p
(
y
)
p(y)p(y)
p(y)p(y)的分布
p
(
x
)
=
∑
i
=
1
N
p
(
x
∣
y
=
i
)
p
(
y
=
i
)
(
p
(
x
)
=
∑
i
=
1
N
p
(
x
∣
y
=
i
)
p
(
y
=
i
)
p(x)=∑_{i=1}^{N}p(x|y=i)p(y=i)(p(x)=∑_{i=1}^{N}p(x|y=i)p(y=i)
p(x)=i=1∑Np(x∣y=i)p(y=i)(p(x)=i=1∑Np(x∣y=i)p(y=i)。
如果我们观察到样本的X大致服从多维正态分布,那么这时候我们可以使用GDA模型来预测数据。
生成模型中,我们对联合概率分布进行建模,然后采用 MAP 来获得参数的最佳值。两分类的情况,我们采用的假设:
y
∼
B
e
r
n
o
u
l
l
i
(
ϕ
)
y\sim Bernoulli(\phi)
y∼Bernoulli(ϕ)
x
∣
y
=
1
∼
N
(
μ
1
,
Σ
)
x|y=1\sim\mathcal{N}(\mu_1,\Sigma)
x∣y=1∼N(μ1,Σ)
x
∣
y
=
0
∼
N
(
μ
0
,
Σ
)
x|y=0\sim\mathcal{N}(\mu_0,\Sigma)
x∣y=0∼N(μ0,Σ)
也就是
p
(
y
)
=
ϕ
y
(
1
−
ϕ
)
1
−
y
p
(
x
∣
y
=
0
)
=
1
2
π
n
/
2
∣
Σ
∣
1
/
2
exp
(
−
1
2
(
x
−
μ
0
)
T
Σ
−
1
(
x
−
μ
0
)
)
p
(
x
∣
y
=
1
)
=
1
2
π
n
/
2
∣
Σ
∣
1
/
2
exp
(
−
1
2
(
x
−
μ
1
)
T
Σ
−
1
(
x
−
μ
1
)
)
\begin{array}{l} p(y)&=\phi^y(1-\phi)^{1-y}\\ \\ p(x|y=0)&=\frac1{{2\pi}^{n/2}|\Sigma|^{1/2}}\exp\left(-\frac12(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)\right)\\ \\p(x|y=1)&=\frac1{{2\pi}^{n/2}|\Sigma|^{1/2}}\exp\left(-\frac12(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)\right)\end {array}
p(y)p(x∣y=0)p(x∣y=1)=ϕy(1−ϕ)1−y=2πn/2∣Σ∣1/21exp(−21(x−μ0)TΣ−1(x−μ0))=2πn/2∣Σ∣1/21exp(−21(x−μ1)TΣ−1(x−μ1))
这里的x是所有特征
x
1
,
x
2
,
⋅
⋅
,
x
n
x_1,x_2,⋅⋅,x_n
x1,x2,⋅⋅,xn组成的向量;n为x的维数;
μ
0
,
μ
1
μ_0,μ_1
μ0,μ1是正态分布的均值向量;
Σ
Σ
Σ是协方差矩阵,考虑到
x
x
x特征的协方差不会受到y的种类的很大影响,还为了计算方便性,所以我们可以使用同个
Σ
Σ
Σ。
极大似然估计4个参数:
ϕ
,
μ
0
,
μ
1
,
Σ
ϕ,μ0,μ1,Σ
ϕ,μ0,μ1,Σ
那么独立全同的数据集最大后验概率可以表示为:
argmax
log
p
(
X
∣
Y
)
p
(
Y
)
=
argmax
ϕ
,
μ
0
,
μ
1
,
Σ
∑
i
=
1
N
(
log
p
(
x
i
∣
y
i
)
+
log
p
(
y
i
)
)
=
argmax
ϕ
,
μ
0
,
μ
1
,
Σ
∑
i
=
1
N
(
(
1
−
y
i
)
log
N
(
μ
0
,
Σ
)
+
y
i
log
N
(
μ
1
,
Σ
)
+
y
i
log
ϕ
+
(
1
−
y
i
)
log
(
1
−
ϕ
)
)
\begin{array}{c} \operatorname{argmax} \log p(X | Y) p(Y)=\operatorname{argmax}_{\phi, \mu_{0}, \mu_{1}, \Sigma} \sum_{i=1}^{N}\left(\log p\left(x_{i} | y_{i}\right)+\log p\left(y_{i}\right)\right) \\ \\ =\operatorname{argmax}_{\phi, \mu_{0}, \mu_{1}, \Sigma} \sum_{i=1}^{N}\left(\left(1-y_{i}\right) \log \mathcal{N}\left(\mu_{0}, \Sigma\right)+y_{i} \log \mathcal{N}\left(\mu_{1}, \Sigma\right)+y_{i} \log \phi+\left(1-y_{i}\right) \log (1-\phi)\right) \end{array}
argmaxlogp(X∣Y)p(Y)=argmaxϕ,μ0,μ1,Σ∑i=1N(logp(xi∣yi)+logp(yi))=argmaxϕ,μ0,μ1,Σ∑i=1N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)+yilogϕ+(1−yi)log(1−ϕ))
-
首先对 ϕ \phi ϕ 进行求解,将式子对 ϕ \phi ϕ 求偏导(这里假设 y 1 y_1 y1的个数是 N 1 N_1 N1个): ∑ i = 1 N y i ϕ + y i − 1 1 − ϕ = 0 ⟹ ϕ = ∑ i = 1 N y i N = N 1 N \begin{array}{l} \sum_{i=1}^{N} \frac{y_{i}}{\phi}+\frac{y_{i}-1}{1-\phi}=0 \\ \\ \Longrightarrow \phi=\frac{\sum_{i=1}^{N} y_{i}}{N}=\frac{N_{1}}{N} \end{array} ∑i=1Nϕyi+1−ϕyi−1=0⟹ϕ=N∑i=1Nyi=NN1
-
然后求解 μ 1 \mu_1 μ1: μ ^ 1 = argmax μ 1 ∑ i = 1 N y i log N ( μ 1 , Σ ) = argmin μ 1 ∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) \begin{aligned} \hat{\mu}_{1} &=\underset{\mu_{1}}{\operatorname{argmax}} \sum_{i=1}^{N} y_{i} \log \mathcal{N}\left(\mu_{1}, \Sigma\right) \\ &=\underset{\mu_{1}}{\operatorname{argmin}} \sum_{i=1}^{N} y_{i}\left(x_{i}-\mu_{1}\right)^{T} \Sigma^{-1}\left(x_{i}-\mu_{1}\right) \end{aligned} μ^1=μ1argmaxi=1∑NyilogN(μ1,Σ)=μ1argmini=1∑Nyi(xi−μ1)TΣ−1(xi−μ1) 由于: ∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) = ∑ i = 1 N y i x i T Σ − 1 x i − 2 y i μ 1 T Σ − 1 x i + y i μ 1 T Σ − 1 μ 1 \sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1)=\sum\limits_{i=1}^Ny_ix_i^T\Sigma^{-1}x_i-2y_i\mu_1^T\Sigma^{-1}x_i+y_i\mu_1^T\Sigma^{-1}\mu_1 i=1∑Nyi(xi−μ1)TΣ−1(xi−μ1)=i=1∑NyixiTΣ−1xi−2yiμ1TΣ−1xi+yiμ1TΣ−1μ1
y i ( x i − μ 1 ) T Σ − 1 ( x i y_i(x_i-\mu_1)^T\Sigma^{-1}(x_i yi(xi−μ1)TΣ−1(xi与 μ 1 \mu_1 μ1无关,对剩下的两项对求 μ 1 \mu_1 μ1求导可以得到: ∑ i = 1 N − 2 y i Σ − 1 x i + 2 y i Σ − 1 μ 1 = 0 ⟹ μ 1 = ∑ i = 1 N y i x i ∑ i = 1 N y i = ∑ i = 1 N y i x i N 1 \begin{array}{c} \sum_{i=1}^{N}-2 y_{i} \Sigma^{-1} x_{i}+2 y_{i} \Sigma^{-1} \mu_{1}=0 \\ \\ \Longrightarrow \mu_{1}=\frac{\sum_{i=1}^{N} y_{i} x_{i}}{\sum_{i=1}^{N} y_{i}}=\frac{\sum_{i=1}^{N} y_{i} x_{i}}{N_{1}} \end{array} ∑i=1N−2yiΣ−1xi+2yiΣ−1μ1=0⟹μ1=∑i=1Nyi∑i=1Nyixi=N1∑i=1Nyixi观解释是 y = 1 y=1 y=1类中x的平均值
-
求解 μ 0 \mu_0 μ0,由于正反例是对称的,所以: μ 0 = ∑ i = 1 N ( 1 − y i ) x i N 0 \mu_0=\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0} μ0=N0i=1∑N(1−yi)xi直观解释是 y = 0 y=0 y=0类中x的平均值
-
最为困难的是求解 Σ \Sigma Σ,我们的模型假设对正反例采用相同的协方差矩阵,当然从上面的求解中我们可以看到,即使采用不同的矩阵也不会影响之前的三个参数。首先我们有: ∑ i = 1 N log N ( μ , Σ ) = ∑ i = 1 N log ( 1 ( 2 π ) p / 2 ∣ Σ ∣ 1 / 2 ) + ( − 1 2 ( x i − μ ) T Σ − 1 ( x i − μ ) ) = Const − 1 2 N log ∣ Σ ∣ − 1 2 Tr ace ( ( x i − μ ) T Σ − 1 ( x i − μ ) ) = Const − 1 2 N log ∣ Σ ∣ − 1 2 Tr ace ( ( x i − μ ) ( x i − μ ) T Σ − 1 ) = Const − 1 2 N log ∣ Σ ∣ − 1 2 N Trace ( S Σ − 1 ) \begin{aligned} \sum_{i=1}^{N} \log \mathcal{N}(\mu, \Sigma) &=\sum_{i=1}^{N} \log \left(\frac{1}{(2 \pi)^{p / 2}|\Sigma|^{1 / 2}}\right)+\left(-\frac{1}{2}\left(x_{i}-\mu\right)^{T} \Sigma^{-1}\left(x_{i}-\mu\right)\right) \\ &=\operatorname{Const}-\frac{1}{2} N \log |\Sigma|-\frac{1}{2} \operatorname{Tr} \operatorname{ace}\left(\left(x_{i}-\mu\right)^{T} \Sigma^{-1}\left(x_{i}-\mu\right)\right) \\ &=\operatorname{Const}-\frac{1}{2} N \log |\Sigma|-\frac{1}{2} \operatorname{Tr} \operatorname{ace}\left(\left(x_{i}-\mu\right)\left(x_{i}-\mu\right)^{T} \Sigma^{-1}\right) \\ &=\operatorname{Const}-\frac{1}{2} N \log |\Sigma|-\frac{1}{2} N \operatorname{Trace}\left(S \Sigma^{-1}\right) \end{aligned} i=1∑NlogN(μ,Σ)=i=1∑Nlog((2π)p/2∣Σ∣1/21)+(−21(xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)(xi−μ)TΣ−1)=Const−21Nlog∣Σ∣−21NTrace(SΣ−1)在这个表达式中, ( x i − μ ) T Σ − 1 ( x i − μ ) (x_{i}-\mu)^{T} \Sigma^{-1}(x_{i}-\mu) (xi−μ)TΣ−1(xi−μ)是个标量, x x x是 p ∗ 1 p*1 p∗1, Σ \Sigma Σ是 p ∗ p p*p p∗p,我们在标量上加入迹从而可以交换矩阵的顺序(tr(AB)=tr(BA)),对于包含绝对值和迹的表达式的导数,我们有: ∂ ∂ A ( ∣ A ∣ ) = ∣ A ∣ A − 1 \frac{\partial}{\partial A}(|A|)=|A| A^{-1} ∂A∂(∣A∣)=∣A∣A−1 ∂ ∂ A Trace ( A B ) = B T \frac{\partial}{\partial A} \operatorname{Trace}(A B)=B^{T} ∂A∂Trace(AB)=BT 因此: [ ∑ i = 1 N ( ( 1 − y i ) log N ( μ 0 , Σ ) + y i log N ( μ 1 , Σ ) ] ′ = Const − 1 2 N log ∣ Σ ∣ − 1 2 N 1 Tr ace ( S 1 Σ − 1 ) − 1 2 N 2 Trace ( S 2 Σ − 1 ) \begin{array}{c} {\left[\sum_{i=1}^{N}\left(\left(1-y_{i}\right) \log \mathcal{N}\left(\mu_{0}, \Sigma\right)+y_{i} \log \mathcal{N}\left(\mu_{1}, \Sigma\right)\right]^{\prime}\right.} \\ \\ =\operatorname{Const}-\frac{1}{2} N \log |\Sigma|-\frac{1}{2} N_{1} \operatorname{Tr} \operatorname{ace}\left(S_{1} \Sigma^{-1}\right)-\frac{1}{2} N_{2} \operatorname{Trace}\left(S_{2} \Sigma^{-1}\right) \end{array} [∑i=1N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)]′=Const−21Nlog∣Σ∣−21N1Trace(S1Σ−1)−21N2Trace(S2Σ−1)分别为两个类数据内部的协方差矩阵,于是: N Σ − 1 − N 1 S 1 T Σ − 2 − N 2 S 2 T Σ − 2 = 0 N\Sigma^{-1}-N_1S_1^T\Sigma^{-2}-N_2S_2^T\Sigma^{-2}=0 NΣ−1−N1S1TΣ−2−N2S2TΣ−2=0 ⟹ Σ = N 1 S 1 + N 2 S 2 N \Longrightarrow\Sigma=\frac{N_1S_1+N_2S_2}{N} ⟹Σ=NN1S1+N2S2 这里应用了类协方差矩阵的对称性。
于是我们就利用最大后验的方法求得了我们模型假设里面的所有参数,根据模型,可以得到联合分布,也就可以得到用于推断的条件分布了。
至此我们得到了参数
ϕ
,
μ
0
,
μ
1
,
Σ
ϕ,μ0,μ1,Σ
ϕ,μ0,μ1,Σ的估计。于是,我们可以通过
a
r
g
m
a
x
y
p
(
x
∣
y
)
p
(
y
)
argmaxyp(x|y)p(y)
argmaxyp(x∣y)p(y)来预测新数据。最终GDA模型可见下图
GDA and Logistic Regression
高斯判别和LR属于两种不同的模型,但却有着很大的关系。我们可以将GDA的
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x)化为x的函数得到
p
(
y
=
1
∣
x
;
ϕ
,
μ
0
,
μ
1
,
Σ
)
=
1
1
+
exp
(
−
θ
T
x
)
p(y=1|x;\phi,\mu_0,\mu_1,\Sigma)=\frac1{1+\exp(-\theta^Tx)}
p(y=1∣x;ϕ,μ0,μ1,Σ)=1+exp(−θTx)1
这里的θ是关于
ϕ
,
μ
0
,
μ
1
,
Σ
ϕ,μ0,μ1,Σ
ϕ,μ0,μ1,Σ的函数
θ
θ
θ是关于
ϕ
,
μ
0
,
μ
1
,
Σ
ϕ,μ0,μ1,Σ
ϕ,μ0,μ1,Σ的函数,由此我们可以看到GDA是可以转化为LR的。为什么呢?
因为在GDA我们假设X是服从高斯分布,Y服从伯努利分布,而在LR中我们只假设了Y是伯努利分布,所以强假设必然是可以推出弱假设的。事实上只要X服从指数分布族,我们都可以推导出LR;相反,LR没法推导出GDA,因为LR本身是不知道X的真实分布的。(回忆LR的推导,我们是通过指数分布族来找到X到Y的映射函数,然后再进行学习参数
θ
θ
θ;也就是说,其实不管x是什么分布,我们都可以通过指数分布族变换得到logistic function来进行映射)。
那么什么时候用GDA,什么时候用LR呢?当我们知道X的分布时,GDA明显是更好的选择,因为它做了更强的假设,实际中,即使数据很少,GDA也会有很好的效果;然而,大部分时候我们都是不知道X的分布的,所以LR会有更好的健壮性。
2.2.2 朴素贝叶斯 Naive Bayes
思想:贝叶斯假设,又叫条件独立性假设(是最简单的概率图假设)
上面的高斯判别分析的是对数据集的分布作出了高斯分布的假设,同时引入伯努利分布作为类先验,从而利用最大后验求得这些假设中的参数。NB中我们假设X是离散的,服从多项分布(包括伯努利)。
朴素贝叶斯对数据的属性之间的关系作出了假设,一般地,我们有需要得到 p ( x ∣ y ) p(x|y) p(x∣y) 这个概率值,由于 x x x 有 p p p 个维度,因此需要对这么多的维度的联合概率进行采样,但是我们知道这么高维度的空间中采样需要的样本数量非常大才能获得较为准确的概率近似。
在一般的有向概率图模型中,对各个属性维度之间的条件独立关系作出了不同的假设,其中最为简单的一个假设就是在朴素贝叶斯模型描述中的条件独立性假设。 p ( x ∣ y ) = ∏ i = 1 p p ( x i ∣ y ) p(x|y)=\prod\limits_{i=1}^pp(x_i|y) p(x∣y)=i=1∏pp(xi∣y) 即: x i ⊥ x j ∣ y , ∀ i ≠ j x_i\perp x_j|y,\forall\ i\ne j xi⊥xj∣y,∀ i=j 于是利用贝叶斯定理,对于单次观测: p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) = ∏ i = 1 p p ( x i ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)p(y)=p(x)i=1∏pp(xi∣y)p(y) 对于单个维度的条件概率以及类先验作出进一步的假设:
- x i x_i xi 为连续变量: p ( x i ∣ y ) = N ( μ i , σ i 2 ) p(x_i|y)=\mathcal{N}(\mu_i,\sigma_i^2) p(xi∣y)=N(μi,σi2)
- x i x_i xi 为离散变量:类别分布(Categorical): p ( x i = i ∣ y ) = θ i , ∑ i = 1 K θ i = 1 p(x_i=i|y)=\theta_i,\sum\limits_{i=1}^K\theta_i=1 p(xi=i∣y)=θi,i=1∑Kθi=1
- p ( y ) = ϕ y ( 1 − ϕ ) 1 − y p(y)=\phi^y(1-\phi)^{1-y} p(y)=ϕy(1−ϕ)1−y
对这些参数的估计,常用 MLE 的方法直接在数据集上估计,由于不需要知道各个维度之间的关系,因此,所需数据量大大减少了。估算完这些参数,再代入贝叶斯定理中得到类别的后验分布。
3 小结
分类任务分为两类,对于需要直接输出类别的任务,感知机算法中我们在线性模型的基础上加入符号函数作为激活函数,那么就能得到这个类别,但是符号函数不光滑,于是我们采用错误驱动的方式,引入 ∑ x i ∈ D w r o n g − y i w T x i \sum\limits_{x_i\in\mathcal{D}{wrong}}-y_iw^Tx_i xi∈Dwrong∑−yiwTxi 作为损失函数,然后最小化这个误差,采用批量随机梯度下降的方法来获取最佳的参数值。而在线性判别分析中,我们将线性模型看作是数据点在某一个方向的投影,采用类内小,类间大的思路来定义损失函数,其中类内小定义为两类数据的方差之和,类间大定义为两类数据中心点的间距,对损失函数求导得到参数的方向,这个方向就是 S w − 1 ( x ‾ c 1 − x ‾ c 2 ) S_w^{-1}(\overline x_{c1}-\overline x_{c2}) Sw−1(xc1−xc2),其中 S w S_w Sw 为原数据集两类的方差之和。
另一种任务是输出分类的概率,对于概率模型,我们有两种方案,第一种是判别模型,也就是直接对类别的条件概率建模,将线性模型套入 Logistic 函数中,我们就得到了 Logistic 回归模型,这里的概率解释是两类的联合概率比值的对数是线性的,我们定义的损失函数是交叉熵(等价于 MLE),对这个函数求导得到 1 N ∑ i = 1 N ( y i − p 1 ) x i \frac{1}{N}\sum\limits_{i=1}^N(y_i-p_1)x_i N1i=1∑N(yi−p1)xi,同样利用批量随机梯度(上升)的方法进行优化。第二种是生成模型,生成模型引入了类别的先验,在高 斯判别分析中,我们对数据集的数据分布作出了假设,其中类先验是二项分布,而每一类的似然是高斯分布,对这个联合分布的对数似然进行最大化就得到了参数, ∑ i = 1 N y i x i N 1 , ∑ i = 1 N ( 1 − y i ) x i N 0 , N 1 S 1 + N 2 S 2 N , N 1 N \frac{\sum\limits_{i=1}^Ny_ix_i}{N_1},\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0},\frac{N_1S_1+N_2S_2}{N},\frac{N_1}{N} N1i=1∑Nyixi,N0i=1∑N(1−yi)xi,NN1S1+N2S2,NN1。在朴素贝叶斯中,我们进一步对属性的各个维度之间的依赖关系作出假设,条件独立性假设大大减少了数据量的需求。