前言
好久没更新博客了,准备开一个新的系列总结一下自己机器学习的相关经验
单层感知机
我们今天看一个超级简单的模型,单层感知机。其结构可以看作是(以四元为例)
首先我们来看看任务和数据是什么样子的:
$Data = \lbrace (x_{1},y_{1}),(x_{2},y_{2})…(x_{m},y_{m}) \rbrace $
$x^{i} \in \mathcal {X} \subseteq \mathbb{R}^{n}$
$y^{i} \in \mathcal {Y} = \lbrace 1,-1 \rbrace $
这组数据给出的情景是:存在一个二分类任务,其中 n 维数据有 m 组,现要找到一个模型 f(·)来对数据进行分类,并求出其 w 与 b。
由于我们的任务是二分类任务,且输出为 1 或-1,不妨将 f(·)设为 sigmoid 函数(由于 sign 函数不可导)
在该任务中我们要找到一个超平面 w*x+b = 0 将正负实例分到平面两侧,则有
我们可以将这两个公式合为一个 ,当一个数据符合该不等式时,该数据便被分类正确。
显而易见的,当误分类的点越少时,模型便越精准。因此我们可以定义 loss 函数为其中M为误分类点的集合。我们的目的就是找到合适的参数w与b将该loss函数取到最小值。但由于该loss函数是离散的,我们无法对其进行求导等操作。因此我们不妨将loss函数改为如下形式
这样一来我们便可以进行求导操作,利用随机梯度下降法(stochastic gradient descent)进行训练。loss 函数对 w 和 b 分别求导可得:
进而我们利用每个误分类点$(x^{i},y^{i})$对 w,b 进行更新:
其中$\eta$为学习率,我们可以取 0~1 中的任何一个数值。学习率的选取在很多时候对算法的收敛速度有很大的影响。
对上述式子我们可以不断地进行迭代,到没有误分类点后停止。
以上便是单层感知机模型。