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

26 篇文章 2 订阅
6 篇文章 0 订阅

CS231n简介

详见 CS231n课程笔记1:Introduction
注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。

课程作业

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

1. 计算图 VS 微积分

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

2. BP计算方法

前向计算的时候同时计算local gradient,反向计算的时候把传播回来的global gradient与local gradient相乘即可得到需要向前一层节点传播的global gradient。
BP
一个例子如下:
BP example
具体的,

  1. 最后一层节点(一般为Loss)所接受到的global gradient为1。
  2. 加法运算符是把输出的gradient传播到所有的输入链接中。
  3. max运算符是传播到较大的输入链接中。
  4. 乘法运算符是乘以其他输入乘积和到输入链接中。
  5. 如果节点有多个输出连接,那么他的输出global gradient是所有输出连接之和。
  6. 可以把多个运算符合并为一个运算符,以简化计算,提高效率。

3. 向量化算法

大多数情况,输入输出都是向量,则local gradient为两者的Jacobian矩阵,然后仍然是global gradient与local gradient相乘。
对于max等运算节点,因为相应的Jacobian矩阵非常稀疏,可以直接采用向量元素相乘的形式。
一般深度学习网络的API中,为如何进行前向后向传播都留出了很大的余地,供使用者自由发挥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值