爱收集资源网

感知机算法的损失函数:误分类点到Target平面的总距离

网络整理 2023-10-27 00:09

0. 前言

之前上模式识别课程的时侯,老师也讲过 MLP 的 BP 算法, 但是 ppt 过得太快,只有一个大约印象。后来课下自己也尝试看了一下stanford deep learning的 wiki, 还是觉得似懂非懂,不能产生一个直观的思路。趁着这个机会,我再度 revisit 一下。

1. LMS 算法

故事可以从线性 model 说起(顺带备考一下)~在线性 model 里面,常见的有感知机学习算法、 LMS 算法等。感知机算法的损失函数是误分类点到 Target 平面的总距离,直观解释如下:当一个实例点被误分,则调整 w, b 的值,使得分离超平面向该误分类点的右边联通,以减轻该误分类点与超平面的距离,在 Bishop 的 PRML一书中,有一个十分典雅的图诠释了这个过程。但是了解了 MLP 的 BP 算法以后,感觉这个算法与 LMS 有点相通之处。虽然从名子上 MLP 叫做多层感知机,感知机算法是双层感知机。

LMS (Least mean squares) 算法介绍比较好的资料是 Andrew Ng cs229 的Lecture Notes。假设我们的线性 model 是这样的:

在前面这个模型中,用公式可以抒发成:

如何判定模型的优劣呢?损失函数定义为输出值 h(x) 与目标值 y 之间的“二乘”:

对偏导进行求解,可以得到:

如果要借助 gradient descent 的方式找到一个好的模型,即一个合适的 theta 向量,迭代的公式为:

所以,对于一个第 i 个单独的训练样本来说,我们的第 j 个权重更新公式是:

这个更新的规则也称作 Widrow-Hoff learning rule, 从上到下推论出来只有几步,没有哪些深奥的理论,但是,仔细观察前面的公式,就可以发觉几个 natural and intuitive 的特点。

首先,权重的更新是跟 y - h(x) 相关的,如果训练样本中预测值与 y 非常接近,表示模型趋向构建,权重改变小。反之,如果预测值与 y 距离比较远,说明模型比较差,这时候权重变化就比较大了。

权重的变化还与 xi 也就是输入节点的值相关。也就是说,在同一次 train 中,由于 y - h(x) 相同, 细线上的变化与相应的输入节点 x 的大小是成正比的(参考最前面的模型图)。这中间彰显的直观印象就是:残差的影响是根据 xi 分配到权重起来滴,这里的方差就是 h(x) - y。

LMS 算法暂时先提到这儿,后面的哪些收敛特点、梯度增长之类的有兴趣可以瞧瞧 Lecture Notes。

2. MLP 与 BP 算法

前面我们讲过logistic regression, logistic regression 本质上是线性分类器,只不过是在线性变换后通过 sigmoid 函数作非线性变换。而神经网路 MLP 还要在这个基础上加上一个新的nonlinear function, 为了讨论便捷多层神经网络bp算法权值更新过程,这里的 nonlinear function 都用 sigmoid 函数,并且损失函数忽视 regulization term, 那么, MLP 的结构就可以用下边这个图来表示:

z: 非线性变换之前的节点值,实际上是前一层节点的线性变换

a: 非线性变换以后的 activation 值

a=f(z): 这里就是 sigmoid function

现在我们要借助 LMS 中的看法来对这个网路进行训练。

假设在某一个时刻,输入节点接受一个输入, MLP 将数据从左到右处理得到输出,这时候形成了方差。在第一小节中,我们晓得, LMS 残差等于 h(x) - y。MLP 的最后一层和 LMS 线性分类器十分相像,我们不妨先把最后一层的权重更新问题解决掉。在这儿输出节点因为降低了一个非线性函数,残差的值比 LMS 的方差多了一个导数 (实际上是物理上 chain rule 的推论):

得到方差,根据之前猜测下来的规律( - -!), 残差的影响是根据右边输入节点的 a 值大小按比列分配到权重起来的,所以呢,就可以得到:

多层神经网络bp算法权值更新过程_神经网络更新权重的方法_多层神经网络和深度神经网络

如果除以一个 learning rate, 这就是最后一层的权重更新值。

我们在想,要是能得到中间隐层节点上的方差,问题就分解成几个我们刚才解决的问题。关键是:中间隐层的方差如何算?

实际上就是依照权重与方差的乘积返回到上一层。完了以后还要减去非线性函数的行列式( again it can be explained by chain rule):

得到隐层的方差,我们又可以得到前一层权重的更新值了。这样问题就一步一步解决了。

最后我们发觉,其实俺们不用逐层将求方差和残差更新交替进行,可以这样:

先从右到左把每位节点的方差求下来(数学上表现为反向传导过程)

然后再求权重的更新值

更新权重

Q:这是在 Ng 教程中的估算过程, 但是在有些资料中,比如参考资料 [2],残差和残差更新是逐层交替进行的,那么,上一层的方差等于下一层的方差除以更新后的权重,明显,Ng 的教程是除以没有更新的权重,我认为前者有更好的物理特点,期待解疑!

用一张简略的静态图表示权值的反向传播:

红色的曲线就是对 sigmoid function 的导数,和高斯分布十分相像。

用一张动态图表示前向(FP)和后向(BP)传播的全过程:

OK,现在 BP 算法有了一个直观的思路,下面多层神经网络bp算法权值更新过程,将从反向传导的角度愈发深入地剖析一下 BP 算法。

多层神经网络bp算法权值
上一篇:网店团队管理与岗位安排 下一篇:没有了