学习笔记:机器学习之感知机

0 问题引入

        举一个最简单的例子,在二维坐标系中存在散放的红豆绿豆。

        提出两个问题:

                第一,怎么找到一条直线wx+b=0将其分开?

                第二,怎么保证这条直线尽量准确,不会出现很多豆子分错的情况?

        感知机就是解决这类问题的一种方法,它是二类分类的线性分类模型(分离超平面是线性的),旨在求出线性划分的分离超平面。

1.感知机模型

1.1 问题定义

  • x代表输入向量,y代表输出结果,因为是二分类问题,故y\in\{+1,-1\}
  • 感知机模型(输入空间到输入空间的函数关系): 

            f(x)=sign(w\cdot x+b)

    其中w为权值,b为偏置,w\cdot x表示w和x的内积,sign为符号函数,即

sign(x)=\left\{\begin{matrix} +1,x\geq 0\\ -1,x< 0 \end{matrix}\right.

关于超平面S: 超平面是指n维线性空间中维度为n-1的子空间。它可以把线性空间分割成不相交的两部分。比如二维空间中,一条直线是一维的,它把平面分成了两块;三维空间中,一个平面是二维的,它把空间分成了两块。当w\cdot x_i+b>0,y_i=+1;当w\cdot x_i+b<0,y_i=-1.

  •  感知机学习,就是用训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}根据某种策略得到求得参数w,b,即求得感知机模型f(x)=sign(w\cdot x+b)

2.感知机学习策略(定义损失函数)

        与用最小二乘法拟合回归直线类似,它的损失函数为所有点到直线的距离和,而感知机不是要拟合直线,它是要找到一个超平面可以将正负类样本点刚好分布在该超平面的两侧。对于最小二乘法来说,我们找到的直线最好能过所有点,不在直线上的就会产生“损失”,计算损失的方式是计算不在直线上的点到直线的距离;同样地对于感知机来说,我们需要找到分类错误的点产生的“损失”。

此时的超平面有分类错误的点

定义分类错误的点产生的损失是计算这些点和超平面S之间的距离,则输入空间中任一点到超平面S之间的距离为:

                                          \frac{|w\cdot x_0+b|}{\left \| w \right \|}                                                           其中||w||为w的L_2范数。

这点可以联想一点(x_0,y_0)到Ax+By+C=0的距离d,d=\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}},高维空间也是如此。||w||=\sqrt{w_1^2+w_2^2}

 对于误分类点(x_i,y_i)来说,y_iw\cdot x_i+b是异号的,则误分类点到超平面S的距离是

\frac{-y_i(w\cdot x_i+b)}{||w||}

进而可以求出所有误分类点到超平面S的距离为,M为误差点集合:

\frac{-\sum\limits_{x_i \in M}y_i(w\cdot x_i+b)}{||w||}

此时可以不考虑\frac{1}{||w||},看可得到损失函数:              L(w,b)=-\sum\limits_{x_i\in M}y_i(w\cdot x_i+b)

因为误差的出现是因为存在误分类点,但存在超平面时,就不存在误分类点。目的不是找到最小的误差,只需要沿着误差减少的方向进行更新参数。

接下来就是求极小化损失函数:

\min _{w, b} L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right)

接下来介绍感知机的两种参数更新方式:原始形式、对偶形式


2.1 感知机学习算法的原始形式

(1)选择初始值w0,b0确定一个超平面;

(2)   在训练集中选取数据(x_i,y_i);

(3)   如果y_{i}\left(w \cdot x_{i}+b\right)\leqslant 0,用随机梯度下降法(SGD)更新参数,极小化目标函数.

损失函数L(w,b)的梯度:

\frac{\partial L(w,b)}{\partial w}=-\sum\limits_{x_i \in M}y_ix_i

\frac{\partial L(w,b)}{\partial b}=-\sum\limits_{x_i \in M}y_i

更新参数:

w\leftarrow w+\eta y_ix_i

b\leftarrow b+\eta y_i

(4)   执行(2),直至训练集中没有误分类点

2.2 感知机学习算法的对偶形式

 对偶形式相比原始形式的参数更新方式不同,对偶形式是累加式的。w,b是在不断更新的,设更新次数为n,

\alpha_i=n_i\eta,则

w=\sum^N_{i=1}\alpha _iy_ix_i

b=\sum^N_{i=1}\alpha _iy_i

 (1)\alpha \leftarrow 0,b\leftarrow 0;

   (2)  在训练集中选取数据(x_i,y_i);

   (3)  如果     y_i(\sum^N_{j=1}\alpha _jy_jx_j\cdot x_i+b)\leq 0时,更新参数。

更新时n_i\leftarrow n_i+1,则

    \begin{align*} \alpha _i &=(n_i+1)\eta \\ &=n_i\eta +\eta &\\ &=\alpha _i+\eta \\ \end{align*}                 \begin{align*} b_i&=\alpha _iy_i \\&= (ni_+1)\eta y_i\\ &=n_i\eta y_i+\eta y_i\\ &=b_i+\eta y_i \end{align*}

更新参数:

\alpha _i\leftarrow \alpha _i+\eta

b\leftarrow b+\eta y_i

  (4) 执行(2),直至训练集中没有误分类点

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值