深度学习 2 : BP 算法
来源:互联网 发布:张艺兴网络剧 编辑:程序博客网 时间:2024/05/22 17:29
BP 即 Back Propagation
一,算法前提
机器学习是数理统计的一种应用,可以看做是,用合适的曲线对给定的一些样本点进行拟合。
深度学习也是数理统计的一种应用,只不过,样本点不再是 ( x , y ) 这样的简单点对,而是 ( X , Y ) 这样由向量,矩阵 等组成的更广义的点对。
因此,( X , Y ) 之间的关系也变得更加复杂,不太可能像 ( x , y ) 一样用简单的函数即可表达。
但是,人们发现,可以用多层神经网络来表示这样的关系,多层神经网络描述本质就是一个多层复合的函数。
二,算法选择
深度学习各层神经网络之间,会使用 W 来表示层间连接权值,可以用
同机器学习 ( x , y ) 点拟合目标函数一样,深度学习 ( X , Y ) 也有用于表达拟合的目标函数,通常也称此目标函数为成本函数,
成本函数中含有若干多个连接权值
记成本函数为 cost function,
cost function 函数可以看成是由所有待求权值
三,梯度下降算法
梯度下降法给定一个初始点,然后求该点的梯度向量,再以负梯度方向为搜索方向,以一定的步长进行搜索,从而确定下一个迭代点,再计算该新迭代点的梯度方向,重复此过程,直到 cost function 收敛 。 那么如何计算迭代点的梯度呢?
cost function 记做:
那么 cost function 的梯度向量为:
对此,我们需要求出 cost function
BP算法就是用来求解这种多层复合函数的所有的成千上万个变量的偏导数而生的。
由此,便引入反向传播算法。
四,反向传播
以求函数
的偏导数为例,这里设
上述计算
将每一个变量当做一个节点,可以看到:
计算
计算
就是说,对于上层节点 p 和下层节点 q , 要求得
显然这里的
BP算法 为了避免这种计算冗余而生,如名字所示,是反向地从上往下寻找路径的:
从最上层的节点 Y 开始,初始值为 1 , 以层为单位进行处理,对于 Y 下层的所有节点, 将 1 乘以 Y 到某个节点路径上的偏导值,并将结果 “堆放” 在该子节点中。
这样传播完毕后,第二层的每一个节点都 “堆放” 些值,然后我们针对每个节点,把它里面所有 “堆放” 的值求和,就得到了顶点 Y 对该节点的偏导。
然后将这些第二层的节点各自作为起始顶点,初始值设为顶点 Y 对它们的偏导值,以”层”为单位重复上述传播过程,即可求出顶点 Y 对每一层节点的偏导数。
以求函数
节点 A 接受 Y 发送的 1 * 2 并堆放起来,节点 B 接受 Y 发送的 1 * 3 并堆放起来,至此第二层完毕.
求出各节点总堆放量并继续向下一层发送。
节点 A 向 a 发送 2 * 1并对堆放起来,节点 B 向 b 发送 2 * 1 并堆放起来,节点 B 向 b 发送 3 * 1 并堆放起来,至此第三层完毕,节点 a 堆放起来的量为2,节点b堆放起来的量为 2 * 1 + 3 * 1 = 5。即顶点 Y 对 a 的偏导数为 2 . 即顶点 Y 对 b 的偏导数为 5.
举个不太恰当的例子,如果路径表示欠钱的关系,即 A → Y 表示 A 欠 Y 的钱。以 a , b为例,直接计算 Y 对它们俩的偏导相当于 a , b 各自去讨薪。a 向 A 讨薪,A 说 Y 欠我钱,你向他要。于是 a 又跨过 A 去找 Y。b 先向 A 讨薪,同样又转向Y,b 又向 B 讨薪,再次转向 Y。可以看到,追款之路,充满艰辛,而且还有重复,即 a, b 都从 A 转向 Y。
而BP算法就是主动还款。Y 把所欠之钱还给 A,B。A,B 收到钱,主动把钱转发给了a,b,皆大欢喜。
参考:
https://www.zhihu.com/question/27239198/answer/89853077
http://neuralnetworksanddeeplearning.com/
- 深度学习 2 : BP 算法
- 深度学习BP算法 BackPropagation
- 【深度学习:CNN】BP算法
- 深度学习之后向传输(BP)算法
- 深度学习算法实践8---BP算法详解
- 深度学习算法实践8---BP算法详解
- 深度学习框架Caffe学习笔记(8)-BP神经网络算法
- 【深度学习】BP神经网络
- 深度学习UFLDL教程翻译之BP算法
- 深度学习BP算法 BackPropagation以及详细例子解析
- 浅析深度学习mini_batch的BP反传算法
- 深度学习(Deep Learning) 2.BP算法
- 深度学习入门(四) BP算法与卷积神经网络理解
- 深度学习BP算法 BackPropagation以及详细例子解析
- 深度学习中BP(Backpropagation)算法的工作流程
- 【深度学习】BP算法分类iris数据集
- 深入浅出|深度学习算法之BP神经网络 详细公式推导
- 深入浅出|深度学习算法之BP神经网络 详细公式推导
- 缓存淘汰算法--LRU算法
- Java接口与抽象类的区别
- 算法与数据结构(2) -- 二叉树深度优先遍历和广度优先遍历
- 服务器(4)--搭建Solr集群+搭建Zookeeper集群(上篇)
- ZCMU—1933
- 深度学习 2 : BP 算法
- USACO3.2.5-butter
- Java实现设计模式之工厂模式
- POJ 1686 Lazy Math Instructor 笔记
- lens shading correction
- 5.31项目随笔
- 的maven pom.xml文件教程详解
- 给初学者的RxJava2.0教程(一)
- Educational Codeforces Round 20