本文包含大量不严谨的公式写法,只是推式子时候打草记录一下…
线性模型(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(⋅)称为激活函数。
这个属于很基础的模型了,它的任务很简单,就是预测连续的标签。
对于给定的样本 ξ \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)
以上便是线性回归常用的参数学习方法。
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回归模型的输出。
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 α为学习率。
感知机是一种基于错误驱动在线学习的简单二分类线性模型。
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
支持向量机(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∗)