反向传播BP学习算法Gradient Descent的推导过程
作者:Cyril_KI 发布时间:2022-09-08 09:51:06
BP算法是适用于多层神经网络的一种算法,它是建立在梯度下降法的基础上的。本文着重推导怎样利用梯度下降法来minimise Loss Function。
给出多层神经网络的示意图:
1.定义Loss Function
每一个输出都对应一个损失函数L,将所有L加起来就是total loss。
那么每一个L该如何定义呢?这里还是采用了交叉熵,如下所示:
最终Total Loss的表达式如下:
2.Gradient Descent
L对应了一个参数,即Network parameters θ(w1,w2…b1,b2…),那么Gradient Descent就是求出参数 θ∗来minimise Loss Function,即:
梯度下降的具体步骤为:
3.求偏微分
从上图可以看出,这里难点主要是求偏微分,由于L是所有损失之和,因此我们只需要对其中一个损失求偏微分,最后再求和即可。
先抽取一个简单的神经元来解释:
因为我们并不知道后面到底有多少层,也不知道情况到底有多复杂,我们不妨先取一种最简单的情况,如下所示:
4.反向传播
l对两个z的偏导我们假设是已知的,并且在这里是作为输入,三角形结构可以理解为一个乘法运算电路,其放大系数为 σ′(z)。但是在实际情况中,l对两个z的偏导是未知的。假设神经网络最终的结构就是如上图所示,那么我们的问题已经解决了:
其中:
但是假如该神经元不是最后一层,我们又该如何呢?比如又多了一层,如下所示:
原理跟上面类似,如下所示:
那假设我们再加一层呢?再加两层呢?再加三层呢?。。。,情况还是一样的,还是先求l对最后一层z的导数,乘以权重相加后最后再乘上 σ′(z′′,z′′′,...)即可。
最后给一个实例:
它的反向传播图长这样:
我们不难发现,这种计算方式很清楚明了地体现了“反向传播”四个字。好了,目标达成!!
5.总结
来源:https://blog.csdn.net/Cyril_KI/article/details/107030538


猜你喜欢
- 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12)
- php对数字进行万。亿的转化/** * 格式化数字 */public function float_number($number){ &nb
- 在MySQL中,对于索引的使用并是一直都采用正确的决定。简单表的示例:CREATE TABLE `r2` (ID` int(11) DEFA
- 目录 一、环境配置 二、ASP对Excel的基本操作 三、ASP操作Excel生成数据表 四、ASP操作Excel生成Chart图 五、服务
- 相信许多小伙伴都玩过数字 * 游戏,就是指在一定数字范围(一般是整数,不包含边界)里,一个玩家选中一个数字当作 * ,其余玩家在这个范围猜数字,
- pytest是python语言中一款强大的单元测试框架,用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。unittest也是py
- 本文实例为大家分享了vue iview动态新增和删除的具体代码,供大家参考,具体内容如下<Form ref="capsule
- 可以在main.js中写入方法 Vue.prototype.validSe = function (value, number
- 安装好所需要的插件和包:python、django、pip等版本如下:采用Django REST框架3.01、在python文件夹下D:\p
- 图形由json格式加载,可以灵活配置。下一步是完善用户的操作,做这个感觉还是蛮有意思的。呵呵。截图:部分源码:<script type
- 本文实例讲述了php生成curl命令行的方法。分享给大家供大家参考,具体如下:示例:curl "http://localhost/
- 前言Redis是一个开源的内存数据库,在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。感兴趣的小伙
- 文末附完整源代码实现过程...想实现这样一个功能,然后pyqt5中又没有现成的组件可以使用,于是就想着只能通过绘图的方式来实现。说到绘图的话
- 本文实例讲述了JS求解三元一次方程组值的方法。分享给大家供大家参考,具体如下:// 求用js 码一段代码求 三元一次方程组的值!// a1
- 下面我讲讲关于这套系统的加载流程 定义根目录,定义include目录 加载核心文件 配置文件'config.inc.php'
- MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型
- python里使用正则表达式的组嵌套实例详解由于组本身是一个完整的正则表达式,所以可以将组嵌套在其他组中,以构建更复杂的表达式。下面的例子,
- b.php的代码 <?php //只能通过post方式访问 if ($_SERVER['REQUEST_METHOD'
- 一、类型转换 1.转换成字串 ECMAScript的Boolean值、数字和字串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属
- 本文实例讲述了python中global用法。分享给大家供大家参考。具体分析如下:1、global---将变量定义为全局变量。可以通过定义为