对于吴恩达ML课程中Backpropagation计算方法的理解

对于吴恩达ML课程中Backpropagation计算方法的理解

今天在写吴恩达ML第四次作业的时候,感觉计算neural network中损失函数J对theta的偏微分太难理解了。。和玄学一样,看视频的时候也晕晕乎乎的,不知道那些式子是怎么来的。。想起寒假在B站上看的李宏毅讲的一节课,回过头去看了看,这才明白了吴恩达课程中给出的那些公式的推导过程。

对于吴恩达ML课程中Backpropagation计算方法的理解
对于吴恩达ML课程中Backpropagation计算方法的理解上面两张是吴恩达ML课程中给出的计算梯度的过程,直接抛出了一些公式,不知道为什么要这么算。
由上面这些步骤可以得到,对于每一笔数据,它给theta1带来的惩罚值如下:
对于吴恩达ML课程中Backpropagation计算方法的理解

下面具体看看这个式子是咋来的。
对于吴恩达ML课程中Backpropagation计算方法的理解对于吴恩达ML课程中Backpropagation计算方法的理解

下面说一下我理解的计算步骤,感觉这么更好理解。
对于吴恩达ML课程中Backpropagation计算方法的理解对于吴恩达ML课程中Backpropagation计算方法的理解具体描述一下:
1.计算损失函数J对网络的输出a(n)的偏导数

2.利用上一步的结果,计算J对z(n)的偏导数
J/z(n) = a/z(n) * J/a(n)
J/a(n)是上一步的结果
a(n)/z(n)为**函数g对z(n)求偏导

3.利用上一步的结果,计算J对a(n-1)的偏导数
J/a(n-1) = z(n)/a(n-1) * J/z(n)
J/z(n)是上一步的结果
z(n)/a(n-1)为theta(n-1)

4.类似于第二三步
反复求J对z J对a的偏导
一直到第一层

5.这时已经知道了所有J对z的偏导
再求出z对theta的偏导,即为a
想乘
J/theta = z/theta * J/z
得出梯度结果

参考了李宏毅机器学习的视频,链接如下,感觉讲得真的很好,比吴恩达的好懂。https://www.bilibili.com/video/av35932863?t=1868&p=11