3. 感知机——学习算法之原始形式:算法解说
3.1 学习问题
- 给定训练数据集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2)⋯,(xN,yN)}
其中 x i ∈ X ⊆ R n , Y I ∈ Y = { + 1 , − 1 } x_i\in\mathcal{X}\subseteq\mathbb{R}^n,Y_I\in\mathcal{Y}=\{+1,-1\} xi∈X⊆Rn,YI∈Y={+1,−1}, + 1 +1 +1代表的是正类点, − 1 -1 −1代表的是负类点, N N N为样本数。 - 损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) L(w,b)=−xi∈M∑yi(w⋅xi+b)
其中, M M M代表所有误分类点的集合。其中 w ⋅ x i w\cdot x_i w⋅xi代表向量的内积运算。 - 模型参数估计:
arg min w , b L ( w , b ) \underset{w, b}{\arg \min } L(w, b) w,bargminL(w,b)
也就是寻找使损失函数 L L L最小的参数 w w w和 b b b.
【注】参数估计是统计学中的一个重要概念,它指的是通过样本数据来推测总体(整个群体)中某些未知的特征值(比如平均值、方差等)的过程。简单来说,参数估计就是通过已有的数据来推测你关心的某些未知值。
3.2 原始形式:随机梯度下降法
3.2.1 随机梯度下降与批量梯度下降法
我们选取随机梯度下降法进行迭代计算。
- 损失函数:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) L(w,b)=−xi∈M∑yi(w⋅xi+b) - 梯度(对 L L L求偏导):
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ; ∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_{w} L(w, b)=-\sum_{x_{i} \in M} y_{i} x_{i} ; \quad \nabla_{b} L(w, b)=-\sum_{x_{i} \in M} y_{i} ∇wL(w,b)=−xi∈M∑yixi;∇bL(w,b)=−xi∈M∑yi - 参数更新:
- 批量梯度下降法(Batch Gradient Descent):每次迭代时使用所有误分类点来进行参数更新。
w ← w + η ∑ x i ∈ M y i x i ; b ← b + η ∑ x i ∈ M y i w \leftarrow w+\eta \sum_{x_{i} \in M} y_{i} x_{i} ; \quad b \leftarrow b+\eta \sum_{x_{i} \in M} y_{i} w←w+ηxi∈M∑yixi;b←b+ηxi∈M∑yi
其中, η ( 0 < η ⩽ 1 ) \eta(0<\eta\leqslant1) η(0<η⩽1)代表步长。 - 随机梯度下降法(Stochastic Gradient Descent):每次随机选取一个误分类点。
w ← w + η y i x i ; b ← b + η y i w \leftarrow w+\eta y_{i} x_{i} ; \quad b \leftarrow b+\eta y_{i} w←w+ηyixi;b←b+ηyi
相比较批量梯度下降法,它每一轮迭代的速度都会快一些。这是感知机算法用的选择参数更新的方法。
- 批量梯度下降法(Batch Gradient Descent):每次迭代时使用所有误分类点来进行参数更新。
3.2.2 原始形式:算法
- 输入:训练集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2)⋯,(xN,yN)}
其中, x i ∈ X ⊆ R n , Y I ∈ Y = { + 1 , − 1 } x_i\in\mathcal{X}\subseteq\mathbb{R}^n,Y_I\in\mathcal{Y}=\{+1,-1\} xi∈X⊆Rn,YI∈Y={+1,−1},步长 η ( 0 < η ⩽ 1 ) \eta(0<\eta\leqslant 1) η(0<η⩽1) - 输出: w , b w,b w,b;感知机模型 f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w\cdot x+b) f(x)=sign(w⋅x+b)
- 算法步骤:
(1)选取初始值 w 0 , b 0 w_0,b_0 w0,b0,即下图中蓝色的直线代表初始的分离超平面;
(2)于训练集中随机选取数据 ( x i , y i ) (x_i,y_i) (xi,yi),图中没有分类到正确类的点都是误分类点,比如蓝色线为例,有一个点没有在蓝色直线上方,这就是误分类点;
(3)若 y i ( w ⋅ x i + b ) ⩽ 0 y_i(w\cdot x_i+b)\leqslant 0 yi(w⋅xi+b)⩽0, w ← w + η y i x i ; b ← b + η y i w \leftarrow w+\eta y_{i} x_{i} ; \quad b \leftarrow b+\eta y_{i} w←w+ηyixi;b←b+ηyi;(正类点代入后是正的,负类点代入和,因为符合方程,所以也是正的,只有错误分类点代入后是负的)
(4)转到(2),直到训练集中没有误分类点。
最后得到一个橙色的线将所有的样本点随机分类。
3.3 例题分析
- 输入:训练集:
T = { ( x 1 , + 1 ) , ( x 2 , + 1 ) , ( x 3 , − 1 ) } T=\left\{\left(x_{1},+1\right),\left(x_{2},+1\right),\left(x_{3},-1\right)\right\} T={(x1,+1),(x2,+1),(x3,−1)}
其中, x 1 = { 3 , 3 } T , x 2 = ( 4 , 3 ) T , x 3 = ( 1 , 1 ) T x_1=\{3,3\}^{T},x_2=(4,3)^{T},x_3=(1,1)^{T} x1={3,3}T,x2=(4,3)T,x3=(1,1)T,假设 η = 1 \eta=1 η=1,也就是训练集中有三个样本,其中 x 1 , x 2 x_1,x_2 x1,x2是正类点样本, x 3 x_3 x3是负类点样本。 - 输出: w , b w,b w,b;感知机模型 f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w\cdot x+b) f(x)=sign(w⋅x+b)
- 学习问题:通过使下面的损失函数来求得相应的参数 w , b w,b w,b.
arg min w , b L ( w , b ) = arg min w , b [ − ∑ x i ∈ M y i ( w ⋅ x i + b ) ] \underset{w, b}{\arg \min } L(w, b)=\underset{w, b}{\arg \min }\left[-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right)\right] w,bargminL(w,b)=w,bargmin[−xi∈M∑yi(w⋅xi+b)]
(1)选取初始值 w 0 = ( 0 , 0 ) T , b 0 = 0 w_0=(0,0)^{T},b_0=0 w0=(0,0)T,b0=0;
(2)对于点 x 1 x_1 x1,有:
y 1 ( w 0 ⋅ x 1 + b 0 ) = ± 1 × ( ( 0 , 0 ) T ⋅ ( 3 , 3 ) T + 0 ) = 0 y_1(w_0\cdot x_1+b_0)=\pm 1\times((0,0)^{T}\cdot (3,3)^{T}+0)=0 y1(w0⋅x1+b0)=±1×((0,0)T⋅(3,3)T+0)=0
- 更新参数,
w 1 = w 0 + η y 1 x 1 = ( 3 , 3 ) T , b 1 = b 0 + η y 1 = 1 w_{1}=w_{0}+\eta y_{1} x_{1}=(3,3)^{T}, \quad b_{1}=b_{0}+\eta y_{1}=1 w1=w0+ηy1x1=(3,3)T,b1=b0+ηy1=1
- 模型:
w 1 ⋅ x + b = 3 x ( 1 ) + 3 x ( 2 ) + 1 w_{1} \cdot x+b=3 x^{(1)}+3 x^{(2)}+1 w1⋅x+b=3x(1)+3x(2)+1
(3)对于点 x 1 x_1 x1,有
y 1 ( w 1 ⋅ x 1 + b 1 ) = + 1 × ( 3 x 1 ( 1 ) + 3 x 1 ( 2 ) + 1 ) = 19 > 0 y_{1}\left(w_{1} \cdot x_{1}+b_{1}\right)=+1 \times\left(3 x_{1}^{(1)}+3 x_{1}^{(2)}+1\right)=19>0 y1(w1⋅x1+b1)=+1×(3x1(1)+3x1(2)+1)=19>0
所以 x 1 x_1 x1分类正确。
对于点 x 2 x_2 x2,有
y 2 ( w 1 ⋅ x 2 + b 1 ) = + 1 × ( 3 x 2 ( 1 ) + 3 x 2 ( 2 ) + 1 ) = 22 > 0 y_{2}\left(w_{1} \cdot x_{2}+b_{1}\right)=+1 \times\left(3 x_{2}^{(1)}+3 x_{2}^{(2)}+1\right)=22>0 y2(w1⋅x2+b1)=+1×(3x2(1)+3x2(2)+1)=22>0
所以 x 2 x_2 x2分类正确。
对于点 x 3 x_3 x3,有
y 3 ( w 1 ⋅ x 3 + b 1 ) = − 1 × ( 3 x 3 ( 1 ) + 3 x 3 ( 2 ) + 1 ) = − 7 < 0 y_{3}\left(w_{1} \cdot x_{3}+b_{1}\right)=-1 \times\left(3 x_{3}^{(1)}+3 x_{3}^{(2)}+1\right)=-7<0 y3(w1⋅x3+b1)=−1×(3x3(1)+3x3(2)+1)=−7<0
所以 x 3 x_3 x3是误分类点。
- 更新参数,利用误分类点 x 3 x_3 x3进行参数更新。
w 2 = w 1 + η y 3 x 3 = ( 2 , 2 ) T , b 2 = b 1 + η y 3 = 0 w_{2}=w_{1}+\eta y_{3} x_{3}=(2,2)^{T}, \quad b_{2}=b_{1}+\eta y_{3}=0 w2=w1+ηy3x3=(2,2)T,b2=b1+ηy3=0
- 模型,
w 2 ⋅ x + b 2 = 2 x ( 1 ) + 2 x ( 2 ) w_{2} \cdot x+b_{2}=2 x^{(1)}+2 x^{(2)} w2⋅x+b2=2x(1)+2x(2)
(4)重复以上步骤,直到没有误分类点:
迭代到第7次之后就没有误分类点了。
-
得到参数:
w 7 = ( 1 , 1 ) T , b 7 = − 3 w_{7}=(1,1)^{T}, \quad b_{7}=-3 w7=(1,1)T,b7=−3 -
模型,
w 7 ⋅ x + b 7 = x ( 1 ) + x ( 2 ) − 3 w_{7} \cdot x+b_{7}=x^{(1)}+x^{(2)}-3 w7⋅x+b7=x(1)+x(2)−3 -
结果:
- 分离超平面:
x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)−3=0 - 感知机模型:
f ( x ) = sign ( x ( 1 ) + x ( 2 ) − 3 ) f(x)=\operatorname{sign}\left(x^{(1)}+x^{(2)}-3\right) f(x)=sign(x(1)+x(2)−3)
- 分离超平面:
-
注
- 若误分类点依次取 x 1 , x 3 , x 3 , x 3 , x 1 , x 3 , x 3 x_1,x_3,x_3,x_3,x_1,x_3,x_3 x1,x3,x3,x3,x1,x3,x3,可以得到分离超平面。
x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)−3=0 - 若误分类点依次取 x 1 , x 3 , x 3 , x 3 , x 2 , x 3 , x 3 , x 3 , x 1 , x 3 , x 3 x_{1}, x_{3}, x_{3}, x_{3}, x_{2}, x_{3}, x_{3}, x_{3}, x_{1}, x_{3}, x_{3} x1,x3,x3,x3,x2,x3,x3,x3,x1,x3,x3,可以得到分离超平面:
2 x ( 1 ) + x ( 2 ) − 5 = 0 2 x^{(1)}+x^{(2)}-5=0 2x(1)+x(2)−5=0
- 若误分类点依次取 x 1 , x 3 , x 3 , x 3 , x 1 , x 3 , x 3 x_1,x_3,x_3,x_3,x_1,x_3,x_3 x1,x3,x3,x3,x1,x3,x3,可以得到分离超平面。
【注】采用不同的误分类点顺序,所得到的解是不同的,随机选取的误分类点导致结果也具有一定的随机性。