CS231n学习记录Lec5 Backpropagation and Neural Networks反向传播与神经网络
2018-03-10 15:46
579 查看
Lec5 Backpropagation and Neural Networks反向传播与神经网络
1. 反向传播Backpropagation解析梯度与数值梯度
用计算图表示函数,注意节点。有时候表达式过于复杂以致于不想用微积分计算出表达式型的梯度,将复杂的表达式分解成一些节点计算,这样就可以使用一些很简单的值计算出梯度。
反向传播
使用链式法则,将上游梯度和本地梯度相乘,计算节点的梯度。 接收从上游传回来的梯度值乘以本地的梯度值,再往直接相连的下游节点传递,不考虑直接相连节点之外的东西。问题在于求解这个本地梯度。
同样也可以将一些小节点聚合起来组成一个相对大一点的复杂节点,只要你能够写出这个复杂节点的本地梯度。
加法门将upstream梯度平均回传;max们将upstream梯度回传为一个变量为1另一个变量为0;而乘法门(x∗yx∗y)基本上是一个梯度交换作用,xx的梯度值是yy,反之,也可以理解成一个尺度缩放器,对这一个分支根据另一个分支的值对其进行缩放。
计算某个梯度有问题的时候就考虑一下计算图,然后按节点进行计算。
向量化计算
Jacobian matrix(?)会是一个对角矩阵。 向量的梯度和原向量一样大小,其中每个元素的梯度代表着这个元素对最终函数影响的大小。一旦计算出梯度后要检查是不是和原向量一样大小。
前向后向模块化
做成forward()/backward() API
正向计算的结果需要保存下来,用于反向计算。
2.神经网络
是一个非线性函数。虽然有多个线性函数堆叠但一定有一个非线性函数,所以带来了非线性性质。
Relu函数 正区间内的线性函数
神经网络层数的叫法:
向量计算的高效性体现在在一层隐藏层里面我们通过一次矩阵乘法来得到所有神经元的值。
一个简单基本的神经网络结构示意:
相关文章推荐
- Java Back Propagation Neural Network(JAVA反向传播神经网络)
- 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)
- Java Back Propagation Neural Network(JAVA反向传播神经网络)
- 机器学习笔记07:神经网络的反向传播(Backpropagation)
- 一文弄懂神经网络中的反向传播法(Backpropagation algorithm)
- 神经网络之后向传播分类(Classification by Backpropagation)
- Principles of training multi-layer neural network using backpropagation 使用后向传播算法训练多层神经网络的规则
- 循环神经网络教程3-BP算法和梯度消失问题, Part 3 – Backpropagation Through Time and Vanishing Gradients
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- 反向传播神经网络极简入门
- 反向传播神经网络极简入门
- [神经网络]从反向传播(BP)到去噪自动编码器(DAE)
- 反向传播神经网络的简单实现
- BP算法(误差反向传播(Error Back Propagation, BP)算法)
- CS231n 2016 通关 第四章-反向传播与神经网络(第一部分)
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- CS231n学习笔记--4.Backpropagation and Neural Networks
- 神经网络和深度学习(二)——BP(Backpropagation Algorithm, 反向传播算法)