摘要:
1、感知器的数学本质;
2、感知器的训练过程;
3、感知器训练过程的数学计算公式;
4、感知器训练的数学推导;
1、感知的数学本质
感知器的数学本质是一个函数(如果不考虑激活函数,这应该是一个线性函数)。输入一组特征数据 x⃗ = (x1,x2,⋯,xn),经过感知器处理输出一个特征数据y。
使用图示如下:

使用公式表示入:

不考虑激活函数的情况,实际上使用的是恒等激活函数,恒等激活函数:

2、感知器的分类与预测作用

上图对单独一个感知器来说,只能对线性可分的样本具有很好的分类作用,因为感知器本质是一个线性函数(所以分类的图表达不是特别正确)。
分类:找到一个函数,使得不同类样本在函数表示的曲线(对感知器来讲应该是直线)的两侧,从数学来讲,比如:函数输出是0就是A类样本,如果函数输出是1就是B类样本。
预测:找到一个函数,使所有样本都在尽量靠近直线,这样对函数输入任何未知数据,其输出值就是预测结果。
分类与预测本质都是一样,都是找到一个合适的函数,最后只是对函数的使用不同而已。
注意:在后面的讲解中,我们重点考虑分类的情况,预测的情况需要的时候,再单独作为主题讲解。
3、感知器训练
找到一个合适函数的过程就是感知器训练,对下面具体的数学公式来说,就是找到一组合适的权重,使得样本的输出与预期的结果接近,最好是完全一样:

权重表示如下:

一般情况下,需要对加权求和做一个偏置运算,这样训练感知器的时候,更加方便(注意单个感知器情况,感知器本质是一个线性函数,线性函数就是一条直线,所谓训练感知器就是调整直线,调整直线就是调整直线的斜率与截距)。其中最后一项,作为加权求和的偏置项。如果把偏置项单独表示出来,则如下。

感知器训练过程可以使用如下示意图描述:

其中x⃗ 表示一组输入的特征数据,ω⃗ 表示一组权重矩阵,表示如下:

(1)随意(一般采用随机方式)初始化一组权重 ω⃗ (包含截距);
(2)根据一直的输入数据特征 x⃗、权重 ω⃗、激活函数 f,计算输出 y;
(3)根据计算输出 y,与样本预期值 y¯,计算ω⃗的调整值∇;
(4)根据上一步计算出来的调整值 ∇,调整 ω⃗。
对一组样本反复迭代执行上述过程,直到得到一组满意的权重为止。
4、权重调整值的计算
【分析】
感知器的训练最麻烦的是计算权重的调整值计算。我们来分析下怎么计算权重的调整值:
(1)首先要确定的是,调整权重的目的是,得到一组权重,使得输入的特征数据的输出达到我们分类的期望值。也就是感知器的实际输出值与期望输出值误差最小。
(2)我们希望找到一种度量实际输出值与期望输出值之间的误差度量方式,这种度量方式可以使用函数表示,这个函数称为误差损失函数,也就是训练过程就是找到一组权重,使得误差损失函数最小。
【损失函数表示】
度量误差的方式有很多种,最直观的误差度量方式就是距离差。这里我们采用均方误差损失函数,该函数表示如下:

【损失函数最小与极值】
怎么计算损失函数的最小值?这个在微积分中能找到答案:极小值。
(1)极大值与极小值
极大值与极小值就是函数在其定义域的某些局部区域所达到的相对最大值或相对最小值。当函数在其定义域的某一点的值大于该点周围 任何点的值时,称函数在该点有极 大值; 当函数在其定义域的某一点的值小于该点周围任何点的值时, 称函数在该点有极小值。这里的极大和极小只具有局部意义。
(2)极值点
极值点只能在函数不可导的点或导数为零的点上取得。
(3)极大值与极小值的数学解法
对于一元可微函数𝒇(𝑥),它在某点x0有极值的充分必要条件是𝒇(𝑥)在𝑥0的某邻域上一阶可导,在𝑥0处二阶可导,且𝒇'(𝑥0)=0,𝒇' '(𝑥0)≠0,那么:
1)若𝒇' '(𝑥0)<0,则f在x0取得极大值;
2)若𝒇' '(𝑥0)>0,则f在x0取得极小值。
求解极值,直接解𝒇 ' (𝑥0)=0方程,可以得到极值点。
【极值点求解】
从上面的解释中,训练过程就是找到一组合适的权重ω⃗ ,使得上面定义的损失函数E 值极小(在一定的局部范围内,也就是最小,下面我们都采用最小值的说法,表示在一定局部范围内)。
由于损失函数E 值最小是对一组样本而言的,就不能采用数学方程方法来直接求解损失函数E 的最小值,而是采用极限无限逼近的方法,逼近方法如下:

注意:图中x表示权重。
对极小值而言,ω⃗ 的调整有如下规律:
规律一:权重方向调整规律:
(1)在极小值点左边,权重值需要调小,这样才能逼近极小值。
(2)在极小值点右边,权重值需要调大,这样才能逼近极小值。
规律二:权重速度调整规律
权重调整值的大小,影响逼近的速度。
(1)权重调整值小,逼近速度慢,但容易更加接近极小值点。
(2)权重调整值大,逼近速度快,但不容易更加接近极小值点。
权重的调整速度,用户可以设置一个调整值来控制训练速度;但是怎么知道权重调小还是调大?这个可以利用极小值的数学原理:
在极小值点左边的导数为负,在极小值右边的导数为正。
【权重的调整值策略】
这样就可以制定权重的调整值策略:

【∇的计算】
我们也称为∇ 梯度。
根据上面权重的调整值策略,只要得到∇的计算公式,就能计算权重的调整值。而且∇就是损失函数的导数,我们使用导数的推算(这里采用偏导数的推导方式),就可以得到最终的计算公式,我们就从下面的公式开始推导:

采用链式偏导的推导方式,链式推导的依据在于感知器的数据运算过程的拆分,然后反向链式推导,得到损失函数的导数。我们先看看感知器的运算过程表示:

感知器从一组已知的数据特征 x⃗ ,经过加权求和运算,最后经过激活函数的运算得到一个输出 y。
在计算前,我们对误差损失函数做一个简化处理,由于均方差损失函数,需要多所有样本进行计算,这在计算过车给中不现实,就采用一个样本来计算误差损失,这就是随机误差损失,计算出来的∇也称为随机梯度,随机误差损失函数表示如下:

其中i表示第 i个数据特征对应的样本输出的下标。
下面就根据上面的计算过程与随机误差损失函数来进行偏导数的链式推导。

这是通用推导方式,可以采用标量与向量两种方式表示:
标量表示:

向量表示:

注意:推导过程是按照感知器的计算过程反向推导的。这一点非常重要,在后面所有神经网络的推导中都遵循的规律。
提示:本主题的用到的公式,都在Github可以得到下载,下载格式是扩展名为ipynb的IPython Notebook:https://github.com/QiangAI/AICode/blob/master/notebook/perceptron.ipynb
补充:到目前为止,权重的梯度更新公式如下:

网友评论