这一部分主要是关于用BP算法来计算梯度,在这一章中,主要解决下面三个问题:
1.梯度的意义(what the gradients mean?)
2.在网络中梯度如何通过反向传播(how they flow backwards in the circuit?)
3.如何调整?( how they communicate which part of the circuit should increase or decrease and with what force to make the final output higher.)

  • 梯度的意义

    梯度的意义与在向量代数中曾经给出,它表示一个函数在某一点变化最快的方向(即方向导数最大值),梯度是一个向量。例如:


    再如,sigmoid函数的梯度:

w = [2,-3,-3] # assume some random weights and data
x = [-1, -2]# forward pass
dot = w[0]*x[0] + w[1]*x[1] + w[2]
f = 1.0 / (1 + math.exp(-dot)) # sigmoid function# backward pass through the neuron (backpropagation)
ddot = (1 - f) * f # gradient on dot variable, using the sigmoid gradient derivation
dx = [w[0] * ddot, w[1] * ddot] # backprop into x
dw = [x[0] * ddot, x[1] * ddot, 1.0 * ddot] # backprop into w
# we're done! we have the gradientr circuit
  • 在网络中梯度如何通过反向传播

在神经网络中常用的计算有三种即加法、乘法、取最大(add,mul,max),每一种计算称为一个gate,经过不同的gate梯度发生的变化如下:

加法:梯度不变
乘法:按照链式法则相乘
取最大:对于最大值,乘以1.0,其余乘以0.0

  • 矩阵与矩阵相乘后的梯度求算

import numpy as np
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)
print W
print "#############################"
print X
print "#############################"
print D
print "#############################"
print dD
print "#############################"
print dW
print "#############################"
print dX

CS231n 学习笔记(4)——神经网络 part4 :BP算法与链式法则相关推荐

  1. 《neuralnetworks and deeplearning》学习笔记1-深入理解BP算法

    http://neuralnetworksanddeeplearning.com 一,损失函数的两个假定: 1,成本函数可被写为C = 1 / N ΣxCx  ,  Cx  针对单个x . 原因:BP ...

  2. 机器学习西瓜书笔记:神经网络:BP算法公式推导

    1.变量符号含义 1.训练集D={(x⃗1,y⃗1),(x⃗2,y⃗2),...,(x⃗m,y⃗m)}D = \{(\vec{x}_1, \vec{y}_1), (\vec{x}_2, \vec{y} ...

  3. K近邻分类器(李飞飞CS231n学习笔记---lecture2:K最近邻算法)

    在讲解K近邻分类器之前,我们先来看一下最近邻分类器(Nearest Neighbor Classifier),它也是K = 1时的K近邻分类器. 目录 最近邻分类器 定义 存在问题 K近邻分类器(KN ...

  4. 深度学习系列:全连接神经网络和BP算法

    前言 注:以后我的文章会写在个人博客网站上,本站文章也已被搬运.本文地址: https://xiaodongfan.com/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E ...

  5. July深度学习笔记之神经网络与反向传播算法

    July深度学习笔记之神经网络与反向传播算法 一.神经网络 神经网络的大致结构如下: 大致可以分为输入层.隐藏层与输出层. 而我们可以单独拿出来一个结点,可以发现,其实它就是类似一个逻辑回归(LR), ...

  6. 神经网络之BP算法学习记录(大多借鉴于《神经网络与机器学习——邱锡鹏》)

    神经网络之BP算法 神经网络 前馈神经网络 反向传播算法 损失函数 梯度下降法 梯度下降法在前馈神经网络中的应用 反向传播算法中的梯度下降法 反向传播算法MATLAB示例 使用newff建立神经网络 ...

  7. 深度学习——神经网络之DNN全连接神经网络、BP算法原理

    深度学习--神经网络之DNN全连接神经网络.BP算法原理 深度学习--神经网络之DNN全连接神经网络.BP算法原理 1.啥是人工神经网络 2.神经网络的应用 3.神经网络的组成 3.1.神经元 3.2 ...

  8. python bp神经网络 异或_【神经网络】BP算法解决XOR异或问题MATLAB版

    第一种 %% %用神经网络解决异或问题 clear clc close ms=4;%设置4个样本 a=[0 0;0 1;1 0;1 1];%设置输入向量 y=[0,1,1,0];%设置输出向量 n=2 ...

  9. cs231n学习笔记——图像分类

    cs231n学习笔记--图像分类及代码实现 写在前面的废话 1.图像分类 2.数据驱动 3.图形分类流程 4.L1距离(曼哈顿距离) 5.L2距离(欧氏距离) 6. Nearest Neighbor分 ...

  10. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略

    DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释).案例应用之详细攻略 相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类 ...

最新文章

  1. Sahi (2) —— https/SSL配置(102 Tutorial)
  2. ITK:使用Otsu方法将前景和背景分开
  3. HttpOperater
  4. linux服务器管理书籍,linux服务器管理
  5. 【AIX 命令学习】lsattr 显示一个给定设备或一种设备的属性
  6. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题
  7. c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门
  8. 逻辑回归的通俗解释 逻辑回归的定位
  9. 《中国人工智能学会通讯》——5.16 结 论
  10. Java Hashtable rehash()方法与示例
  11. 计算机的外部设备 硬盘,外部设备采用SMB协议想共享电脑硬盘下的文件
  12. BZOJ 4520: [Cqoi2016]K远点对
  13. 获取每日 联想电脑 开机锁屏壁纸
  14. 人工智能——机器学习是什么
  15. To King Cover
  16. mathtype中如何添加一个圆圈中间一个减号的符号
  17. java 五角星十个坐标_如何求五角星十个顶点的坐标
  18. 2018年的25个最佳数据可视化
  19. windows服务与计划任务
  20. 强大的strace命令

热门文章

  1. Exchange 2010迁移Exchange 2013(一)共存部署
  2. 多线程之旅之四——浅谈内存模型和用户态同步机制
  3. RuntimeError: The full_object_detection must use the iBUG 300W 68 point face landmark style.
  4. ROS系统 动作编程
  5. C语言 使用指针计算两个整数的和与差
  6. envi5.2中文版
  7. php安装redis扩展详细步骤 不会可以加QQ
  8. [转]十分钟搞定Vue搭建
  9. BZOJ3945 : 无聊的邮递员
  10. RTB撕开黑盒子 Part 1: Datacratic's RTB Algorithms