感知机模型
感知机是最早的人工智能算法,他是支持向量机和神经网络的基础。
它的基本思想是找到一条直线,将两类样本进行划分。其求解方法则类似与梯度下降法不断对w,b进行调整。
它的模型如下:
对每个训练样本(xi,yi),执行一下操作:
(i)若wx+b>0,且y=-1,则w=w-x,b=b-1;
(ii)若wx+b<0,且y=+1,则w=w+x,b=b+1;
其基本原理是
保证每次更新至少拉扯了1个单位。
可以证明,这种算法的结果是收敛的。
支持向量机(svm)
支持向量机在解决小样本问题时有着不错的结果,因为它划分空间仅仅依赖于最靠近超平面的支持向量。它的基本思想与感知机一样,都是通过找到一个超平面对空间进行划分,不同的是,感知机是对每个样本点不断进行迭代更新参数值,SVM则同时考虑所有的样本点,建立二次规划模型,并对模型进行求解。
(i)当y=1时,恒有wx+b>0
(ii)当y=-1时,恒有wx+b<0
即y*(wx+b)恒大于0.
那么如何构建这一需要求解的二次规划模型呢?首先要刚清楚两件事情。
1、wx+b=0 与 awx+ab=0是等价的,都表示同一超平面。
2、点到直线的距离公式
对于样本中的支持向量,我们可以用a去缩放(w,b)得到(aw,ab),使得|wx+b|=1。
所以我们可以确定优化的目标是找到一个超平面,使两个类别的样本距离足够大,即两个类别的支持向量距离超平面最远。且根据之前要求的限制条件y*(wx+b)>0,得到一下优化模型:
对于此问题的求解问题涉及凸优化和运筹学相关内容,这里不再说(我也忘了)。
此外,这里和之前的感知机模型仅能解决线性可分的模型。
对于线性近似可分的情况,SVM模型可对优化模型增加惩罚项(松弛变量),且在限制条件中右侧改为进行求解。
对于线性不可分的情况,可以通过核函数的方法,将样本空间映射到高维空间中,在高维空间中则线性可分了。
多层神经网络
神经网络为解决感知机的线性问题,在网络层次中增加了非线性函数例如sigmoid等,且网络结构也更加复杂。
这里举两个例子可以很好的看到神经网络对样本进行划分的优势。
1、
第一层每个神经元代表了一条直线,这里类似对三条直线采取交运算的方式构建神经网络模型。
当图中的三角形变成四边形或圆形可做类似推理。
2、
这种某一类别散落了一部分出去,可以在之前的基础上,在下方再增加一个一样的模型。这种好像是解决了感知机异或问题的方式么,呜呜呜我也不太清楚了。
对模型的求解采用基于梯度下降的后向传播算法。
总结
感知机与SVM求解思想类似,都是找一个平面对空间中样本进行切割,但求解方式不一样,可以理解为感知机的求解方法较low,SVM有着丰富的数学基础,再其之上进行延申,进而找到了求解近似线性可分和不可分的求解方法。
神经网络在感知机的基础上,丰富了网络结构,增加了非线性函数,可以解决非线性问题和异或问题无法划分的情况。在求解方式上,二者较为相似,都是有点类似梯度下降的思想。
嗯嗯大概就这些,主要参考自浙大机器学习。