简单神经网络
整理吴恩达老师的神经网络的前向和反向传播
定义
- 处理2分类问题
- 神经网络有1个输入层(3个特征),1个隐层(4个神经元),1个输出层(单个神经元)
- 隐层和输出层分别使用使用tanh和sigmoid函数作为激活函数
向量化的前向传播
-
()
损失函数
推导反向传播
- 损失函数对的导数记为:
(仅对元素一一进行计算,求导结果只是对每个元素求导后按原矩阵排列方式将结果排列成一个新矩阵)
-
对求导:
(仅对元素一一进行计算,求导结果只是对每个元素求导后按原矩阵排列方式将结果排列成一个新矩阵)
(sigmoid函数导数有很好的性质:)
-
对求导:
-
对求导:
-
对求导:
- 则就为:
(后两步是对元素一一计算,所以求导后的链式法则也同样需要用元素一一对应的计算方式)
(因为是公式的右乘子,所以导数求点积乘时放在左边)
- 继续向前,对求导:
(仅对元素一一进行计算,求导结果只是对每个元素求导后按原矩阵排列方式将结果排列成一个新矩阵)
-
对 求导:
- 则为:
(因为是公式的左乘子,所以导数求点积乘时放在右边)
其他项均可依葫芦画瓢得出。反向计算需要先求出反向第一项的结果,再与反向第二项结果进行计算,以此计算到反向推导的最后一项。如果计算过程中顺序出现错乱,则很有可能在写出的python代码中出现各种错误或奇怪的bug。
网友评论