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

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

神经网络

线性分数函数:\(f=Wx + b\)

2层神经网络: \(f = W_2max(0,W_1x + b_1) + b_2\)

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

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

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a45508c4-0954-4a7c-ad1d-844f997692b1/Untitled.png

激活函数

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8ab7107a-1ce9-41cb-86e0-923e4c1b33e2/Untitled.png

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

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/228ed5cb-8310-4d30-8a2b-9bd2132be3d7/Untitled.png

反向传播 Backpropagation

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9ce7aaff-b38f-486e-8355-9bf8daedbcb8/Untitled.png

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

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/490bf9b6-31fe-45bd-b08b-af0ea47e992f/Untitled.png

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

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/90b087a8-0df0-47c4-bd4c-634f3cdf8e19/Untitled.png

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/096c441a-3c80-4f24-b2e5-eb12140fca89/Untitled.png

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5c34e499-5a7a-42e9-904c-049a0ee585d1/Untitled.png

\[\begin{array}{r}2 \cdot h_{1}^{T} \cdot \hat{y} \\2 X^{T} \cdot \hat{y} \cdot W_{2}^{T}\end{array} \]

posted @ 2021-04-20 21:00  QingYuAn_Wayne  阅读(69)  评论(0)    收藏  举报