文章目录

  • ​​1.梯度介绍​​
  • ​​2.链式法则​​
  • ​​3.逻辑回归梯度计算​​
  • ​​4.梯度矩阵形式推导​​
  • ​​4.1基础知识​​
  • ​​4.2 三层神经网络反向传播推导​​

1.梯度介绍

深度学习的训练本质是优化损失,优化的方式是计算梯度,然后通过优化算法更新参数 ,常见的优化算法SGD/Momentum/Adagrad/RMSProp/Adam等,本文总结一下梯度的计算。

2.链式法则

利用微分求梯度的方法计算量太大,而误差反向传播算法的出现提高了计算效率,误差反向传播算法(BP)主要基于链式法则
链式法则是求复合函数的导数:
例如多元复合函数深度学习(二)梯度推导_反向传播,可以看作深度学习(二)梯度推导_反向传播_02,其中深度学习(二)梯度推导_反向传播_03深度学习(二)梯度推导_反向传播_04
深度学习(二)梯度推导_梯度_05
深度学习(二)梯度推导_IT_06

有了偏导数,当y的梯度已知,各变量的梯度=偏导数*y的梯度,因此有几点常用如下

1.如果是由a + b = y,则反向传播时a b 的梯度相等,且等于y的梯度
2.如果是a * b = y,则反向传播时a b 的梯度分别为b a,如果是矩阵运算会涉及到矩阵转换
3.max操作梯度只有传播到取最大值的一路

深度学习(二)梯度推导_标量_07


3.逻辑回归梯度计算

逻辑回归流程如下

  • 全连接 深度学习(二)梯度推导_梯度_08
  • 激活层 深度学习(二)梯度推导_IT_09
  • 损失层(二分类交叉熵) 深度学习(二)梯度推导_梯度_10

这里激活函数为sigmoid 深度学习(二)梯度推导_标量_11
深度学习(二)梯度推导_梯度_12
深度学习(二)梯度推导_标量_13

先求L(a,y)关于a的导数深度学习(二)梯度推导_梯度_14
因为深度学习(二)梯度推导_反向传播_15
所以有深度学习(二)梯度推导_反向传播_16

进一步推导w和b
深度学习(二)梯度推导_标量_17

4.梯度矩阵形式推导

标量对矩阵的求导,参考另外一篇转载的博客 ​​矩阵求导术​​

趁热打铁,我们把矩阵形式的梯度推导一下,先放结果。假设深度学习(二)梯度推导_IT_18
深度学习(二)梯度推导_标量_19

a*b 表示矩阵对应位置相乘
a.dot(b) 表示矩阵内积

4.1基础知识

一元微积分中的微分深度学习(二)梯度推导_反向传播_20与导数的全微分公式 深度学习(二)梯度推导_IT_21 深度学习(二)梯度推导_反向传播_22
多元微积分中的微分深度学习(二)梯度推导_反向传播_20与梯度的全微分公式 深度学习(二)梯度推导_梯度_24深度学习(二)梯度推导_梯度_25

从多元微积分的全微分公式可以看到全微分df等于梯度向量(n,1)与微分向量dx(n,1)的内积

类似的,微分df和矩阵导数深度学习(二)梯度推导_梯度_26(标量对矩阵的导数):
深度学习(二)梯度推导_IT_27

tr表示矩阵的迹(tarce),是方阵对角线元素之和,满足性质:对尺寸相同的矩阵A,B有
深度学习(二)梯度推导_标量_28
举个例子理解下

深度学习(二)梯度推导_梯度_29

