在学习斯坦福-吴恩达-机器学习和计算机视觉过程中,我发现两门课程对Backpropagation的解释并不一样,因此进行了一下探究
下面先简单介绍一下每个课程对于Backpropagation的讲解
吴恩达
这里吴恩达引入误差这个中间结果进行梯度的计算,将每层上层的误差乘上此层的神经元输出,经过平均和正规化得出梯度
CS231n
这里使用偏导数传递的方法进行方向传播,概括的说就是使用从下一个神经元传播来的Upstream gradient与本地神经元的Local gradients相乘得到Downstream gradients传播至上一层
总结
二者本质上是相同的,由于CS231n的解释非常接近反向传播的原理,因此这里以其为基础,试图将吴恩达的方法向其转化进行解释。
吴恩达的方法中,每个变量其实都与CS231n中计算Downstream gradients时的各运算成员是对应的:
- 误差可以理解为Upstream gradient,δ(L)代表L关于a(L)的偏导数,最后一层的误差是a-y,即代价函数L关于最后一层输出(a(L)即h)的偏导数
- ∆可以理解为Downstream gradients * m,即未根据数据量进行求平均的梯度,在吴恩达的公式中,每层的∆是通过对误差和本层神经元输出作积得到的(图中一种是遍历对应元素单独乘,后面红字的矩阵运算写法),这就是对应Upstream gradient与本地神经元的Local gradients相乘的运算
- ∆计算公式中出现a(L),这是本地梯度,因为Upstream δ(L+1)是L关于上一层神经元输出a(L+1)的偏导数,如果我们要求L关于本层权重参数的偏导数,那么就需要再乘上上一层神经元输出a(L+1)关于本层神经元输出a(L),这利用了偏导数的传递关系,及CS231n中Downstream gradients的计算公式所示
这样,两门课程对于Backpropagation的计算就联系起来了,CS231n偏向于原理,吴恩达偏向于具体运算过程。
了,CS231n偏向于原理,吴恩达偏向于具体运算过程。
个人认为,可能因为吴恩达的课程基本是一个机器学习的入门,因此对于很多数学原理并不会过多地解释(视频中很多地方都会说不会具体解释其数学原理,某些章节还是optional的),而CS231n是有很多前驱课程的,因此会假设观看者有一定的数学基础,因此会将其原理解释清楚。