您的位置:首页 > 其它

CS231n课程笔记4.1:反向传播BP

2016-12-19 21:03 375 查看

CS231n简介

详见 CS231n课程笔记1:Introduction

注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。

课程作业

关于BP实现的实例请参考 CS231n作业笔记1.3:SVM的误差函数以及反向传播(非向量及向量算法)

1. 计算图 VS 微积分

如果可以直接使用微积分得到gradient,使用BP则会显得效率低下。但是通常情况下我们需要计算多层的神经网络,其中设计很多不可求导的计算,这就使得直接求导工程巨大,甚至难以实现。同时BP算法容易实现,易于拓展,容易纠错。

2. BP计算方法

前向计算的时候同时计算local gradient,反向计算的时候把传播回来的global gradient与local gradient相乘即可得到需要向前一层节点传播的global gradient。



一个例子如下:



具体的,

最后一层节点(一般为Loss)所接受到的global gradient为1。

加法运算符是把输出的gradient传播到所有的输入链接中。

max运算符是传播到较大的输入链接中。

乘法运算符是乘以其他输入乘积和到输入链接中。

如果节点有多个输出连接,那么他的输出global gradient是所有输出连接之和。

可以把多个运算符合并为一个运算符,以简化计算,提高效率。

3. 向量化算法

大多数情况,输入输出都是向量,则local gradient为两者的Jacobian矩阵,然后仍然是global gradient与local gradient相乘。

对于max等运算节点,因为相应的Jacobian矩阵非常稀疏,可以直接采用向量元素相乘的形式。

一般深度学习网络的API中,为如何进行前向后向传播都留出了很大的余地,供使用者自由发挥。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cs231n BP 反向传播