常用的微分的运算法则:

  • 深度学习(二)梯度推导_IT_30
  • 深度学习(二)梯度推导_梯度_31
  • 深度学习(二)梯度推导_反向传播_32
  • 深度学习(二)梯度推导_反向传播_33
  • 深度学习(二)梯度推导_梯度_34 可由深度学习(二)梯度推导_标量_35求微分证明
  • 行列式深度学习(二)梯度推导_反向传播_36其中深度学习(二)梯度推导_标量_37表示深度学习(二)梯度推导_标量_38的伴随矩阵,在X可逆时可以写成深度学习(二)梯度推导_梯度_39
  • 逐元素乘法:深度学习(二)梯度推导_标量_40 其中深度学习(二)梯度推导_IT_41表示尺寸相同的矩阵X,Y进行元素乘法
  • 逐元素函数深度学习(二)梯度推导_标量_42其中深度学习(二)梯度推导_反向传播_43是逐元素标量函数计算,深度学习(二)梯度推导_反向传播_44是逐元素标量导数计算

逐元素是指针对矩阵单个元素求函数值或者求导
深度学习(二)梯度推导_梯度_45深度学习(二)梯度推导_反向传播_46

迹技巧

  • 标量套上迹:深度学习(二)梯度推导_标量_47
  • 转置:深度学习(二)梯度推导_标量_48
  • 线性:深度学习(二)梯度推导_梯度_49
  • 矩阵乘法交换:深度学习(二)梯度推导_反向传播_50,假设深度学习(二)梯度推导_IT_51深度学习(二)梯度推导_标量_52,则有深度学习(二)梯度推导_IT_53 深度学习(二)梯度推导_标量_54
  • 矩阵乘法/逐元素乘法交换:深度学习(二)梯度推导_反向传播_55其中ABC尺寸相同都为mxn,两侧都等于深度学习(二)梯度推导_IT_56
    ​【089】深度学习读书笔记:P29证明迹Tr(AB)=Tr(BA)​​

4.2 三层神经网络反向传播推导

#正向传播

Z_1 = np.dot(W_1.T,X) + b_1 # 维度N1*M ,N1表示第一隐层的神经元数
A_1 = sigmoid(Z_1) # 维度N1*M

Z_2 = np.dot(W_2.T,A_1) + b_2 # 维度N2*M ,N2表示输出层的神经元数
A_2 = sigmoid(Z_2) # 维度N2*M ,本例中N2=1

L = cross_entropy(A_2,Y) # 标量

矩阵形式的损失函数深度学习(二)梯度推导_标量_57
这里矩阵I是个全为1的(M,1)的矩阵,作用于前面(1,M)的损失求和

  • 求微分dL,由深度学习(二)梯度推导_梯度_31以及深度学习(二)梯度推导_标量_40
    深度学习(二)梯度推导_IT_60
    常数矩阵的微分为0矩阵,同时深度学习(二)梯度推导_梯度_61 代入得
    深度学习(二)梯度推导_IT_62
    深度学习(二)梯度推导_反向传播_63
    继续对深度学习(二)梯度推导_标量_64深度学习(二)梯度推导_标量_65微分,就出现了深度学习(二)梯度推导_反向传播_66
    深度学习(二)梯度推导_反向传播_67
    深度学习(二)梯度推导_标量_68
    这里的深度学习(二)梯度推导_IT_69深度学习(二)梯度推导_梯度_70深度学习(二)梯度推导_IT_71都是变量。将深度学习(二)梯度推导_反向传播_72带入深度学习(二)梯度推导_IT_73
    深度学习(二)梯度推导_反向传播_74
    深度学习(二)梯度推导_IT_75

接下来使用迹技巧将深度学习(二)梯度推导_反向传播_76换到最右侧
深度学习(二)梯度推导_反向传播_77
因为深度学习(二)梯度推导_梯度_78深度学习(二)梯度推导_反向传播_79尺寸相同,所以有
深度学习(二)梯度推导_标量_80
由法则深度学习(二)梯度推导_IT_81得:
深度学习(二)梯度推导_IT_82
深度学习(二)梯度推导_IT_83比较上式得出:
深度学习(二)梯度推导_反向传播_84
所以深度学习(二)梯度推导_IT_85

矩阵求导与矩阵微分

​​神经网络的反向传播算法中矩阵的求导方法​​

未完待续…