斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

反向传播

一个简单的例子

斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
如图,z=f(x,y)为一个结点,由输入x,y得到预测值z,计算损失值L,可得到L对z的偏导数。根据链式求导法则,可求得L对x和y的偏微分,将计算得到的偏微分继续往前传播,即为反向传播。

具体例子

加法门:梯度分配器

如图,z=x+y,z对x的偏导为1,z对y的偏导为1,因此x处的反向传播值等于上游梯度乘1,等于2,同理,y处的反向传播值等于上游梯度乘1,等于2。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

max门:梯度路由器

如图,z=max{x,y},反向传播至x,y中的较大值,较小值为0,即x的反向传播值为2,y的反向传播值为0。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

乘法门:梯度转换器

如图,z=x*y,z对x的偏导为y,z对y的偏导为x,则x处的反向传播值等于上游梯度乘y,等于-8,y处的反向传播值等于上游梯度乘x,等于6。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

两个上游结点

如图,有两个上游结点时,应该分别反向传播的值相加,进行运算。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

一个向量的例子

斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
由于df/dqi=2qi,则qi的反向传播值为上游梯度乘2qi,例如,q1处的反向传播值=1.0020.22=0.44。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
因为dqi/dwij=xi,则wij处的反向传播值为xi乘qi处的反向传播值,例如,w11处的反向传播值=0.2
0.44=0.088。又因为dqi/dxj=wij,则xj处的反向传播值q1w1j+q2w2j,例如x1处的反向传播值=0.440.1-0.30.52=-0.112。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

神经网络

神经元基本结构

举例如下,输入变量及对应的权值,在神经元内进行运算,运算也可以是非线性运算,得到运算结果,作为变量输入激活函数,激活函数值即为神经元输出。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

常用激活函数

斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络
通过激活函数作用,可以将输出映射成离散的分类值。

神经网络结构

多个神经元按一定规律组织结构,可构成神经网络,如图,第一层被称为输入层,最后一层被称为输出层,中间各层被称为隐藏层。当隐藏层最后一层的输出分别输入到输出层的输入,此时又叫做全连接层。
斯坦福深度视觉识别课程cs231n 学习笔记三:神经网络

前向传播代码示例

以上图为例

class Neuron:
	def feed_forward():
		#前向传播三层神经网络
		f=lambda x:1.0/(1.0+np.exp(-x))
		x=np.random.randon(3,1) #随机输入3*1的向量
		h1=f(np.dot(W1,x)+b1) #计算第一层隐藏层
		h2=f(np.dot(W2,h1)+b2)#计算第二次隐藏层
		out=np.dot(W3,h2)+b3 #计算输出
		return out
上一篇:CS231n 学习总结(笔记和作业)


下一篇:【读书笔记】:cs231n(image classification notes)