机器学习:感知机
一、概述
(1)模型

其中

待求参数w和b。
(2)策略
x是N维的输入数据,y是标签(+1、-1)
所有正确分类的点yf(x)>0,错误分类的点yf(x)<0
使用梯度下降法不断更新w和b的值,只要验证所有点yf(x)>0即分类完成,此时的参数就作为模型的参数值。
(3)算法
见下文。
二、主要内容
感知机属于二分类问题,输入为N维的特征向量,输出为+1或-1.
要求数据必须线性可分才能收敛。
几何描述:
以分开二位维的输入数据为例,用一条直线w*x+b=0将数据分为二类,直线的一侧为证类标记为+1,另一侧为负类标记为-1.

模型:

策略:
建立损失函数,最小化损失。
损失函数定义如下:

策略解释:
要用模型分开每个数据点,需要建立数据点和模型参数w,b的联系,所以考虑求每个点错误分类的点到超平面的距离。
因为我们只有分类错误时候才有损失,所以求所有分类错误的点到直线的距离的和就是损失,最终全部分类正确后由于不再有错误分类的点所以距离为0,损失也为0了。
//=============================补充==============================//
距离计算公式:
以点
到直线ax+by+c=0为例。
函数间隔:
几何间隔:
这里
和
是固定的训练集输入数据,因此我们要改变的参数是a,b,c求出最合适的参数使结果最小化,也就是最小化距离。
需要注意的是,如果采用函数间隔,系统只需要单纯不断减小a,b,c,的值就会成比例的减小计算结果,但显然这没什么意义不是我们想要的,所以我们采用几何间隔计算距离。这样就不会出现前面说的问题了。
//================================================================//
因此我们使用的距离计算公式为:

所以我们的目标是:

Xi是M个误分类点。使所有分类错误的点到超平面的距离的和最小。
//================================补充============================//
已知输出分为+1和-1,通过模型分类得出的测试结果及为f(x),实际标签结果为y
如果x分类正确的话,则应该是+1的实际分为+1,即yf(x)>0,是-1的实际分为-1,即yf(x)>0
,因此只要分类正确,yf(x)>0,
如果点x分类错误,则应该是+1的实际分为-1,即yf(x)<0,将应该是-1的实际分为+1,即yf(x)<0
,因此只要分类错误,yf(x)<0,
所以,我们只需要用这个方法验证出输入的每个数据点都满足yf(x)>0就说明所有点都正确分类了。如果等于0说明当前点是在直线上,也不属于正确分类。
//====================================================================//
由于分母||w||>0,因此可以忽略分母,对于误分类的点:

由上面最终推导出,损失函数为:

其中M是所有误分类点的集合。
实际应用中的损失函数我们不考虑分母||w||,虽然这样会变成函数间隔,但由于感知机情况特殊,目标是要所有点都正确分类,也就是损失函数结果最终要为0,这样使用函数间隔也没关系了.
算法:
算法使用随机梯度下降法,每次选取1个输入点进行梯度下降。相对的批量梯度下降法是每次更新所有的输入点。运算量大。
//================================补充===============================//
对于凸函数采用梯度下降法求局部最小值,对于凹函数采用梯度上升法求局部最大值。梯度下降应用于寻找局部最优解,也就是局部极小值。但如果目标函数是凸函数,那么唯一的局部极值也就是全局极值,所以可以找到全局最优解。
梯度下降公式应用一阶泰勒展开式:

其中
为x(i+1)-x(i)即步长偏移量,越小两边就越相等
//=====================================================================//
上一节已经说了损失函数是:

由于我们是要更新参数w和b,因此我们构建损失函数是为了分别求出w和b的梯度。然后逐渐更新w,b求个最优解。
对w和b分别求偏导有:

这个是批量更新,也就是批量梯度下降。
实际应用每次都随机只选取一个误分类点进行更新,即随机梯度下降。

其中η(0<η<=1)是步长也就是
,也叫学习率。需要人工设置,用来控制每次更新的变化率,对学习速率有影响。但如果设置太大也可能长时间难以达到稳定收敛。
//=================================补充=================================//
在感知机这个例子中,我们不会直接优化构建的损失函数来直接求出参数的值,而是构建损失函数用梯度下降法不断迭代找到合适的参数值。
其他案例中很多都是构建出损失函数或者式子通过求解最优化问题直接求出参数值。
//=====================================================================//
算法步骤如下:

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)