白话机器学习之(二)感知机

934 阅读3分钟

感知机

@(机器学习算法)


@[toc]

概述

感知机1957年由Rosenblatt提出,是神经网络与支持向量机的基础,对神经网络的学习与深度学习有着重要的意义。 感知机( perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1值。 感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习的目的是旨在求出将训练数据进行线性划分的超平面,为此,引入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。感知机的算法具有简单易于实现的特点,分为原始形式和对偶形式。

感知机模型

定义:假设输入空间(特征空间)是 XRnX \in R^n,输出空间是 Y{+1,1}Y\in \{+1, -1\},输入xXx\in X表示实例的特征向量,是输入空间(特征空间)的点;输出yYy \in Y表示实例的类别。由输入空间到输出空间由如下的函数: y=sign(wx+b)y = sign(w*x+b)

该函数称为感知机,其中w和b是参数,wRnw \in R^n称为权值(weight)或者权值向量(weight vector),bRb \in R叫做偏置(bias), w*R表示w和R的內积,sign是符号函数,即 \begin{equation} sign(x) = \begin{cases} +1 & \mbox{if x >= 0}\\ -1 & \mbox{if x< 0} \end{cases} \end{equation}

感知机学习策略

假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,即需要确定模型的参数w和b,需要确定一个学习策略,即定义经验损失函数并将损失函数极小化。

  1. 损失函数的选择:
  • 误分类点的个数:缺点:这样的损失函数不是参数w和b的连续可到函数,不易优化;
  • 误分类点到超平面的距离:这是感知机采用的方法。
  1. 损失函数的计算
  • 输入空间RnR^n的任意一点x0x_0到超平面S的距离: y=1wwx0+by = \dfrac{1}{||w||}|w*x_0 + b| 这里,w{||w||}是w的L2范数;
  • 距离计算:对于误分类点(xi,yi)(x_i, y_i)说, yi(wxi+b)>0 -y_i(w*x_i + b) > 0
  • 误分类点到超平面的总距离为,假设M是误分类点的集合:

y=1wxiinMwx0+by = \dfrac{1}{||w||} \sum_{x_i in M}|w*x_0 + b|

  • 不考虑 y=1wy = \dfrac{1}{||w||},就得到感知机的损失函数

感知机学习算法

minw,bL(w,b)=xiMyi(wxi+b)\min_{w,b}L(w,b) = - \sum_{x_i \in M}y_i(w*x_i + b)

原始形式

感知机学习算法是误分类驱动的,具体做法是采用随机梯度下降法(stochastic gradient descent)。首先,任意选取一个超平面w0,b0w_0, b_0,然后采用梯度下降法不断极小化上面的目标函数;极小化的过程中不是一次使M中的所有误分类点的梯度下降,而是一次随机的选取一个误分类点进行梯度下降。 对目标函数求梯度(偏导数) wL(w,b)=xiMyixi\nabla_wL(w,b) = - \sum_{x_i \in M}y_ix_i bL(w,b)=xiMyi\nabla_bL(w,b) = - \sum_{x_i \in M}y_i

接着随机选取一个误分类点,进行w,b更新; 梯度下降前面已经介绍过,这里就不继续介绍了。

对偶形式

稍后介绍;