感知器算法例题——随机梯度下降法
如图所示的训练数据集,其正样本是x1=(3,3)⊤\boldsymbol{x}_1 = (3,3)^\topx1=(3,3)⊤,x2=(4,3)⊤\boldsymbol{x}_2 = (4,3)^\topx2=(4,3)⊤,负样本是x3=(1,1)⊤\boldsymbol{x}_3 = (1,1)^\topx3=(1,1)⊤,使用感知器算法的随机梯度法求判别函数f(x)=sgn(w⋅x+b)f(\boldsymbol{x}) = \text{sgn}(\boldsymbol{w} \cdot \boldsymbol{x} + b)f(x)=sgn(w⋅x+b)。
解答
构建最优化问题:
minw,bL(w,b)=−∑xi∈Xkyi(w⋅xi+b) \min_{\boldsymbol{w},b} L(\boldsymbol{w},b) = -\sum_{\boldsymbol{x}_i\in \mathcal{X}_k} y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i + b) w,bminL(w,b)=−xi∈Xk∑yi(w⋅xi+b)
求解w\boldsymbol{w}w,bbb。α=1\alpha = 1α=1。
(1) 取初值w0=0\boldsymbol{w}_0 = 0w0=0,b0=0b_0 = 0b0=0;
(2) 对x1=(3,3)⊤\boldsymbol{x}_1 = (3,3)^\topx1=(3,3)⊤,y1(w0⋅x1+b0)=0y_1 (\boldsymbol{w}_0 \cdot \boldsymbol{x}_1 + b_0) = 0y1(w0⋅x1+b0)=0,未能被正确分类,更新w\boldsymbol{w}w,bbb:
w1=w0+y1x1=(3,3)⊤b1=b0+y1=1 \boldsymbol{w}_1 = \boldsymbol{w}_0 + y_1 \boldsymbol{x}_1 = (3,3)^\top \quad b_1 = b_0 + y_1 = 1 w1=w0+y1x1=(3,3)⊤b1=b0+y1=1
得到线性模型:
w1⋅x+b1=3x(1)+3x(2)+1 \boldsymbol{w}_1 \cdot \boldsymbol{x} + b_1 = 3{x}^{(1)} + 3{x}^{(2)} + 1 w1⋅x+b1=3x(1)+3x(2)+1
(3) 对x1\boldsymbol{x}_1x1,x2\boldsymbol{x}_2x2,显然,yi(w1⋅xi+b1)>0y_i (\boldsymbol{w}_1 \cdot \boldsymbol{x}_i + b_1) > 0yi(w1⋅xi+b1)>0,被正确分类,不修改w\boldsymbol{w}w,bbb;对x3=(1,1)⊤\boldsymbol{x}_3 = (1,1)^\topx3=(1,1)⊤,y3(w1⋅x3+b1)<0y_3 (\boldsymbol{w}_1 \cdot \boldsymbol{x}_3 + b_1) < 0y3(w1⋅x3+b1)<0,被错分类,更新w\boldsymbol{w}w,bbb:
w2=w1+y3x3=(2,2)⊤b2=b1+y3=0 \boldsymbol{w}_2 = \boldsymbol{w}_1 + y_3 \boldsymbol{x}_3 = (2,2)^\top \quad b_2 = b_1 + y_3 = 0 w2=w1+y3x3=(2,2)⊤b2=b1+y3=0
得到线性模型:
w2⋅x+b2=2x(1)+2x(2) \boldsymbol{w}_2 \cdot \boldsymbol{x} + b_2 = 2{x}^{(1)} + 2{x}^{(2)} w2⋅x+b2=2x(1)+2x(2)
如此继续下去,直到
w7=(1,1)⊤,b7=−3 \boldsymbol{w}_7 = (1, 1)^\top, \quad b_7 = -3 w7=(1,1)⊤,b7=−3
w7⋅x+b7=x(1)+x(2)−3 \boldsymbol{w}_7 \cdot \boldsymbol{x} + b_7 = {x}^{(1)} + {x}^{(2)} - 3 w7⋅x+b7=x(1)+x(2)−3
对所有数据点yi(w7⋅xi+b7)>0y_i(\boldsymbol{w}_7 \cdot \boldsymbol{x}_i + b_7) > 0yi(w7⋅xi+b7)>0,没有错分类点,损失函数达到极小。
判别函数为f(x)=sgn(x(1)+x(2)−3)f(\boldsymbol{x}) = \text{sgn}({x}^{(1)} + {x}^{(2)} - 3)f(x)=sgn(x(1)+x(2)−3)。
迭代过程见表。
表 求解的迭代过程
| 迭代次数 | 错分类点 | w\boldsymbol{w}w | bbb | w⋅x+b\boldsymbol{w} \cdot \boldsymbol{x} + bw⋅x+b |
|---|---|---|---|---|
| 0 | - | 0 | 0 | 0 |
| 1 | x1\boldsymbol{x}_1x1 | (3,3)⊤(3, 3)^\top(3,3)⊤ | 1 | 3x(1)+3x(2)+13{x}^{(1)} + 3{x}^{(2)} + 13x(1)+3x(2)+1 |
| 2 | x3\boldsymbol{x}_3x3 | (2,2)⊤(2, 2)^\top(2,2)⊤ | 0 | 2x(1)+2x(2)2{x}^{(1)} + 2{x}^{(2)}2x(1)+2x(2) |
| 3 | x3\boldsymbol{x}_3x3 | (1,1)⊤(1, 1)^\top(1,1)⊤ | -1 | x(1)+x(2)−1{x}^{(1)} + {x}^{(2)} - 1x(1)+x(2)−1 |
| 4 | x3\boldsymbol{x}_3x3 | (0,0)⊤(0, 0)^\top(0,0)⊤ | -2 | -2 |
| 5 | x1\boldsymbol{x}_1x1 | (3,3)⊤(3, 3)^\top(3,3)⊤ | -1 | 3x(1)+3x(2)−13{x}^{(1)} + 3{x}^{(2)} - 13x(1)+3x(2)−1 |
| 6 | x3\boldsymbol{x}_3x3 | (2,2)⊤(2, 2)^\top(2,2)⊤ | -2 | 2x(1)+2x(2)−22{x}^{(1)} + 2{x}^{(2)} - 22x(1)+2x(2)−2 |
| 7 | x3\boldsymbol{x}_3x3 | (1,1)⊤(1, 1)^\top(1,1)⊤ | -3 | x(1)+x(2)−3{x}^{(1)} + {x}^{(2)} - 3x(1)+x(2)−3 |
| 8 | 0 | (1,1)⊤(1, 1)^\top(1,1)⊤ | -3 | x(1)+x(2)−3{x}^{(1)} + {x}^{(2)} - 3x(1)+x(2)−3 |
这是在计算中错分类点先后取x1,x3,x3,x3,x1,x3,x3\boldsymbol{x}_1, \boldsymbol{x}_3, \boldsymbol{x}_3, \boldsymbol{x}_3, \boldsymbol{x}_1, \boldsymbol{x}_3, \boldsymbol{x}_3x1,x3,x3,x3,x1,x3,x3 得到的分离超平面和判别函数。如果在计算中错分类点依次取x1,x3,x3,x3,x2,x3,x3,x1,x3,x3\boldsymbol{x}_1, \boldsymbol{x}_3, \boldsymbol{x}_3, \boldsymbol{x}_3, \boldsymbol{x}_2, \boldsymbol{x}_3, \boldsymbol{x}_3, \boldsymbol{x}_1, \boldsymbol{x}_3, \boldsymbol{x}_3x1,x3,x3,x3,x2,x3,x3,x1,x3,x3,那么得到的分离超平面是2x(1)+x(2)−5=02x^{(1)} + x^{(2)} - 5 = 02x(1)+x(2)−5=0。
可见,感知器算法由于采用不同的初值或选取不同的错分类点,解可以不同。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)