`

吐槽一下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

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

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

    本文主要探讨了如何利用神经网络和遗传算法对锭子弹性管的性能进行优化,以提升纺织机械中的锭子运行稳定性。研究中,作者们通过建立弹性管的等效抗弯刚度和底部等效刚度系数的数学模型,旨在找到最佳的结构工艺参数...

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

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

    基于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