0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BP神经网络算法 BP算法之一种直观的解释

新机器视觉 来源:待字闺中 2023-08-07 09:29 次阅读

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 是这样的:

d25e6fd2-34b3-11ee-9e74-dac502259ad0.jpg

在上面这个模型中,用公式可以表达成:

d2730d52-34b3-11ee-9e74-dac502259ad0.jpg

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

d287c878-34b3-11ee-9e74-dac502259ad0.jpg

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

d2a1a216-34b3-11ee-9e74-dac502259ad0.jpg

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

d2b3cec8-34b3-11ee-9e74-dac502259ad0.jpg

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

d2cef1da-34b3-11ee-9e74-dac502259ad0.jpg

这个更新的规则也叫做 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, 为了讨论方便,这里的 nonlinear function 都用 sigmoid 函数,并且损失函数忽略 regulization term, 那么, MLP 的结构就可以用下面这个图来表示:

d2dfb948-34b3-11ee-9e74-dac502259ad0.jpg
z: 非线性变换之前的节点值,实际上是前一层节点的线性变换
a: 非线性变换之后的 activation 值

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

现在我们要利用 LMS 中的想法来对这个网络进行训练。

假设在某一个时刻,输入节点接受一个输入, MLP 将数据从左到右处理得到输出,这时候产生了残差。在第一小节中,我们知道, LMS 残差等于 h(x) - y。MLP 的最后一层和 LMS 线性分类器非常相似,我们不妨先把最后一层的权重更新问题解决掉。在这里输出节点由于增加了一个非线性函数,残差的值比 LMS 的残差多了一个求导 (实际上是数学上 chain rule 的推导):

d30dd0a8-34b3-11ee-9e74-dac502259ad0.jpg

得到残差,根据之前猜想出来的规律( - -!), 残差的影响是按照左侧输入节点的 a 值大小按比例分配到权重上去的,所以呢,就可以得到:

d32a6d3a-34b3-11ee-9e74-dac502259ad0.jpg

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

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

实际上就是按照权重与残差的乘积返回到上一层。完了之后还要乘以非线性函数的导数( again it can be explained by chain rule):

d3406446-34b3-11ee-9e74-dac502259ad0.jpg

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

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

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

然后再求权重的更新值

更新权重

Q:这是在 Ng 教程中的计算过程, 但是在有些资料中,比如参考资料 [2],残差和权值更新是逐层交替进行的,那么,上一层的残差等于下一层的残差乘以更新后的权重,明显,Ng 的教程是乘以没有更新的权重,我觉得后者有更好的数学特性,期待解疑!

用一张粗略的静态图表示残差的反向传播:

d354b5d6-34b3-11ee-9e74-dac502259ad0.jpg

红色的曲线就是对 sigmoid function 的求导,和高斯分布非常相似。

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

d36dcd8c-34b3-11ee-9e74-dac502259ad0.gif

OK,现在 BP 算法有了一个直观的思路,下面,将从反向传导的角度更加深入地分析一下 BP 算法。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4574

    浏览量

    98753
  • 变换器
    +关注

    关注

    17

    文章

    2027

    浏览量

    108399
  • LMS算法
    +关注

    关注

    1

    文章

    19

    浏览量

    10161
  • 线性分类器
    +关注

    关注

    0

    文章

    3

    浏览量

    1415
  • MLP
    MLP
    +关注

    关注

    0

    文章

    56

    浏览量

    4074

原文标题:[干货]BP 算法之一种直观的解释

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求基于labview的BP神经网络算法的实现过程

    求高手,基于labview的BP神经网络算法的实现过程,最好有程序哈,谢谢!!
    发表于 12-10 14:55

    labview BP神经网络的实现

    请问:我在用labview做BP神经网络实现故障诊断,在NI官网找到了机器学习工具包(MLT),但是里面没有关于这部分VI的帮助文档,对于”BP神经网络分类“这个范例有很多不懂的地方,
    发表于 02-22 16:08

    基于BP神经网络的手势识别系统

    网络。  BP 网络的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。  3
    发表于 11-13 16:04

    【案例分享】基于BP算法的前馈神经网络

    `BP神经网络首先给出只包含个隐层的BP神经网络模型(两层神经网络):
    发表于 07-21 04:00

    如何设计BP神经网络图像压缩算法

    神经网络(Neural Networks)是人工神经网络(Ar-tificial Neural Networks)的简称,是当前的研究热点之一。人脑在接受视觉感官传来的大量图像信息后,能迅速做出反应
    发表于 08-08 06:11

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控
    发表于 09-07 07:43

    一种BP神经网络改进算法的研究及应用

    本文首先介绍了传统的神经网络BP 算法的优缺点,并结合模拟退火算法局部搜索全局的特点,提出将模拟退火算法和传统的
    发表于 01-09 11:57 12次下载

    BP神经网络及其改进算法改善传

    BP神经网络及其改进算法改善 传感器特性BP算法即多层网络误差反传
    发表于 06-08 13:50 1891次阅读

    基于差分进化的BP神经网络学习算法

    提出了一种基于改进差分进化算法BP神经网络 的计算机网络流量预测方法。利用差分进化算法的全局
    发表于 08-10 16:13 31次下载
    基于差分进化的<b class='flag-5'>BP</b><b class='flag-5'>神经网络</b>学习<b class='flag-5'>算法</b>

    基于BP神经网络算法PID控制器的研究与仿真

    文中将BP神经网络的原理应用于参数辨识过程,结合传统的 PID控制算法,形成一种改进型BP神经网络
    发表于 07-16 15:53 51次下载

    基于BP神经网络的SVPWM算法的研究与仿真

    基于BP神经网络的SVPWM算法的研究与仿真
    发表于 04-15 18:29 11次下载

    基于模拟退火算法改进的BP神经网络算法

    基于模拟退火算法改进的BP神经网络算法_周爱武
    发表于 01-03 17:41 0次下载

    BP神经网络模型与学习算法

    BP神经网络模型与学习算法
    发表于 09-08 09:42 10次下载
    <b class='flag-5'>BP</b><b class='flag-5'>神经网络</b>模型与学习<b class='flag-5'>算法</b>

    基于BP神经网络的辨识

    基于BP神经网络的辨识,1986年,Rumelhart等提出了误差反向传播神经网络,简称BP网络(Back Propagation),该
    发表于 12-06 15:11 0次下载

    BP神经网络概述

    BP 神经网络是一类基于误差逆向传播 (BackPropagation, 简称 BP) 算法的多层前馈神经网络
    的头像 发表于 06-19 15:17 4.3w次阅读
    <b class='flag-5'>BP</b><b class='flag-5'>神经网络</b>概述