偏导数计算 与 计算图
偏导数计算
偏导数,也就是斜率,斜率也可理解为是变化率。
即参数的变化,会让结果变化多少倍
这里用一张图来详细描述一下斜率的计算
提示
从输入a, b, c再到最后的结果J,这个过程叫做 前向传播
。
而J改变后相对应的a,b,c应该变化多少,这个过程叫做 反向传播
一点一点来分析。首先从 公式中可以看出,V变化1,J会变化3,也就是说。
那么,没啥好说的,a或U变化1,V就变化1,那么
再来看,已知,因为乘法运算,也就说明当b变化1的时候,U变化3;当c变化1的时候,U变化2。也就是 ;
那么要计算当b变化1的时候,J变化多少,就要遵循下面的步骤
- b变化1,U变化3
- U变化1,V变化1
- V变化1,J变化3
由上可以得出,
也就是说明
而这种传导性计算在微积分里称之为是链式法则
为了得到这三个偏导数,我们需要先计算出关于中间量V的偏导数然后再计算出关于中间量U的偏导数,最后计算出关于参数的偏导数,一步一步反向推进,这个过程就是一个反向传播的过程。
提示
所有简称db的,都可理解为是
也就是结果值的斜率除以当前斜率
之后也会简化,直接简称dU
计算图
遇到复杂的问题建议画图。
一个人工智能学习任务的核心是模型的定义以及模型的参数求解方式,对这两者进行抽象之后,可以确定一个唯一的计算逻辑,将这个逻辑用图表示,称之为计算图。计算图表现为 有向无环图
,定义了数据的流转方式,数据的计算方式,以及各种计算之间的相互依赖关系等。
神经网络的计算是由一个前向传播以及一个反向传播构成的。先通过前向传播计算出预测结果以及损失;然后再通过反向传播计算出损失函数关于每一个参数(w、b)的偏导数,并对这些参数进行梯度下降,然后用新的参数进行新一轮的前向传播计算,这样来回不停地进行前向传播反向传播计算来训练(更新)参数使损失函数越来越小使预测越来越精准。
例如上面的那个图,就是一个计算图。