CS231n Lecture 4: 神经网络和反向传播

Lecture 4 神经网络和反向传播

Lecture 4: 神经网络和反向传播

神经网络

线性分数函数: f = W x + b f=Wx + b f=Wx+b

2层神经网络: f = W 2 m a x ( 0 , W 1 x + b 1 ) + b 2 f = W_2max(0,W_1x + b_1) + b_2 f=W2max(0,W1x+b1)+b2

在这里,更精确地来说,应该叫做全连接神经网络(FC)

在两层神经网络中,使用了非线性激活函数ReLU。如果不使用非线性激活函数的话,最后会变为 在这种情况下,设 因此,实质上还是单层神经网络,不管有几个W,还是不能摆脱线性。

并且,由于许多点是我们无法用线性函数来划分区域的。因此,需要用非线性来画出我们想要的边界。当然,正则项也十分重要,reg越大,边界越会变为线性

CS231n Lecture 4: 神经网络和反向传播_第1张图片

激活函数

CS231n Lecture 4: 神经网络和反向传播_第2张图片

ReLU函数往往是默认使用的函数。其他函数会在之后的章节中提到优缺点。

隐藏的层数和每层神经元的数目需要自己来确定。

CS231n Lecture 4: 神经网络和反向传播_第3张图片

反向传播 Backpropagation

由于如果直接从损失函数计算梯度,会十分复杂。特别是到了卷积神经网络和神经图灵机上,

CS231n Lecture 4: 神经网络和反向传播_第4张图片

因此,可以采用链式法则来更好地计算出梯度。

需要记住的是,函数对本层参数的梯度 = 上游梯度 * 本地梯度

CS231n Lecture 4: 神经网络和反向传播_第5张图片

采用这种计算图的表示可以更加方便地求出我们想要的梯度。

由于标量对标量的导数求导是十分简单的,但到了标量对向量、向量对向量的求导就比较复杂了。

CS231n Lecture 4: 神经网络和反向传播_第6张图片

需要明白矩阵的shape是什么样的。 行是分子的元素个数,列是分母的元素个数。

CS231n Lecture 4: 神经网络和反向传播_第7张图片

至于如何确定相乘的顺序和是否需要转置,我的想法是只需要让他们的shape匹配就可以了(线性代数知识的匮乏

CS231n Lecture 4: 神经网络和反向传播_第8张图片

2 ⋅ h 1 T ⋅ y ^ 2 X T ⋅ y ^ ⋅ W 2 T \begin{array}{r}2 \cdot h_{1}^{T} \cdot \hat{y} \\2 X^{T} \cdot \hat{y} \cdot W_{2}^{T}\end{array} 2h1Ty^2XTy^W2T

你可能感兴趣的:(CS231n,学习笔记)