当前位置: 首页 > news >正文

线性模型-优化方法及推导过程

本文包含大量不严谨的公式写法,只是推式子时候打草记录一下…

线性模型(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=wx+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=gf(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=1n[yif(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)=(yXw)(yXw)
因此,线性回归模型的构造就转化为如下最优化问题:
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(yXw)(yXw)
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} wR(w)=w(yXw)(yXw)=w(ywX)(yXw)=w(yyyXwwXy+wXXw)=wyXwwwXy+wwXXw=XyXy+(XX+XX)w=2Xy+2XXw=2X(Xwy)
根据多元函数求极值的方式,我们令 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 wR(w)=2X(Xwy)=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ηwif(w)
以上便是线性回归常用的参数学习方法。

2.Logistic回归

Logistic回归用于解决二分类问题,而不是回归问题。

回到线性分类模型:
y = g ∘ f ( x ; w ) y = g \circ f(\mathcal{x; w}) y=gf(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+ex1
该函数的图像为:

在这里插入图片描述

可以发现 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+ex)1=(1+ex)2×(ex)=1+ex1×1+exex=1+ex1×(11+ex1)=σ(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)=σ(wx)=1+exp(wx)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)=1p(y=1∣x)=1+exp(wx)exp(wx)
结合上述两个公式,我们可以发现:
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)} wx=log1p(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))=1y(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=1N((pr(y(n)=1∣x)logy^(n)+pr(y(n)=0∣x)log(1y^(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} wR(w)=N1n=1N(y(n)y^(n)y^(n)(1y^(n))x(n)(1y(n))1y^(n)y^(n)(1y^(n))x(n))=N1n=1N(y(n)(1y^n)x(n)(1y(n))y^(n)x(n))==N1n=1Nx(n)(y(n)y^(n))
采用梯度下降法, L o g i s t i c Logistic Logistic回归的训练过程为:初始化 w 0 ← 0 w_0 \leftarrow 0 w00,然后通过下式来迭代更新参数:
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+1wt+αN1n=1Nx(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} xiSoftmax(xi)=xiexp(xi)×[j=1Nexp(xj)]1=xiexp(xi)×[j=1i1exp(xj)+exp(xi)+j=i+1Nexp(xj)]1=exp(xi)×[j=1Nexp(xj)]1+(1)×exp(xi)×[j=1Nexp(xj)]2×exp(xi)=exp(xi)×[j=1Nexp(xj)]1exp(xi)2×[j=1Nexp(xj)]2=Softmax(xi)Softmax(x)2=Softmax(xi)×(1Softmax(xi))

对于多分类问题 y ∈ 1 , 2 , … , C y \in {1, 2, \dots, C} y1,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=cx)=c=1Cexp(wcx)exp(wcx)
在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=cx)=argc=1maxCwcx

参数学习方法

Softmax回归同样使用交叉熵作为损失函数,用梯度下降来优化参数。

C C Cone-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=1Nc=1Cyc(n)logy^c(n)=N1n=1N(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=1Nx(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} xiSoftmax(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=wx=[w1x,w2x,,wCx],则 ∂ w ⊤ x ∂ w c \frac{\partial w^{\top}x}{\partial w_c} wcwx为第 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} wcwx=[wcw1x,wcw2x,,wcwCx]=[0,0,,x,,0]
z = w ⊤ x z = w^{\top}x z=wx,那么根据链式求导法则: 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} wcL(n)(w)=wc((y(n))logy^(n))=wcz(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))(Iy^(n)1C)y(n)=Mc(x(n))(y(n)y^(n)1Cy(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} wL(n)(w)=x(n)(y(n)y^(n))
采用梯度下降法,则训练过程为:初始化 w 0 ← 0 w_0 \leftarrow 0 w00,迭代更新:
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+1wt+α(N1n=1Nx(n)(y(n)y^wt(n)))
α \alpha α为学习率。

4.感知机

感知机是一种基于错误驱动在线学习的简单二分类线性模型。
y ^ = s g n ( w ⊤ x ) \hat{y} = \mathrm{sgn}(w^{\top}x) y^=sgn(wx)
给定 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)wx(n)>0,n{1,,N}

参数学习方法

感知机的参数学习方法是直接定义的:初始化权重向量 w ← 0 w \leftarrow 0 w0,每分错一个样本 ( x , y ) (x, y) (x,y)时,就用这个样本来更新权重:
w ← w + y x w \leftarrow w + yx ww+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,ywx)
采用随机梯度下降更新参数,每次更新的梯度为:
∂ 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. wL(w;x,y)={0yxif ywx>0if ywx<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 wx+b=0
将两类样本分开,那么对于每个样本都有 y ( n ) ( w ⊤ x + b ) > 0 y^{(n)}(w^{\top}x + b) > 0 y(n)(wx+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∣∣wx(n)+b=∣∣w∣∣y(n)(wx(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)(wx(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)(wx(n)+b)1,n{1,,N}
数据集中所有满足 y ( n ) ( w ⊤ x ( n ) + b ) = 1 y^{(n)}(w^{\top}x^{(n)} + b) = 1 y(n)(wx(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∣∣w21y(n)(wx(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∣∣w2+n=1Nλn(1y(n)(wx(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∣∣w2+n=1Nλn(1y(n)(wx(n)+b))]=wn=1Nλ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∣∣w2+n=1Nλn(1y(n)(wx(n)+b))]=n=1Nλ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=1Nλny(n)x(n)0=n=1Nλ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∣∣w2,w=n=1Nλny(n)x(n)1y(n)(wx(n)+b)0, n=1Nλ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∣∣w2+n=1Nλn×[1y(n)(wx(n)+b)]=21wwn=1Nλny(n)wx(n)n=1Nλny(n)b+n=1Nλn=21wn=1Nλny(n)x(n)wn=1Nλny(n)x(n)+n=1Nλn=21n=1Nm=1Nλmλny(m)y(n)(x(m))x(n)+n=1Nλ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(1y(n)(wx(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(wx+b)=sgn(n=1Nλny(n)x(n)+b)

相关文章:

  • 网站模糊背景/太原优化排名推广
  • 下载类网站 前置备案/友情链接搜读
  • 数据库检索网站建设/百度网站链接提交入口
  • wordpress更改邮箱/百度一下首页百度一下知道
  • 先进的网站建设/重庆营销型网站建设公司
  • 宿迁网站制作/seo外链专员
  • 践行者访谈实录:你真的了解CMMI吗?
  • postgresql及wal2json插件安装
  • 计算机今年炸了?现在还适合入行吗?
  • 【Flask框架】——24 创建ROM映射
  • 嵌入式学习之Linux驱动:IO模型(1)概览
  • C++ Primer 13.5练习:实现StrVec和String
  • 【Linux】进程信号
  • Netty实战与源码剖析(二)——Netty线程模型
  • ROS node命令行参数详解
  • 数据库实验6 存储过程实验
  • 分治法算法
  • Android---Banner轮播图