感知机(Perceptro)二分类算法原理学习小结记录

感知机是非常古老的一个二分类算法,原理非常简单,直观地来说,对于平面上的两类数据点,找到一条直线来将其划分开来,对于空间中的点,用一个平面来将两部分完全划分开,这样的数据都是线性可分的,也就是在平面或空间中可以一刀划断的两部分数据,线性可分也是感知机模型使用的基本前提。

感知机模型的基本思想是由错误分类点驱动迭代优化参数的模型学习过程,这在后面对Loss Function优化阶段可以有所体会。

首先,先把超平面表示出来: ,对于 的区域认为分类为 ,对于 的区域认为分类为 ;超平面表达式中的 可以认为是 特征点的参数,因此可以简化表示为 : ,由向量表示为 ,其中 · 为点积。

感知机的模型即为:

,sign()符号函数在此作为激活函数将W与X向量的点积结果硬分类映射为-1或1。

那么感知机模型算法如何设置Loss Function,最自然想到的可能是 统计误分类点的个数 ,这确实能直观地显示分类算法的性能优劣,但是对于离散的损失函数是不可导的,无法实现梯度下降算法;于是转而采用 以所有错误分类点到超平面的距离之和 作为损失函数:

前面提过,在正确分类的情况下 对应 >0, 对应,即 为所有正确分类点的区域,反之, 为所有错误分类点的区域,或者说所有误分类点都满足 ,于是任意一个错误分类点到超平面距离为: ,分子带有绝对值不利于求导去掉绝对值号: , 将所有错误分类点到超平面距离累加: (其中M是所有分类错误点的集合)。

观察可见,由于累加表达式中分子 扩大N倍分母也会扩大N倍,即分子与分母有固定的倍数关系,所以可以简化损失函数为。

对此损失函数采用随机梯度下降来优化参数,每次仅需要取出M集合中的一个点来修正参数;

损失函数对参数的偏导为:;

则参数 的迭代公式为: ,其中 为学习率(learning rate),需要根据经验选择,难以直接给定。

步骤总结:

1、随机选定参数

2、遍历集合中数据集,若满足 则为误分类点,进行随机梯度下降参数更新。

3、若还存在误分类点,则继续第二步,若不存在误分类点则分类完成。

直观过程描述:

分类前:实线划分的区域,显然有一个误分类点。

分类过程:遍历到该误分类点时验证满足 条件,于是进行随机梯度下降,修正超平面的参数w。

分类后:虚线划分的区域,此时的参数w已经更新,区域中也没有了误分类点。

经验分享 程序员 微信小程序 职场和发展