神经网络详解 Detailed neural network

神经网络之BP算法,梯度检验,参数随机初始化

neural network(BackPropagation algorithm,gradient checking,random initialization)

一、代价函数(cost function)

对于训练集,代价函数(cost
function)定义为:

其中红色方框圈起的部分为正则项,k:输出单元个数即classes个数,L:神经网络总层数,:第层的单元数(不包括偏置单元),:表示第层边上的权重。

二、误差逆传播(BackPropagation,简称BP)

有了代价函数 ,我们的目前显然是找到能使最小的参数,为了使用梯度下降或者其他优化算法,我们需要计算:

   

直接用上面的公式就可以求出,关键是如何计算。BP算法可以求出最佳权值,下面来看看BP算法的基本原理。先来看一下forward
propagation(就不画图了,直接给出Ng画的图)

接下来看BP算法:定义为第L层单元i的残差。BP算法的目标是最小化 。而对于样例来说,其均方误差为:。在梯度下降中,每一次迭代都按如下公式对参数更新:

BP算法的思路如下:给定一个样例,先根据前向传导(forward propagation)计算出神经网络中的所有激活值。针对第层的每一个节点i,我们可以计算出其“残差”,该残差表明了该节点对最终输出值的残差产生了多少影响。对于最后一层输出层,我们可以直接计算出神经网络的输出与实际类别值之间的残差。那么重点是对于隐藏层该如何处理?我们将基于节点第层的残差的加权平均值计算出,这些节点以作为输入。

因此,对于最后一层输出层L(用L表示最后一层输出层)来说:

对于隐藏层来说:

因此可得:

这样,我们就可以求得偏导数:,因此

关于BP算法的公式推导已经介绍完了,大家可以自己在纸上推导一下。下面来总结一下,BP算法的执行过程(直接盗用ng的图吧)

以上就是BP算法的细节原理。概括来讲就是:

1、利用forward propagation计算出每一层的“激活值”

2、计算出最后一层即输出层每个输出单元的残差

3、计算出第层节点的残差

4、计算出我们需要的偏导数。

讲了这么多,大家来看看NG举得例子,可行更加形象化的让大家体会下BP算法的执行过程细节:

三、梯度检验(gradient checking)

BP算法细节繁多,而且甚是复杂,因此非常容易出错,很难检查出来。因此需要使用梯度检验,梯度检验能够非常的确信的检验你实现的BP算法是否正确。梯度检验如下图所示(图片来自ng machine learning 课):

因此,对于每个参数使用梯度检验:

因为在BP算法执行过程中,我们就可以将这个近似值与的导数相比较,如果两者相同或者非常接近,则可以确认我们实现的BP算法是正确的。有个注意点:当你训练BP神经网络时,一定要关闭gradient checking,因为梯度检验的执行速度非常非常慢。

四、参数随机初始化(random initialization)

我们在线性回归和logistic回归中都可以把初始化为zeros(n,1),这样做是可以的。但是在神经网络中这样做却是不可以的,因为如果初始化的参数一样,意味着隐藏层的每个单元的输入权重是一样的,因此每次更新后隐藏层的单元值将会是一样的。这就意味着所有的隐藏层单元都在计算相同的特征,这是完全多余的。来个图形象化的理解一下:

因为在神经网络参数(权重)初始化的时候,需要随机初始化,就是把的值随机初始化,范围为

关于神经网络的BP算法,梯度检验,参数随机初始化就介绍完了,大家可以结合我的上一篇神经网络的入门知识http://blog.csdn.net/u012328159/article/details/51143536看,相信能够对神经网络有个基本的理解。

注:提供一些参考资料给大家,能够更好的帮助大家更好的理解神经网络。

时间: 2024-10-10 02:40:33

神经网络详解 Detailed neural network的相关文章

TensorFlow框架(6)之RNN循环神经网络详解

1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主要用途是处理和预测序列数据.全连接的前馈神经网络和卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的. 图 11 RNN-rolled 如图 11所示是一个典型的循环神经网络.对于循环神经网络,一个非常重要的概念就是时刻.循环神经网

TensorFlow框架(4)之CNN卷积神经网络详解

1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对于上图中隐藏层的第j个神经元的输出可以表示为: 其中,f是激活函数,bj为每个神经元的偏置. 1.2 卷积神经网络 1.2.1 网络结构 卷积神经网络与多层前馈神经网络的结构不一样,其每层神经元与下一层神经元不是全互连,而是部分连接,即每层神经层中只有部分的神经元与下一层神经元有连接,但是神经元之间

Chrome 开发者工具详解(2):Network 面板

面板上包含了Elements面板.Console面板.Sources面板.Network面板. Timeline面板.Profiles面板.Application面板.Security面板.Audits面板这些功能面板. 这些按钮的功能点如下: Elements:查找网页源代码HTML中的任一元素,手动修改任一元素的属性和样式且能实时在浏览器里面得到反馈. Console:记录开发者开发过程中的日志信息,且可以作为与JS进行交互的命令行Shell. Sources:断点调试JS. Network

卷积神经网络详解

1 前言 在dl中,有一个很重要的概念,就是卷积神经网络CNN,基本是入门dl必须搞懂的东西.本文基本根据斯坦福的机器学习公开课.cs231n.与七月在线寒老师讲的5月dl班第4次课CNN与常用框架视频所写,是一篇课程笔记.本只是想把重点放在其卷积计算具体是怎么计算怎么操作的,但后面不断补充,故写成了关于卷积神经网络的通俗导论性的文章.有何问题,欢迎不吝指正. 2 人工神经网络 2.1 神经元 神经网络由大量的节点(或称"神经元"."单元")和相互连接而成.每个神经

OSI七层详解之三 网络层(Network layer)

一.简介 在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网.网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送.网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地 址信息- -源站点和目的站点地址的网络地址. 如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是"数据包"问题,而不是第2层的"帧".IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP).有关路由的一

Recurrent Neural Network(循环神经网络)

Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种,LSTM发明者Jürgen Schmidhuber的高徒,现加入University of Toronto,拜师Hinton. 统计语言模型与序列学习 1.1 基于频数统计的语言模型 NLP领域最著名的语言模型莫过于N-Gram. 它基于马尔可夫假设,当然,这是一个2-Gram(Bi-Gram)模

卷积神经网络(Convolutional Neural Network,CNN)

全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网络结构来有效地减少神经网络中参数的数目.而卷积神经网络(Convolutional Neural Network,CNN)可以做到. 1. 卷积神经网络构成 图 1:卷积神经网络 输入层 整个网络的输入,一般代表了一张图片的像素矩阵.图 1中最左侧三维矩阵代表一张输入的图片,三维矩阵的长.宽代表了图

coursera机器学习技法笔记(12)——Neural Network

12 Neural Network 12.1 Motivation 在神经网络的节点上使用感知机,那我们可以把神经网络看作是通过不同感知机以及常数的线性组合得到一个新的特征,将新的特征加上一个常数再进行线性组合得到结果.其原理和aggregation类似,但是在神经网络中进行了多层级的aggregation. 从生物的角度来说神经网络模拟了人脑神经网络. 12.2 Neural Network Hypothesis 如果神经元节点都用线性回归的话,那么无论怎么组合最终都是个线性回归,模型的能力没

DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43225445 本文介绍多层感知机算法,特别是详细解读其代码实现,基于python theano,代码来自:Convolutional Neural Networks (LeNet).经详细注释的代码和原始代码:放在我的github地址上,可下载. 一.CNN卷积神经网络原理