机器学习基础篇-NN反向传播

在深度学习的神经网络中,可以通过Computation Graph建立每层函数之间的关系。下面开始举例。

前向传播
首先我们有三个参数a,b,c,其损失函数为J(w) = 3(a+b*c),然后计算每个参数的梯度:
d J d a ; d J d b ; d J d c \frac{dJ}{da};\frac{dJ}{db};\frac{dJ}{dc} dadJ;dbdJ;dcdJ
然后我们可以通过拆解损失函数,并通过中间参数进行传递:
u = b c v = a + u J = 3 v u = bc\\v = a + u\\J = 3v u=bcv=a+uJ=3v
由上,可以建立一个计算图:
在这里插入图片描述
反向传播
在计算图的基础上,可以清楚的得到每个参数的梯度求导公式:
d J d a = d J d v d v d a d J d b = d J d v d v d u d u d b d J d b = d J d v d v d u d u d c \frac{dJ}{da} = \frac{dJ}{dv}\frac{dv}{da}\\ \frac{dJ}{db} = \frac{dJ}{dv}\frac{dv}{du}\frac{du}{db}\\ \frac{dJ}{db} = \frac{dJ}{dv}\frac{dv}{du}\frac{du}{dc} dadJ=dvdJdadvdbdJ=dvdJdudvdbdudbdJ=dvdJdudvdcdu
为了让求解过程更清晰地表达,我们将公式带入到计算图中
在这里插入图片描述
现在开始反向传播,通过简单地组合节点梯度来计算每个参数的梯度:
在这里插入图片描述
所以有
d J d a = d J d v d v d a = 3 ∗ 1 = 3 d J d b = d J d v d v d u d u d b = 3 ∗ 1 ∗ 2 = 6 d J d b = d J d v d v d u d u d c = 3 ∗ 1 ∗ 3 = 9 \frac{dJ}{da} = \frac{dJ}{dv}\frac{dv}{da} = 3*1=3\\ \frac{dJ}{db} = \frac{dJ}{dv}\frac{dv}{du}\frac{du}{db}=3*1*2=6\\ \frac{dJ}{db} = \frac{dJ}{dv}\frac{dv}{du}\frac{du}{dc}=3*1*3=9 dadJ=dvdJdadv=31=3dbdJ=dvdJdudvdbdu=312=6dbdJ=dvdJdudvdcdu=313=9

在NN神经网络中,通过线性函数和非线性函数的组合构成一个网络去解决问题,并通过反向传播更新线性函数的超参数的权重来拟合数据,其中非线性函数sigmoid是激活函数,其作用是当只有线性函数组合时,整个函数还是线性函数,只有组合了sigmoid,才能是非线性函数,用来拟合非线性关系(生活中大多数问题都是非线性问题)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Wiggles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值