`

吐槽一下UFLDL上神经网络反向传播算法的公式

阅读更多
在斯坦福的神经网络课件的反向传播算法一节(http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm),对于权重更新,有着以下的公式,记为公式(1)

其中,m为样本个数。
首先,这组公式肯定是正确的,而且是很直观。今天重看时还被其直观性所折服!
这种做法也给了我做事儿的一种思路:先针对一个样本的情况,进行公式的推导,得到初步的结果;在对多个样本再取平均,得到直观的结果~最后,再用严谨的数学推导进行证明,得到简化后的公式。
那么,为什么还要吐槽呢?因为UFLDL课件缺少了最后一步——数学证明,及公式的简化!


下面从公式(1)的直观性——也就是其优点说起:
这组公式啥意思呢?对于一个神经网络(参数为各层的权重矩阵W和偏置向量b),给定一个输入样本x(向量),该网络会产生一个输出y(向量),对应有一个误差J


那么,如果该网络只有一个输入,我们可以对W、b求导。也就是上面公式中的Delta W部分。
如果有m个样本呢,很自然的一种想法就是对导数求平均,这也就是公式中的Delta W要除以m的意义所在!很直观,很容易理解。

对应的总体误差函数如下(另外,还多了个weight decay项):



问题定义清楚了,接下来涉及编程实现了,槽点也就来了:
程序该怎么写?是不是直观的写法就是最好的?
答案显然是否定的,否则课件中也就不会讲什么Vectorization了!
这一部分我没有细看,课件中还是按直观的方法来讲的“你看,我们没Vectorization前使用这个循环写的,balabala,嘿,这个循环正好是矩阵相乘!于是我们可以这么写。。。。”

但是,,但是,,其实我们可以有更为严谨的做法——按照求导的链式法则进行公式的推导(只需要针对一层网络进行推导就可以了,剩下的完全一样)。
采用这种做法,我们得到的结果自然就是矢量化的,而且,,直接根据J(W,b)来求导,我们会得到和直观的公式(1)稍有不同的公式

假设最后一层的输出为Y,误差函数J(W,b)对其导数为 dJ_dY
则,我们再通过dJ_dY进行反向传播,后续的公式中是不会出现样本个数m的!


下面用公式来说明(抱歉,误差J的符号改为E,样本个数m之后用N来代替):

也就是说,只要在输出层对网络输出Y求导时除以了样本个数N,之后各层求导时,就不用再除以N了。而在Andrew Ng的课件中,由于在输出层没有除以N(这样一来,其保留了误差的原始意义,也就各个样本的误差),之后的每一层才需要除以N。也就是我们之前所说的对于各个样本产生的误差(的导数)求平均。
后续的求导公式和课件中给的相同:http://ufldl.stanford.edu/wiki/index.php/Neural_Network_Vectorization

如果想自己用矩阵求导进行推导的话,可以看一下我之前的笔记(建议还是看张贤达老师的书吧,感觉自己写的不够清楚):http://cherishlc.iteye.com/blog/1765932
  • 大小: 2.5 KB
  • 大小: 1.5 KB
  • 大小: 7.4 KB
  • 大小: 62.4 KB
分享到:
评论

相关推荐

    基于神经网络PID算法的镀液温度控制系统.pdf

    BP神经网络是一种多层前馈神经网络,通过反向传播算法进行训练,可以学习和存储大量的数据,并对其进行处理和分析。 二、基于神经网络PID算法的电镀槽液温度控制系统设计 电镀槽液温度控制系统是指通过控制电镀槽...

    .net 三层架构制作吐槽网

    .NET 三层架构是一种...综上所述,".NET 三层架构制作吐槽网"是一个涵盖了前端交互、业务逻辑处理和数据管理等多个层面的项目。通过合理的架构设计和良好的编码实践,可以构建出稳定、高效且易于维护的社交网络应用。

    Qnmlgb吐槽网站

    一个留言类型的网站,适合新手。吐槽网站。特别适合新手进行学习。也可以直接使用。

    神经网络遗传算法在氯碱生产过程中的应用.pdf

    这种单向传播的多层结构使得神经网络能够处理复杂的非线性问题,非常适合用于氯碱电解槽的优化。 遗传算法则是受到生物进化机制启发的全局搜索算法,具备优秀的宏观搜索能力和寻优性能。它通过模拟自然选择和遗传...

    基于PHP的消息果留言板(吐槽版) PHP源码.zip

    基于PHP的消息果留言板(吐槽版) PHP源码.zip

    基于神经网络和遗传算法的锭子弹性管性能优化.pdf

    基于神经网络和遗传算法的锭子弹性管性能优化,正是在这样的背景下应运而生的研究课题,旨在通过先进的数据建模和优化技术提升纺织机械性能。 首先,要进行性能优化,必须深入了解锭子弹性管的物理特性及其在实际...

    基于C++使用Qt编写的BP神经网络分类器演示程序.zip

    权重是连接各层神经元的关键参数,通过反向传播算法调整这些权重,以最小化网络的预测误差,达到训练目的。 在BPNNDemoQt项目中,我们可以预期以下几个关键知识点: 1. **C++与Qt集成**:项目会展示如何在C++代码...

    基于小波包分析和神经网络的铝电解槽阴极状态诊断.pdf

    神经网络采用的是经典的反向传播(BP)算法,这是一种有监督学习的前馈型网络。输入层接收特征数据,经过非线性转换,在隐含层进行计算,然后通过输出层得到网络预测结果。通过比较预测与实际类别之间的误差,网络会...

    QT c++神经网络程序

    “BP神经网络在PM2.5的模型实现.docx”文档聚焦于反向传播(BP)神经网络在预测空气质量指标PM2.5浓度的应用。BP神经网络是一种常见的多层前馈网络,通过反向传播误差来调整权重,从而学习输入与输出之间的复杂关系...

    工作中那些不得不吐槽的Chinglish

    工作中那些不得不吐槽的Chinglish

    无力吐槽是什么意思.doc

    【无力吐槽】这一网络用语源自中文互联网,主要在年轻人和网络社交群体中流行。它表达了一种面对某种情况或言论时,感到无言以对、无法进行批评或反驳的状态,通常带有无奈、搞笑或者轻微的讽刺意味。当一个人说...

    ssm吐槽论坛毕业设计程序

    采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...

    机器学习算法教程 深度学习算法系列教程英文PPT课件 神经网络(RNN) 共89页.pptx

    传统的feedforward神经网络可能无法捕捉上下文信息,而RNN由于其内在的记忆机制,能更好地解决这个问题。 【1-of-N编码】 在表示单词时,1-of-N编码是一种常用方法,每个单词由一个长度等于词汇表大小的向量表示,...

    吐槽哥端口扫描器 v3.9

    一个快速高效的端口扫描工具,制定IP段扫描端口,还可以对部分路由器读取路由器相关用户信息。支持路由器或服务器型号:XM-3300N- ASUS- D-Link- LevelOne- Netis- Pozitron- TP-LINK支持端口:8080,80,8888,8081...

    吐槽:web登录页面(by Alan)

    web登录页面

    安卓直播视频播放流媒体IPCameraRTSPDLNA相关-android实现吐槽弹幕.rar

    关于“吐槽弹幕”,这可能是指在播放视频时,用户可以发送即时评论,这些评论会以滚动或漂浮的方式显示在视频画面上,常见于二次元文化中的视频平台。在Android应用中,实现这一功能通常需要集成弹幕库,如...

    基于BP神经网络的酒泉市霜冻天气预测研究.pdf

    BP神经网络是一种常用的机器学习算法,它可以对复杂的非线性关系进行建模和预测。在霜冻天气预报中,BP神经网络可以对气象观测资料和陆表温度资料进行处理,并对霜冻天气的发生进行预测。 研究表明,霜冻天气前期...

    C++基于Qt编写的BP神经网络分类器演示程序源码.zip

    3. **神经网络理论**:理解BP神经网络的工作原理,包括前向传播、反向传播算法、权重更新规则等。 4. **矩阵运算**:因为神经网络的计算涉及大量的矩阵运算,所以需要掌握线性代数的基础知识。 5. **优化算法**:...

    (正文格式)12-14基于节目创作视角谈《吐槽大会》成功的关键因素.zip

    5. **网络平台的助推**:《吐槽大会》主要在互联网平台上播出,充分利用了新媒体的优势,如弹幕互动、二次传播等,使得节目能够迅速扩散,吸引更多的年轻观众。 6. **受众定位准确**:节目瞄准的是对新鲜事物接受度...

Global site tag (gtag.js) - Google Analytics