反向传播的意义及c++实现
本轮的主要内容是教会初学者如何用 c++来实现深度学习中至关重要的 一个环节----反向传播算法的实现(部分内容参考: http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm)。
主要内容:
介绍反向传播算法的作用
反向传播算法实现步骤
c++实现的一个例子
反向传播算法的作用
假设我们有一个固定的训练集
对于整个训练集,其误差为:
这里,后面一项是正则化项,
首先需要明确的是:我们的目的是最小化误差函数J(W.b)。J是w,b的函数。训练一个伸进网络,我们会选择某种方法(可以参考《如何优雅地训练神经网络》)来初始化我们的权重。
根据梯度下降法的思想,沿着梯度的反方向是误差函数下降最快的方向。因此,可以得出更新系数的公式:
这里 ,
反向传播算法的主要步骤
反向传播算法的主要步骤如下:
1、 进行一次前向传播(feedforward pass),计算出各层的输出激活 值
2 、 对于网络的输出层的每个神经元
3 、对于
注意 下标的顺序(可以结合“反向”二字理解下标)
4、 计算偏导数
以上便是反向传播算法的主要步骤。
C++实现的一个例子见:https://github.com/xupeng082008/DeepLearning-Backpropagation
❈
全球人工智能近期经典文章推荐
匹兹堡赌场的赌神——扑克牌机器人背后的理论
6亿用户的《今日头条》和它的黑科技武器
干货 | 反向传播中 什么样的梯度是有意义的
干货|如何利用 TensorFlow 创建第一个神经网络
深度学习里数学之--方差--美妙而富有韵味
备受争议的 D-Wave新型量子计算机 竟然找到了第一个买家
干获|详解深度学习框架——TensorFlow
Google|“自动机器学习”取得重大突破:机器设计的机器学习软件已达AI专家设计水平!
【南大教授】提出“超深度学习”欲颠覆“深度学习”,你怎么看?
❈