3 优化方法¶
上一节中,咱们介绍了感知机模型损失函数$L(w,b)$的由来,接下来就要说说怎么经过优化损失函数来得到最终的超平面。在感知机模型中,有两种优化方式:原始形式和对偶形式。node
3.1 原始形式¶
原始形式采用的是梯度降低法进行求解,若是对梯度降低法不了解,能够参看前面写过的一篇博客。这里须要注意的是,在上一小节中说过,感知机是基于误分类驱动的一种模型,因此不能使用整个数据集进行梯度降低优化,只能对误分类样本集合$M$采用随机梯度降低法或者小批量梯度降低法进行优化。 对损失函数$L(w,b)$求偏导: $$\frac{{\partial L(w,b)}}{{\partial w}} = - \sum\limits_{{x_i} \in M} {{y_i} \cdot {x_i}} $$ $$\frac{{\partial L(w,b)}}{{\partial b}} = - \sum\limits_{{x_i} \in M} {{y_i}} $$ 那么,$w$的梯度降低迭代公式为: $$w = w + \alpha \cdot \sum\limits_{{x_i} \in M} {{y_i} \cdot {x_i}} $$ 偏置$b$的梯度降低迭代公式为: $$b = b + \alpha \cdot \sum\limits_{{x_i} \in M} {{y_i}} $$ 式中,$\alpha $是学习率。 感知机模型中,通常采用随机梯度降低法进行优化,每次使用一个误分类样本点进行梯度更新。假设$(x_i,y_i)$是$M$中的一个误分类点,进行梯度更新: $$w = w + \alpha \cdot {y_i}{x_i} \tag{3}$$ $$b = b + \alpha \cdot {y_i} \tag{4}$$ 总结一下原始形式优化步骤。 输入:训练样本数据集$D = \{ ({x_i},{y_i})\} _{i = 1}^m$,${x_i} \in X \subseteq {R^n}$,${y_i} \in Y = \{ + 1, - 1\} $,学习率% $\alpha \in (0,1)$
输出:$w$,$b$;感知机模型$f(x) = sign(w \cdot x + b) $
(1)初始化$w_0$,$b_0$;
(2)在$D$中选取任意点$(x_i,y_i)$;
(3)经过${y_i} \cdot (w \cdot {x_i} + b)$的值判断是不是误分类点,若是是,使用式(3)、(4)更新参数;
(4)回到步骤(2)直到准确率知足条件。python
3.2 对偶形式¶
对偶形式时原始形式在执行效率上的优化。经过3.1小节中,咱们知道,每当一个样本点$x_i$被错误分类一次时,都会使用式(3)(4)更新一次参数,那么,若是样本点$x_i$在迭代过程当中被错误分类屡次(假设$n_i$次),那么就回有$n_i$次参与到参数更新中,咱们假设参数$w$和$b$的初始值都为0向量,那么,最终得到的参数$w$和$b$为: $$w = \sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \tag{5}$$ $$b = \sum\limits_{i = 1}^N {{\beta _i} {y_i}} \tag{6}$$ 这是在对偶形式中的参数更新方式,式中,${\beta _i} ={n_i}\alpha$。另外,在原始形式中,咱们使用${y_i}(w \cdot {x_i} + b) \leqslant 0$来判断样本点$x_i$是否被错误分类,将式(5)(6)代入这一判别式中,得: $${y_i}(\sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \cdot {x_j} + \sum\limits_{i = 1}^N {{\beta _i} {y_i}}) \leqslant 0 \tag{7}$$ 在对偶形式中,采用式(7)判断样本点是否正确分类,观察后能够发现,式(7)中有两个样本点$x_i$和$x_j$内积计算,这个内积计算的结果在下面的迭代过程当中须要屡次被重复使用,若是咱们事先用矩阵运算计算出全部的样本之间的内积,那么在算法迭代过程当中, 仅仅一次的矩阵内积运算比原始形式中每遍历一个样本点都要计算$w$与$x_i$的内积要省时得多,这也是对偶形式的感知机模型比原始形式优的缘由。
在感知机模型中,样本的内积矩阵称为Gram矩阵,它是一个对称矩阵,记为$G = {[{x_i},{x_j}]_{m \times m}}$。
总结一下对偶形式的步骤。
输入:训练样本数据集$D = \{ ({x_i},{y_i})\} _{i = 1}^m$,${x_i} \in X \subseteq {R^n}$,${y_i} \in Y = \{ + 1, - 1\} $,学习率% $\alpha \in (0,1)$
输出:$w$,$b$;感知机模型$f(x) = sign(w \cdot x + b) $
(1)初始化全部$n_i$值为0;
(2)计算Gram矩阵;
(3)在$D$中选取任意点$(x_i,y_i)$;
(4)若是${y_i}(\sum\limits_{i = 1}^N {{\beta _i} {y_i}{x_i}} \cdot {x_j} + \sum\limits_{i = 1}^N {{\beta _i} {y_i}}) \leqslant 0 $,令${\beta _i} = {\beta _i} + \alpha $;
(5)检查是否还有误分类样本点,若是有,回到步骤(2);若是没有,(5)(6)计算$w$、$b$最终值。jquery