机器学习基础—感知机

450 阅读2分钟

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

感知机

今天聊一聊一个比较古老线性分类模型,不过这个模型也是神经网络的基础。神经网络可以看出大量感知机的堆积,对感知机线性模型添加非线性的激活函数,并且结构化这些简单分类器,就形成神经网络,其实从一个侧面可以将神经网络看出群体智能一个应用。

线性和非线性问题

线性可分性是描述两分类的数据集的。 对于二维(两个特征)的数据集来说,如果存一条直线,能够把这两个分类完美区分,那么这个数据集就是线性可分的,那么对于高维数据来说如果找到一个超平面可以代替直线将高维空间的数据分开,那么就说这个数据是线性可分的。

linear_sep.png

上图中 A 表示线性可分,而 B 表示线性不可分

为什么要介绍什么是线性可分,是因为感知机只能解决线性可分的问题。

数据

有这样样本

D={(x1y1),(x2y2),,(xiyi)}ND = \{(x_1,y_1),(x_2,y_2),\cdots,(x_i,y_i) \}_N

其中 xiRmx_i \in \mathbb{R}^m 数据是一个 m 维向量,而 yi1,+1y_i \in {-1,+1} 是一个 2 分类,-1 和 +1 分别表示一个类别,之所以取 -1 和 +1 都是为了便于计算。

感知机模型

首先对于感知机是一个错误驱动的模型,模型很简单就是要找到 wTxw^Tx 这样一个分割线或者分割超平面。其中 wRmw\in \mathbb{R}^m 也是向量,也就是找到一个可以将 2 类数据划分开的直线或者平面。

感知机目标函数

L(w)=xiDyiwTxiL(w) = \sum_{x_i \in D} -y_iw^Tx_i

首先最 w 进行随机初始化,然后将每一个点(xi,yi)(x_i,y_i) 如果满足以下情况就更新参数,也就是分错两种情况就更新 w

wTxi>0yi=1w^Tx_i > 0 \\ y_i =-1

这是就更新,也就是当wTxi>0w^Tx_i > 0 通常 yiy_i 应该为 +1 也就是位于分割超平面的上方。也就是说明 w 不能对样本正确分类。

wnew=woldηxiw_{new} = w_{old} - \eta x_i
(wxi)TxiwTxxi2(w-x_i)^Tx_i\\ w^Tx - ||x_i||^2

也就是将分割超平面超负方向移动了 xi2||x_i||^2

第二种情况这里就不做过多解释了

wTxi<0yi=+1w^Tx_i < 0 \\ y_i =+1

这是就更新

wnew=wold+ηxiw_{new} = w_{old} + \eta x_i

直到所有样本点都被正确分类为止,退出循环,其实感知机想法很朴素。这个算法并不是全局看所有样本,而是一个一个看每一个样本,其实我们平时学习也是这种套路来进行学习。