CS231n Lecture4-Introduction to Neural Networks学习笔记

1. Gradient

  • 我们需要观察数据的变化程度,于是导数就出现了,但是有些函数中包含多个变量,就存在这针对于每个变量的导数,也就是偏导数。(插图)

  • 梯度就是偏导数的向量,然后可能是以向量的形式,存储着多个变量的偏导数,合在一起就是梯度。(插图)

  • 对于一些特殊的函数的梯度,需要注意,比如Max,它是以数据大的一方为偏导数为1,然后乘以后面传来的值,如果小的一方,偏导数为0乘以后面传来的值,得到的结果自然为0了.

2. Chain rule

  • 链式法则: 链式法则告诉我们,把这些梯度表达式连在一起的正确方法是乘法(插图)

3. Backpropagation

  • 直白的讲,首先我们进行前向传播,然后就可以进行反向传播了,第一步是接收从后方传来的梯度,第二步是计算自己结点上的梯度,二者进行相乘就得到了当前结点上的偏导数。
  • 一个例子,插图讲解。

4. Patterns in backward flow

  • add gate: 加法的梯度后面传来的值,与当前值直接乘以1,得到结果,也就是说,经过加法门,后面传来的值与从该门往前传的值不变。
  • max gate: 这个比较特殊,值到的一方变量该结点上的梯度为1,小的一方梯度为0,然后最后的结果就是分别乘以后面传来的值,得到最终往前传的梯度,也就是该结点的梯度。
  • multiply gate: 这个比较容易理解,当前结点的梯度就像普通的函数分别求偏导数即可,然后分别与后面传来的值相乘,便得到各自的最终梯度。

5. Gradients for vectorized operations

  • simple case
# forward pass
W = np.random.randn(5, 10)
X = np.random.randn(10, 3)
D = W.dot(X)

# now suppose we had the gradient on D from above in the circuit
dD = np.random.randn(*D.shape) # same shape as D
dW = dD.dot(X.T) #.T gives the transpose of the matrix
dX = W.T.dot(dD)
  • 解释矩阵求偏导,简单来看就是,Y的shape即尺寸大小,反向传播从后方传来一个和Y一样的shape的偏导数,然后如果要求Y对于W的偏导,那么直接是传来的shape偏导数,点积于X的转置;而对于求Y对于X的偏导,就是W的转置点积于传来的shape的偏导数。
  • Y = W * X
  • related document on taking matrix/vector derivatives
  • 线性求偏导
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/tsruixi/p/12601510.html