CNN笔记(CS231N)——反向传播和神经网络(Backpropagation and Neural Networks)

反向传播

计算图

由于神经网络结构复杂,我们可以采用计算图的形式来把损失函数表示出来,进而利用反向传播算法计算出损失函数对每个权重的偏导数

以下是具体的一个例子,具体过程就是先利用前向传播求出输出的值,再利用反向传播来求出输出对每个中间量的偏导,再利用链式法则求出输出对输入的偏导

把以上过程抽象出来可以写成如下的形式

以下是一个稍微复杂一点的例子

在反向传播中不同的门对应着不同的导数操作

对于分支分散的节点,我们应该把偏导数相加再计算

如果我们将输入输出向量化,那本来的偏导数项对应的是雅克比矩阵

如果输入输出是element-wise操作,实际上一个输出只与一个输入有关,因此此时的雅可比行列式只有主对角线上的元素不是0,其他的都为0,这样可以大大削减偏导数的维度

以下是一个将向量运用到计算图中的例子

以下是对反向传播算法的总结

神经网络

我们之前讲了线性分类器,实际上神经网络就是由线性函数上不断叠加新的线性函数,中间插入非线性函数而成的网络。例如我们之前讲的例子,对于第一层线性分类器,一组权重对应的一种模板,而当网络变为两层的时候,第一层的输出维度可以大大增加(从原来的10变为100),对应的就是我们可以拥有更多不同的模板还涵盖更多的实例,而第二层线性分类器的功能就是将这一些模板以不同权重相加,来表示某各类涵盖了哪些模板。两个线性分类器之间用一个非线性函数ReLU连接(也就是下图中max函数)

下面让我们看看神经网络的基本单元,基本单元与神经元有着相似的结构

我们实际在神经网络中采取的结构当然要更加复杂但是基本原理类似

我们可以选择不同的非线性函数来满足不同的需要

由很多个基本单元组成的网络就叫做神经网络

以下是神经网络的总结

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/86652180