线性模型-优化方法及推导过程
本文包含大量不严谨的公式写法,只是推式子时候打草记录一下…
线性模型(Linear Model)是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型。给定一个
D
D
D维的样本特征的线性组合来进行预测的模型,给定一个
D
D
D维样本
x
=
[
x
1
,
x
2
,
…
,
x
D
]
⊤
x = [x_1, x_2, \dots, x_D]^{\top}
x=[x1,x2,…,xD]⊤,其线性组合函数为:
f
(
x
;
w
)
=
w
1
x
1
+
w
2
x
2
+
⋯
+
w
D
x
D
+
b
=
w
⊤
x
+
b
\begin{aligned} f(\mathcal{x}; \mathcal{w}) &= w_1x_1 + w_2x_2 + \dots + w_Dx_D + b \\ &=\mathcal{w}^{\top}x + b \end{aligned}
f(x;w)=w1x1+w2x2+⋯+wDxD+b=w⊤x+b
其中
w
=
[
w
1
,
…
,
w
D
]
⊤
\mathcal{w} = [w_1, \dots, w_D]^{\top}
w=[w1,…,wD]⊤为
D
D
D维的权重向量,
b
b
b为偏置。上式子可以用于用于线性回归模型:
y
=
f
(
x
;
w
)
y = f(\mathcal{x; w})
y=f(x;w),其输出为连续值,因此适用于回归预测任务。但是在分类任务中,由于输出目标是离散标签,无法直接进行预测,此时一般引入一个非线性的决策函数
g
(
⋅
)
g(\cdot)
g(⋅)来预测输出目标:
y
=
g
∘
f
(
x
;
w
)
y = g \circ f(\mathcal{x; w})
y=g∘f(x;w)
f
(
x
;
w
)
f(\mathcal{x; w})
f(x;w)又称为判别函数。
如果 g ( ⋅ ) g(\cdot) g(⋅)的作用是将 f f f函数值挤压/映射到某一值域内,那么 g ( ⋅ ) g(\cdot) g(⋅)称为激活函数。
1.线性回归
这个属于很基础的模型了,它的任务很简单,就是预测连续的标签。
对于给定的样本
ξ
\xi
ξ,我们可以用
m
m
m个
x
i
x_i
xi表示其特征,那么可以将原始样本映射称为一个
m
m
m元的特征向量
x
=
(
x
1
,
x
2
,
…
,
x
m
)
T
\mathbf{x} = (x_1, x_2, \dots, x_m)^T
x=(x1,x2,…,xm)T。因此,我们可以将线性回归模型的初始模型表示为如下的线性组合形式:
f
(
x
;
w
)
=
w
1
x
1
+
w
2
x
2
+
⋯
+
w
m
x
m
f(\mathbf{x; w}) = w_1x_1 + w_2x_2 + \dots + w_m x_m
f(x;w)=w1x1+w2x2+⋯+wmxm
其中,
w
=
(
w
1
,
w
2
,
…
,
w
m
)
T
\mathbf{w} = (w_1, w_2, \dots, w_m)^T
w=(w1,w2,…,wm)T为参数向量。
参数学习方法
定义损失函数为平方误差损失函数:
R
(
w
)
=
∑
i
=
1
n
[
y
i
−
f
(
x
i
)
]
2
\mathcal{R}(w) = \sum^{n}_{i = 1}{[y_i - f(x_i)]^2}
R(w)=i=1∑n[yi−f(xi)]2
令训练样本集的特征矩阵为
X
=
(
x
1
,
x
2
,
…
,
x
n
)
=
(
x
i
j
)
m
×
n
X = (x_1, x_2, \dots, x_n) = (x_{ij})_{m \times n}
X=(x1,x2,…,xn)=(xij)m×n。相应的训练样本标签值为
y
=
(
y
1
,
y
2
,
…
,
y
n
)
T
y = (y_1, y_2, \dots, y_n)^T
y=(y1,y2,…,yn)T,可将上述损失函数转化为:
R
(
w
)
=
(
y
−
X
⊤
w
)
⊤
(
y
−
X
⊤
w
)
\mathcal{R}(w) = (y - X^{\top}w)^{\top}(y - X^{\top}w)
R(w)=(y−X⊤w)⊤(y−X⊤w)
因此,线性回归模型的构造就转化为如下最优化问题:
arg
min
w
R
(
w
)
=
arg
min
w
(
y
−
X
⊤
w
)
⊤
(
y
−
X
⊤
w
)
\arg \min_w \mathcal{R}(w) = \arg \min_w(y - X^{\top}w)^{\top}(y - X^{\top}w)
argwminR(w)=argwmin(y−X⊤w)⊤(y−X⊤w)
R
(
w
)
\mathcal{R}(w)
R(w)对参数向量
w
w
w各分量求偏导数:
∂
R
(
w
)
∂
w
=
∂
(
y
−
X
⊤
w
)
⊤
(
y
−
X
⊤
w
)
∂
w
=
∂
(
y
⊤
−
w
⊤
X
)
(
y
−
X
⊤
w
)
∂
w
=
∂
(
y
⊤
y
−
y
⊤
X
⊤
w
−
w
⊤
X
y
+
w
⊤
X
X
⊤
w
)
∂
w
=
−
∂
y
⊤
X
⊤
w
∂
w
−
∂
w
⊤
X
y
∂
w
+
w
⊤
X
X
⊤
w
∂
w
=
−
X
y
−
X
y
+
(
X
X
⊤
+
X
X
⊤
)
w
=
−
2
X
y
+
2
X
X
⊤
w
=
2
X
(
X
⊤
w
−
y
)
\begin{aligned} \frac{\partial \mathcal{R}(w)}{\partial w} &= \frac{\partial (y - X^{\top}w)^{\top}(y - X^{\top}w)}{\partial w} \\ &= \frac{\partial (y^{\top} - w^{\top}X)(y - X^{\top}w)}{\partial w} \\ &= \frac{\partial (y^{\top}y - y^{\top}X^{\top}w - w^{\top}Xy + w^{\top}XX^{\top}w)}{\partial w} \\ &= - \frac{\partial y^{\top}X^{\top}w}{\partial w} - \frac{\partial w^{\top}Xy}{\partial w} + \frac{w^{\top}XX^{\top}w}{\partial w}\\ &= -Xy - Xy + (XX^{\top} + XX^{\top})w \\ &= -2Xy + 2XX^{\top}w \\ &= 2X(X^{\top}w - y) \end{aligned}
∂w∂R(w)=∂w∂(y−X⊤w)⊤(y−X⊤w)=∂w∂(y⊤−w⊤X)(y−X⊤w)=∂w∂(y⊤y−y⊤X⊤w−w⊤Xy+w⊤XX⊤w)=−∂w∂y⊤X⊤w−∂w∂w⊤Xy+∂ww⊤XX⊤w=−Xy−Xy+(XX⊤+XX⊤)w=−2Xy+2XX⊤w=2X(X⊤w−y)
根据多元函数求极值的方式,我们令
R
(
w
)
\mathcal{R}(w)
R(w)对参数向量
w
w
w各分量的偏导数为
0
0
0,即:
∂
R
(
w
)
∂
w
=
2
X
(
X
⊤
w
−
y
)
=
0
\frac{\partial \mathcal{R}(w)}{\partial w} = 2X(X^{\top}w - y) = 0
∂w∂R(w)=2X(X⊤w−y)=0
展开,移项,可得:
w
=
(
X
X
⊤
)
−
1
X
y
w = (XX^{\top})^{-1}Xy
w=(XX⊤)−1Xy
这便是直接利用最小二乘法求解线性回归模型的式子。可以发现里面涉及到了矩阵求逆的操作,这使得最小二乘法自带了明显的限制性:要求
X
X
X的行向量之间线性无关,即不同样本的属性标记值之间不能存在线性相关性。
但实际应用中大多数样本中都存在这个问题,所以常用另一种方法来优化参数:梯度下降法。
梯度下降算法可以用于求解多元函数极值问题,具体来说,对于函数
f
(
w
)
f(w)
f(w),设其在某点的梯度为
g
r
a
d
f
(
w
)
=
▽
f
(
w
)
grad\ f(w) = \bigtriangledown f(w)
grad f(w)=▽f(w),为一矢量,则
f
(
w
)
f(w)
f(w)方向导数沿该方向取得最大值,即
f
(
w
)
f(w)
f(w)沿该方向变化最快(增大)。那么在该点沿梯度负方向减小最快。我们可以从该点沿梯度方向下降一小段(即为
η
\eta
η,实际上我们称之为步长/学习率),到达下一个点,再沿新店的梯度反方向继续下降,如此往复求得函数极值:
w
i
+
1
=
w
i
−
η
∂
f
(
w
)
∂
w
i
w_{i + 1} = w_i - \eta \frac{\partial f(w)}{\partial w_i}
wi+1=wi−η∂wi∂f(w)
以上便是线性回归常用的参数学习方法。
2.Logistic回归
Logistic回归用于解决二分类问题,而不是回归问题。
回到线性分类模型:
y
=
g
∘
f
(
x
;
w
)
y = g \circ f(\mathcal{x; w})
y=g∘f(x;w)
g
(
⋅
)
g(\cdot)
g(⋅)函数在此处的作用是激活函数,用于对函数值进行映射。在
L
o
g
i
s
t
i
c
Logistic
Logistic回归中,使用
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数作为激活函数:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1 + e ^ {-x}}
σ(x)=1+e−x1
该函数的图像为:
可以发现 s i g m o i d sigmoid sigmoid将原函数值域映射到了 [ 0 , 1 ] [0,1] [0,1]之间。
其对
x
x
x的导数为:
d
σ
(
x
)
d
x
=
d
(
1
+
e
−
x
)
−
1
d
x
=
−
(
1
+
e
−
x
)
−
2
×
(
−
e
−
x
)
=
1
1
+
e
−
x
×
e
−
x
1
+
e
−
x
=
1
1
+
e
−
x
×
(
1
−
1
1
+
e
−
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\begin{aligned} \frac{\mathrm{d} \sigma(x)}{\mathrm{d}x} &= \frac{\mathrm{d} (1 + e^{-x})^{-1}}{\mathrm{d}x}\\ &= -(1 + e^{-x})^{-2} \times (-e^{-x}) \\ &= \frac{1}{1 + e ^ {-x}} \times \frac{e^{-x}}{1 + e ^ {-x}} \\ &= \frac{1}{1 + e ^ {-x}} \times (1 - \frac{1}{1 + e ^ {-x}}) \\ &= \sigma(x) (1 - \sigma(x)) \end{aligned}
dxdσ(x)=dxd(1+e−x)−1=−(1+e−x)−2×(−e−x)=1+e−x1×1+e−xe−x=1+e−x1×(1−1+e−x1)=σ(x)(1−σ(x))
在二分类问题中,我们假设标签取
{
0
,
1
}
\{0, 1\}
{0,1},则标签
y
=
1
y = 1
y=1的后验概率为:
p
(
y
=
1
∣
x
)
=
σ
(
w
⊤
x
)
=
1
1
+
e
x
p
(
−
w
⊤
x
)
p(y = 1 | x) = \sigma(w^{\top}x) = \frac{1}{1 + exp(-w^{\top}x)}
p(y=1∣x)=σ(w⊤x)=1+exp(−w⊤x)1
(
w
w
w为增广权值向量,
x
x
x为增广特征向量,包含偏置)
则标签
y
=
0
y = 0
y=0的后验概率为:
p
(
y
=
0
∣
x
)
=
1
−
p
(
y
=
1
∣
x
)
=
exp
(
−
w
⊤
x
)
1
+
exp
(
−
w
⊤
x
)
p(y = 0 | x) = 1 - p(y = 1 | x) = \frac{\exp(-w^{\top}x)}{1 + \exp(-w^{\top}x)}
p(y=0∣x)=1−p(y=1∣x)=1+exp(−w⊤x)exp(−w⊤x)
结合上述两个公式,我们可以发现:
w
⊤
x
=
log
p
(
y
=
1
∣
x
)
1
−
p
(
y
=
1
∣
1
)
=
log
p
(
y
=
1
∣
x
)
p
(
x
=
0
∣
x
)
w^{\top}x = \log \frac{p(y = 1 | x)}{1 - p(y = 1 | 1)} = \log \frac{p(y = 1 | x)}{p(x = 0 | x)}
w⊤x=log1−p(y=1∣1)p(y=1∣x)=logp(x=0∣x)p(y=1∣x)
可以发现
f
(
x
)
f(x)
f(x)的值等于样本正反例后验概率比值的对数,也就是对数几率。所以Logistic回归可以看作预测值为标签的对数几率的回归模型。
参数学习方法
Logistic回归解决分类问题,使用交叉熵作为损失函数,使用梯度下降更新参数。
对于给定的 N N N个训练样本 { x ( n ) , y ( n ) } n = 1 N \{x^{(n)}, y^{(n)}\}_{n = 1}^{N} {x(n),y(n)}n=1N,用 L o g i s t i c Logistic Logistic回归模型对每个样本进行预测,输出其标签为 1 1 1的后验概率,记作 y ^ ( n ) \hat{y}^{(n)} y^(n):
由于
y
n
∈
{
0
,
1
}
y^{n} \in \{0, 1\}
yn∈{0,1},样本
(
x
(
n
)
,
y
(
n
)
)
(x^{(n)}, y^{(n)})
(x(n),y(n))的真实条件概率可以表示为:
P
r
(
y
(
n
)
=
1
∣
x
(
n
)
)
=
y
(
n
)
P
r
(
y
(
n
)
=
0
∣
x
(
n
)
)
=
1
−
y
(
n
)
P_r(y^{(n)} = 1 | x^{(n)}) = y^{(n)}\\ P_r(y^{(n)} = 0 | x^{(n)}) = 1 - y^{(n)}\\
Pr(y(n)=1∣x(n))=y(n)Pr(y(n)=0∣x(n))=1−y(n)
构造损失函数(交叉熵):
R
(
w
)
=
−
1
N
∑
n
=
1
N
(
(
p
r
(
y
(
n
)
=
1
∣
x
)
log
y
^
(
n
)
+
p
r
(
y
(
n
)
=
0
∣
x
)
log
(
1
−
y
^
(
n
)
)
)
\mathcal{R}(w) = -\frac{1}{N}\sum^{N}_{n = 1}\big(( p_r(y^{(n)} = 1 | x) \log \hat{y}^{(n)} + p_r(y^{(n)} = 0 | x) \log(1 - \hat{y}^{(n)})\big)
R(w)=−N1n=1∑N((pr(y(n)=1∣x)logy^(n)+pr(y(n)=0∣x)log(1−y^(n)))
应用经验风险最小化原则,
R
(
w
)
\mathcal{R}(w)
R(w)关于参数
w
w
w的偏导数为:
∂
R
(
w
)
∂
w
=
−
1
N
∑
n
=
1
N
(
y
(
n
)
y
^
(
n
)
(
1
−
y
^
(
n
)
)
y
^
(
n
)
x
(
n
)
−
(
1
−
y
(
n
)
)
y
^
(
n
)
(
1
−
y
^
(
n
)
)
1
−
y
^
(
n
)
x
(
n
)
)
=
−
1
N
∑
n
=
1
N
(
y
(
n
)
(
1
−
y
^
n
)
x
(
n
)
−
(
1
−
y
(
n
)
)
y
^
(
n
)
x
(
n
)
)
=
=
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
\begin{aligned} \frac{\partial \mathcal{R}(w)}{\partial w} &= - \frac{1}{N} \sum_{n = 1}^{N} \big( y^{(n)}\frac{\hat{y}^{(n)}(1 - \hat{y}^{(n)})}{\hat{y}^{(n)}}x^{(n)} - (1 - y^{(n)})\frac{\hat{y}^{(n)}(1 - \hat{y}^{(n)})}{1 - \hat{y}^{(n)}}x^{(n)} \big) \\ &= - \frac{1}{N} \sum_{n = 1}^{N} \big( y^{(n)}(1 - \hat{y}^{n})x^{(n)} - (1 - y^{(n)}) \hat{y}^{(n)}x^{(n)} \big) \\ &= =\frac{1}{N} \sum_{n = 1}^{N} x^{(n)}(y^{(n)} - \hat{y}^{(n)}) \end{aligned}
∂w∂R(w)=−N1n=1∑N(y(n)y^(n)y^(n)(1−y^(n))x(n)−(1−y(n))1−y^(n)y^(n)(1−y^(n))x(n))=−N1n=1∑N(y(n)(1−y^n)x(n)−(1−y(n))y^(n)x(n))==N1n=1∑Nx(n)(y(n)−y^(n))
采用梯度下降法,
L
o
g
i
s
t
i
c
Logistic
Logistic回归的训练过程为:初始化
w
0
←
0
w_0 \leftarrow 0
w0←0,然后通过下式来迭代更新参数:
w
t
+
1
←
w
t
+
α
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
w
t
(
n
)
)
w_{t + 1} \leftarrow w_t + \alpha \frac{1}{N}\sum_{n = 1}^{N}x^{(n)}\big( y^{(n)} - \hat{y}_{w_t}^{(n)} \big)
wt+1←wt+αN1n=1∑Nx(n)(y(n)−y^wt(n))
其中
α
\alpha
α是学习率,
y
^
w
t
(
n
)
\hat{y}_{w_t}^{(n)}
y^wt(n)是当参数为
w
t
w_t
wt时,Logistic回归模型的输出。
3.Softmax回归
Softmax回归可以看作多分类的Logistic回归。
Softmax函数:
S
o
f
t
m
a
x
(
x
i
)
=
exp
(
x
i
)
∑
j
=
1
N
exp
(
x
j
)
Softmax(x_i) = \frac{\exp(x_i)}{\sum_{j = 1}^{N}\exp(x_j)}
Softmax(xi)=∑j=1Nexp(xj)exp(xi)
对
x
i
x_i
xi的偏导数为:
∂
S
o
f
t
m
a
x
(
x
i
)
∂
x
i
=
∂
exp
(
x
i
)
×
[
∑
j
=
1
N
exp
(
x
j
)
]
−
1
∂
x
i
=
∂
exp
(
x
i
)
×
[
∑
j
=
1
i
−
1
exp
(
x
j
)
+
exp
(
x
i
)
+
∑
j
=
i
+
1
N
exp
(
x
j
)
]
−
1
∂
x
i
=
exp
(
x
i
)
×
[
∑
j
=
1
N
exp
(
x
j
)
]
−
1
+
(
−
1
)
×
exp
(
x
i
)
×
[
∑
j
=
1
N
exp
(
x
j
)
]
−
2
×
exp
(
x
i
)
=
exp
(
x
i
)
×
[
∑
j
=
1
N
exp
(
x
j
)
]
−
1
−
exp
(
x
i
)
2
×
[
∑
j
=
1
N
exp
(
x
j
)
]
−
2
=
S
o
f
t
m
a
x
(
x
i
)
−
S
o
f
t
m
a
x
(
x
)
2
=
S
o
f
t
m
a
x
(
x
i
)
×
(
1
−
S
o
f
t
m
a
x
(
x
i
)
)
\begin{aligned} \frac{\partial Softmax(x_i)}{\partial x_i} &= \frac{\partial \exp(x_i) \times [\sum_{j = 1}^{N}\exp(x_j)]^{-1}}{\partial x_i} \\ &= \frac{\partial \exp(x_i) \times [\sum_{j = 1}^{i - 1} \exp(x_j) + \exp(x_i) + \sum_{j = i + 1}^{N} \exp(x_j)]^{-1}}{\partial x_i} \\ &= \exp(x_i) \times [\sum_{j = 1}^{N}\exp(x_j)]^{-1} + (-1) \times \exp(x_i) \times [\sum_{j = 1}^{N}\exp(x_j)]^{-2} \times \exp(x_i) \\ &= \exp(x_i) \times [\sum_{j = 1}^{N}\exp(x_j)]^{-1} - \exp(x_i)^2 \times [\sum_{j = 1}^{N}\exp(x_j)]^{-2} \\ &= Softmax(x_i) - Softmax(x)^2 \\ &= Softmax(x_i) \times (1 - Softmax(x_i)) \end{aligned}
∂xi∂Softmax(xi)=∂xi∂exp(xi)×[∑j=1Nexp(xj)]−1=∂xi∂exp(xi)×[∑j=1i−1exp(xj)+exp(xi)+∑j=i+1Nexp(xj)]−1=exp(xi)×[j=1∑Nexp(xj)]−1+(−1)×exp(xi)×[j=1∑Nexp(xj)]−2×exp(xi)=exp(xi)×[j=1∑Nexp(xj)]−1−exp(xi)2×[j=1∑Nexp(xj)]−2=Softmax(xi)−Softmax(x)2=Softmax(xi)×(1−Softmax(xi))
对于多分类问题
y
∈
1
,
2
,
…
,
C
y \in {1, 2, \dots, C}
y∈1,2,…,C可以有
C
C
C个取值,给定一个样本
x
x
x,Softmax回归预测的属于类别
c
c
c的条件概率为:
p
(
y
=
c
∣
x
)
=
exp
(
w
c
⊤
x
)
∑
c
′
=
1
C
exp
(
w
c
′
⊤
x
)
p(y = c | x) = \frac{\exp(w_c^{\top}x)}{\sum^{C}_{c' = 1}\exp(w_{c'}^{\top}x)}
p(y=c∣x)=∑c′=1Cexp(wc′⊤x)exp(wc⊤x)
在Softmax回归中,模型的输出为一个
C
C
C维的向量,分别表示对属于每个类别的概率的预测值。因此决策函数可以写作:
y
^
=
arg
max
c
=
1
C
p
(
y
=
c
∣
x
)
=
arg
max
c
=
1
C
w
c
⊤
x
\hat{y} = \arg\max^{C}_{c=1} p(y = c | x) = \arg\max^{C}_{c=1} w_c^{\top}x
y^=argc=1maxCp(y=c∣x)=argc=1maxCwc⊤x
参数学习方法
Softmax回归同样使用交叉熵作为损失函数,用梯度下降来优化参数。
用
C
C
C维one-hot
向量
y
∈
{
0
,
1
}
C
y \in \{0, 1\}^C
y∈{0,1}C来表示类别标签,对于类别
c
c
c,其类别标签向量为:
y
=
[
I
(
1
=
c
)
,
I
(
2
=
c
)
,
…
,
I
(
C
=
c
)
]
⊤
y = [I(1 = c), I(2 = c), \dots, I(C = c)]^{\top}
y=[I(1=c),I(2=c),…,I(C=c)]⊤
根据定义构造风险函数:
R
(
w
)
=
−
1
N
∑
n
=
1
N
∑
c
=
1
C
y
c
(
n
)
log
y
^
c
(
n
)
=
−
1
N
∑
n
=
1
N
(
y
(
n
)
)
⊤
log
y
^
(
n
)
\begin{aligned} \mathcal{R}(w) &= - \frac{1}{N} \sum^{N}_{n = 1} \sum^{C}_{c = 1} y_c^{(n)}\log \hat{y}_c^{(n)}\\ &= - \frac{1}{N} \sum_{n = 1}^{N}(y^{(n)})^{\top} \log \hat{y}^{(n)} \end{aligned}
R(w)=−N1n=1∑Nc=1∑Cyc(n)logy^c(n)=−N1n=1∑N(y(n))⊤logy^(n)
风险函数
R
(
w
)
\mathcal{R}(w)
R(w)关于
w
w
w的梯度:
R
(
w
)
=
−
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
⊤
\mathcal{R}(w) = -\frac{1}{N} \sum^{N}_{n = 1}x^{(n)}(y^{(n)} - \hat{y}^{(n)})^{\top}
R(w)=−N1n=1∑Nx(n)(y(n)−y^(n))⊤
求解过程:
根据上文Softmax导数的结果,将其改写为向量式:
∂
S
o
f
t
m
a
x
(
x
i
)
∂
x
i
=
d
i
a
g
(
y
)
−
y
y
⊤
\frac{\partial Softmax(x_i)}{\partial x_i} = \mathrm{diag}(y) - yy^{\top}
∂xi∂Softmax(xi)=diag(y)−yy⊤
若上式
x
i
=
w
⊤
x
=
[
w
1
⊤
x
,
w
2
⊤
x
,
…
,
w
C
⊤
x
]
⊤
x_i = w^{\top}x = [w_1^{\top}x, w_2^{\top}x, \dots, w_C^{\top}x]^{\top}
xi=w⊤x=[w1⊤x,w2⊤x,…,wC⊤x]⊤,则
∂
w
⊤
x
∂
w
c
\frac{\partial w^{\top}x}{\partial w_c}
∂wc∂w⊤x为第
c
c
c列为
x
x
x,其余为
0
0
0的矩阵,即:
∂
w
⊤
x
∂
w
c
=
[
∂
w
1
⊤
x
∂
w
c
,
∂
w
2
⊤
x
∂
w
c
,
…
,
∂
w
C
⊤
x
∂
w
c
]
⊤
=
[
0
,
0
,
…
,
x
,
…
,
0
]
\begin{aligned} \frac{\partial w^{\top}x}{\partial w_c} &= [\frac{\partial w_1^{\top}x}{\partial w_c}, \frac{\partial w_2^{\top}x}{\partial w_c}, \dots, \frac{\partial w_C^{\top}x}{\partial w_c}]^{\top} \\ &= [0, 0, \dots, x, \dots, 0] \end{aligned}
∂wc∂w⊤x=[∂wc∂w1⊤x,∂wc∂w2⊤x,…,∂wc∂wC⊤x]⊤=[0,0,…,x,…,0]
令
z
=
w
⊤
x
z = w^{\top}x
z=w⊤x,那么根据链式求导法则:
L
(
n
)
(
w
)
=
−
(
y
(
n
)
)
⊤
log
y
^
(
n
)
\mathcal{L}^{(n)}(w) = -(y^{(n)})^{\top} \log \hat{y}^{(n)}
L(n)(w)=−(y(n))⊤logy^(n)关于
w
c
w_c
wc的导数为:
∂
L
(
n
)
(
w
)
∂
w
c
=
−
∂
(
(
y
(
n
)
)
⊤
log
y
^
(
n
)
)
∂
w
c
=
−
∂
z
(
n
)
∂
w
c
∂
y
^
(
n
)
∂
z
(
n
)
∂
log
y
^
(
n
)
∂
y
^
(
n
)
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
d
i
a
g
(
y
^
(
n
)
)
−
y
^
(
n
)
(
y
^
(
n
)
)
⊤
)
(
d
i
a
g
(
y
^
(
n
)
)
)
−
1
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
I
−
y
^
(
n
)
1
C
⊤
)
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
y
(
n
)
−
y
^
(
n
)
1
C
⊤
y
(
n
)
)
=
−
M
c
(
x
(
n
)
)
(
y
(
n
)
−
y
^
(
n
)
)
=
−
x
(
n
)
[
y
(
n
)
−
y
^
(
n
)
]
c
\begin{aligned} \frac{\partial \mathcal{L}^{(n)}(w)}{\partial w_c} &= -\frac{\partial \big((y^{(n)})^{\top} \log \hat{y}^{(n)} \big)}{\partial w_c} \\ &= -\frac{\partial z^{(n)}}{\partial w_c} \frac{\partial \hat{y}^{(n)}}{\partial z^{(n)}}\frac{\partial \log \hat{y}^{(n)}}{\partial \hat{y}^{(n)}}y^{(n)} \\ &= -\mathbb{M}_c(x^{(n)})(\mathrm{diag}(\hat{y}^{(n)}) - \hat{y}^{(n)}(\hat{y}^{(n)})^{\top})(\mathrm{diag}(\hat{y}^{(n)}))^{-1}y^{(n)} \\ &= -\mathbb{M}_c(x^{(n)})(I - \hat{y}^{(n)}1_C^{\top})y^{(n)} \\ &= -\mathbb{M}_c(x^{(n)})(y^{(n)} - \hat{y}^{(n)}1_C^{\top}y^{(n)}) \\ &= -\mathbb{M}_c(x^{(n)})(y^{(n)} - \hat{y}^{(n)}) \\ &= -x^{(n)}[y^{(n)} - \hat{y}^{(n)}]_c \end{aligned}
∂wc∂L(n)(w)=−∂wc∂((y(n))⊤logy^(n))=−∂wc∂z(n)∂z(n)∂y^(n)∂y^(n)∂logy^(n)y(n)=−Mc(x(n))(diag(y^(n))−y^(n)(y^(n))⊤)(diag(y^(n)))−1y(n)=−Mc(x(n))(I−y^(n)1C⊤)y(n)=−Mc(x(n))(y(n)−y^(n)1C⊤y(n))=−Mc(x(n))(y(n)−y^(n))=−x(n)[y(n)−y^(n)]c
故:
∂
L
(
n
)
(
w
)
∂
w
=
−
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
⊤
\frac{\partial \mathcal{L}^{(n)}(w)}{\partial w} = -x^{(n)}(y^{(n)} - \hat{y}^{(n)})^{\top}
∂w∂L(n)(w)=−x(n)(y(n)−y^(n))⊤
采用梯度下降法,则训练过程为:初始化
w
0
←
0
w_0 \leftarrow 0
w0←0,迭代更新:
w
t
+
1
←
w
t
+
α
(
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
w
t
(
n
)
)
⊤
)
w_{t + 1} \leftarrow w_t + \alpha \big( \frac{1}{N} \sum_{n = 1}^{N}x^{(n)}(y^{(n)} - \hat{y}^{(n)}_{w_t})^{\top} \big)
wt+1←wt+α(N1n=1∑Nx(n)(y(n)−y^wt(n))⊤)
α
\alpha
α为学习率。
4.感知机
感知机是一种基于错误驱动在线学习的简单二分类线性模型。
y
^
=
s
g
n
(
w
⊤
x
)
\hat{y} = \mathrm{sgn}(w^{\top}x)
y^=sgn(w⊤x)
给定
N
N
N个样本的训练集:
{
x
(
n
)
,
y
(
n
)
}
n
=
1
N
\{x^{(n)}, y^{(n)}\}_{n = 1}^{N}
{x(n),y(n)}n=1N,其中
y
(
n
)
∈
{
+
1
,
−
1
}
y^{(n)} \in \{+1, -1\}
y(n)∈{+1,−1},感知机尝试找到一组参数
w
∗
w^{*}
w∗,使得对于每个样本
(
x
(
n
)
,
y
(
n
)
)
(x^{(n)}, y^{(n)})
(x(n),y(n))有:
y
(
n
)
w
∗
⊤
x
(
n
)
>
0
,
∀
n
∈
{
1
,
…
,
N
}
y^{(n)}w^{* \top}x^{(n)} > 0, \forall n \in \{1, \dots, N\}
y(n)w∗⊤x(n)>0,∀n∈{1,…,N}
参数学习方法
感知机的参数学习方法是直接定义的:初始化权重向量
w
←
0
w \leftarrow 0
w←0,每分错一个样本
(
x
,
y
)
(x, y)
(x,y)时,就用这个样本来更新权重:
w
←
w
+
y
x
w \leftarrow w + yx
w←w+yx
根据以上定义反推感知机的损失函数:
L
(
w
;
x
,
y
)
=
m
a
x
(
0
,
−
y
w
⊤
x
)
\mathcal{L}(w; x, y) = max(0, -yw^{\top}x)
L(w;x,y)=max(0,−yw⊤x)
采用随机梯度下降更新参数,每次更新的梯度为:
∂
L
(
w
;
x
,
y
)
∂
w
=
{
0
i
f
y
w
⊤
x
>
0
−
y
x
i
f
y
w
⊤
x
<
0
\frac{\partial \mathcal{L}(w; x, y)}{\partial w} = \left\{\begin{matrix} 0 &\mathrm{if}\ yw^{\top}x > 0 \\ -yx &\mathrm{if} \ yw^{\top}x < 0 \end{matrix}\right.
∂w∂L(w;x,y)={0−yxif yw⊤x>0if yw⊤x<0
5.支持向量机
支持向量机(Support Vector Machine, SVM)是一个经典的二分类算法,其找到的分割超平面具有更好的鲁棒性,因此广泛应用在很多任务上,并表现出很强优势。
给定一个二分类器数据集
D
=
{
(
x
(
n
)
,
y
(
n
)
}
n
=
1
N
\mathcal{D} = \{(x^{(n)}, y^{(n)}\}_{n = 1}^{N}
D={(x(n),y(n)}n=1N,其中
y
n
∈
{
+
1
,
−
1
}
y_n \in \{+1, -1\}
yn∈{+1,−1},如果两类样本是线性可分的,即存在一个超平面:
w
⊤
x
+
b
=
0
w^{\top}x + b = 0
w⊤x+b=0
将两类样本分开,那么对于每个样本都有
y
(
n
)
(
w
⊤
x
+
b
)
>
0
y^{(n)}(w^{\top}x + b) > 0
y(n)(w⊤x+b)>0。
数据集
D
\mathcal{D}
D中每个样本
x
(
n
)
x^{(n)}
x(n)到分割超平面的距离为:
γ
(
n
)
=
∣
w
⊤
x
(
n
)
+
b
∣
∣
∣
w
∣
∣
=
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
∣
∣
w
∣
∣
\gamma^{(n)} = \frac{|w^{\top}x^{(n)} + b|}{||w||} = \frac{y^{(n)}(w^{\top}x^{(n)} + b)}{||w||}
γ(n)=∣∣w∣∣∣w⊤x(n)+b∣=∣∣w∣∣y(n)(w⊤x(n)+b)
我们定义间隔
γ
\gamma
γ为整个数据集
D
\mathcal{D}
D中所有样本到分割超平面的最短距离:
γ
=
min
n
γ
(
n
)
\gamma = \min_{n} \gamma^{(n)}
γ=nminγ(n)
如果间隔
γ
\gamma
γ越大,其分割超平面对两个数据集的划分越稳定,不容易受到噪声等因素的干扰。支持向量机的目标是寻找一个超平面
(
w
∗
,
b
∗
)
(w^{*}, b^{*})
(w∗,b∗)使得
γ
\gamma
γ最大,即下列约束问题:
max
w
,
b
γ
s
.
t
.
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
∣
∣
w
∣
∣
≥
γ
,
∀
n
∈
{
1
,
…
,
N
}
\begin{aligned} \max_{w, b}\ \ &\gamma \\ \mathrm{s.t.}\ \ &\frac{y^{(n)}(w^{\top}x^{(n)} + b)}{||w||} \geq \gamma, \forall n \in \{1, \dots, N\} \end{aligned}
w,bmax s.t. γ∣∣w∣∣y(n)(w⊤x(n)+b)≥γ,∀n∈{1,…,N}
由于同时对
w
,
b
w,b
w,b缩放不会改变样本
x
(
n
)
x^{(n)}
x(n)到分割超平面的距离,我们可以限制
∣
∣
w
∣
∣
⋅
γ
=
1
||w|| \cdot \gamma = 1
∣∣w∣∣⋅γ=1,则公式等价于:
max
w
,
b
γ
s
.
t
.
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
≥
1
,
∀
n
∈
{
1
,
…
,
N
}
\begin{aligned} \max_{w, b}\ \ &\gamma \\ \mathrm{s.t.}\ \ &y^{(n)}(w^{\top}x^{(n)} + b) \geq 1, \forall n \in \{1, \dots, N\} \end{aligned}
w,bmax s.t. γy(n)(w⊤x(n)+b)≥1,∀n∈{1,…,N}
数据集中所有满足
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
=
1
y^{(n)}(w^{\top}x^{(n)} + b) = 1
y(n)(w⊤x(n)+b)=1的样本点,都称为支持向量。
参数学习方法
将支持向量积的公式改写为凸优化形式:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
1
−
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
≤
0
,
∀
n
∈
{
1
,
…
,
N
}
\begin{aligned} \min_{w, b}\ \ &\frac{1}{2}||w||^2 \\ \mathrm{s.t.}\ \ &1 - y^{(n)}(w^{\top}x^{(n)} + b) \leq 0, \forall n \in \{1, \dots, N\} \end{aligned}
w,bmin s.t. 21∣∣w∣∣21−y(n)(w⊤x(n)+b)≤0,∀n∈{1,…,N}
使用拉格朗日乘数法,构造拉格朗日函数:
Λ
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
n
=
1
N
λ
n
(
1
−
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
)
\Lambda(w, b, \lambda) = \frac{1}{2}||w||^2 + \sum_{n = 1}^{N}\lambda_n \big(1 - y^{(n)}(w^{\top}x^{(n)} + b)\big)
Λ(w,b,λ)=21∣∣w∣∣2+n=1∑Nλn(1−y(n)(w⊤x(n)+b))
计算
Λ
(
w
,
b
,
λ
)
\Lambda(w, b, \lambda)
Λ(w,b,λ)关于
w
,
b
w, b
w,b的导数:
∂
Λ
(
w
,
b
,
λ
)
∂
w
=
∂
[
1
2
∣
∣
w
∣
∣
2
+
∑
n
=
1
N
λ
n
(
1
−
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
)
]
∂
w
=
w
−
∑
n
=
1
N
λ
n
y
(
n
)
x
(
n
)
\begin{aligned} \frac{\partial \Lambda(w, b, \lambda)}{\partial w} &= \frac{\partial \big[\frac{1}{2}||w||^2 + \sum_{n = 1}^{N}\lambda_n \big(1 - y^{(n)}(w^{\top}x^{(n)} + b)\big)\big]}{\partial w} \\ &= w - \sum^{N}_{n = 1}\lambda_n y^{(n)}x^{(n)} \\ \end{aligned}
∂w∂Λ(w,b,λ)=∂w∂[21∣∣w∣∣2+∑n=1Nλn(1−y(n)(w⊤x(n)+b))]=w−n=1∑Nλny(n)x(n)
∂ Λ ( w , b , λ ) ∂ b = ∂ [ 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ n = 1 N λ n ( 1 − y ( n ) ( w ⊤ x ( n ) + b ) ) ] ∂ b = ∑ n = 1 N λ n y ( n ) \begin{aligned} \frac{\partial \Lambda(w, b, \lambda)}{\partial b} &= \frac{\partial \big[\frac{1}{2}||w||^2 + \sum_{n = 1}^{N}\lambda_n \big(1 - y^{(n)}(w^{\top}x^{(n)} + b)\big)\big]}{\partial b} \\ &= \sum_{n = 1}^{N}\lambda_ny^{(n)} \end{aligned} ∂b∂Λ(w,b,λ)=∂b∂[21∣∣w∣∣2+∑n=1Nλn(1−y(n)(w⊤x(n)+b))]=n=1∑Nλny(n)
令
Λ
(
w
,
b
,
λ
)
\Lambda(w, b, \lambda)
Λ(w,b,λ)关于
w
,
b
w, b
w,b的导数等于
0
0
0,可得:
w
=
∑
n
=
1
N
λ
n
y
(
n
)
x
(
n
)
0
=
∑
n
=
1
N
λ
n
y
(
n
)
w = \sum^{N}_{n = 1}\lambda_n y^{(n)}x^{(n)} \\ 0 = \sum^{N}_{n = 1}\lambda_n y^{(n)}
w=n=1∑Nλny(n)x(n)0=n=1∑Nλny(n)
结合拉格朗日函数及上式:原问题等价于:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
,
w
=
∑
n
=
1
N
λ
n
y
(
n
)
x
(
n
)
s
.
t
.
1
−
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
≤
0
,
∑
n
=
1
N
λ
n
y
(
n
)
=
0
,
∀
n
∈
{
1
,
…
,
N
}
\begin{aligned} \min_{w, b}\ \ &\frac{1}{2}||w||^2, w = \sum^{N}_{n = 1}\lambda_n y^{(n)}x^{(n)} \\ \mathrm{s.t.}\ \ &1 - y^{(n)}(w^{\top}x^{(n)} + b) \leq 0,\ \sum^{N}_{n = 1}\lambda_n y^{(n)} = 0,\ \forall n \in \{1, \dots, N\} \end{aligned}
w,bmin s.t. 21∣∣w∣∣2,w=n=1∑Nλny(n)x(n)1−y(n)(w⊤x(n)+b)≤0, n=1∑Nλny(n)=0, ∀n∈{1,…,N}
构造拉格朗日对偶函数:
Γ
(
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
n
=
1
N
λ
n
×
[
1
−
y
(
n
)
(
w
⊤
x
(
n
)
+
b
)
]
=
1
2
w
⊤
w
−
∑
n
=
1
N
λ
n
y
(
n
)
w
⊤
x
(
n
)
−
∑
n
=
1
N
λ
n
y
(
n
)
b
+
∑
n
=
1
N
λ
n
=
1
2
w
⊤
∑
n
=
1
N
λ
n
y
(
n
)
x
(
n
)
−
w
⊤
∑
n
=
1
N
λ
n
y
(
n
)
x
(
n
)
+
∑
n
=
1
N
λ
n
=
−
1
2
∑
n
=
1
N
∑
m
=
1
N
λ
m
λ
n
y
(
m
)
y
(
n
)
(
x
(
m
)
)
⊤
x
(
n
)
+
∑
n
=
1
N
λ
n
\begin{aligned} \Gamma(\lambda) &= \frac{1}{2}||w||^{2} + \sum_{n = 1}^{N}\lambda_n \times [{1 - y^{(n)}(w^{\top}x^{(n)} + b)}] \\ &= \frac{1}{2}w^{\top}w - \sum_{n = 1}^{N}\lambda_ny^{(n)}w^{\top}x^{(n)} - \sum_{n = 1}^{N}\lambda_ny^{(n)}b + \sum_{n = 1}^{N}\lambda_n \\ &= \frac{1}{2}w^{\top} \sum^{N}_{n = 1}\lambda_n y^{(n)}x^{(n)} - w^{\top} \sum^{N}_{n = 1}\lambda_n y^{(n)}x^{(n)} + \sum_{n = 1}^{N}\lambda_n \\ &= -\frac{1}{2}\sum_{n = 1}^{N}\sum_{m = 1}^{N}\lambda_m\lambda_ny^{(m)}y^{(n)}(x^{(m)})^{\top}x^{(n)} + \sum_{n = 1}^{N}\lambda_n \end{aligned}
Γ(λ)=21∣∣w∣∣2+n=1∑Nλn×[1−y(n)(w⊤x(n)+b)]=21w⊤w−n=1∑Nλny(n)w⊤x(n)−n=1∑Nλny(n)b+n=1∑Nλn=21w⊤n=1∑Nλny(n)x(n)−w⊤n=1∑Nλny(n)x(n)+n=1∑Nλn=−21n=1∑Nm=1∑Nλmλny(m)y(n)(x(m))⊤x(n)+n=1∑Nλn
根据
K
K
T
KKT
KKT条件中的互补松弛条件,最优解满足:
λ
n
∗
(
1
−
y
(
n
)
(
w
∗
⊤
x
(
n
)
+
b
∗
)
)
=
0
\lambda_n^{*}(1 - y^{(n)}(w^{*\top}x^{(n)} + b^*)) = 0
λn∗(1−y(n)(w∗⊤x(n)+b∗))=0
如果样本
x
(
n
)
x^{(n)}
x(n)不在约束边界上
λ
n
∗
=
0
\lambda^*_n = 0
λn∗=0,约束失效;如果在约束边界上,样本点即支持向量,即距离决策平面最近的点。
只要得到
λ
∗
\lambda^*
λ∗即可通过得到
w
∗
,
b
∗
w^*, b^*
w∗,b∗,则最优参数的支持向量机决策函数为:
f
(
x
)
=
s
g
n
(
w
∗
⊤
x
+
b
∗
)
=
s
g
n
(
∑
n
=
1
N
λ
n
∗
y
(
n
)
x
(
n
)
+
b
∗
)
\begin{aligned} f(x) &= \mathrm{sgn}(w^{*\top}x + b^*) \\ &=\mathrm{sgn}\big(\sum^{N}_{n = 1}\lambda_n^* y^{(n)}x^{(n)} + b^*\big) \end{aligned}
f(x)=sgn(w∗⊤x+b∗)=sgn(n=1∑Nλn∗y(n)x(n)+b∗)