首页 > 代码库 > 深度学习预备课:神经网络
深度学习预备课:神经网络
1什么是神经网络
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
2神经网络算法
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。输入层神经元的个数由样本属性的维度决定,输出层神经元的个数由样本分类个数决定。隐藏层的层数和每层的神经元个数由用户指定。形态如下:
理解这个结构前,需要先了解一下感知器。
2.1感知器
假设样本X 共有三个布尔类型属性{x1,x2,x3} 现在要解决对于X的二分类问题。分类目标是:当三个输入中至少两个是0时,取-1,反之y取1.
上图就是一个最简单的神经网络结构———感知器。 感知器包含两种节点:几个输入节点用来表示输入属性:一个输出节点用来提供模型输出。神经网络结构中的结点通常叫做神经元或单元。 在感知器中,每个结点都通过一个加权的链连接到输出结点。这个加权的链用来模拟神经元间神经键连接的强度。向生物神经系统一样,训练一个感知器模型就相当于不断调整链的权值,直到能拟合训练数据的输入输出关系为止。
对于这个例子,假设我们有三个全职皆为0.3,输出结点的偏置因子为0.4.那么模型的输出计算工时如下
y={ 1 if 0.3x1+0.3x2+0.3x3-0.4>0
-1 if 0.3x1+0.3x2+0.3x3-0.4<0
这样我们相当于得到了一个简单的分类器。
显然, 感知器的输出模型为
y= sign(w1x1+w2x2+..wnxn-t)
那么权值和偏置因子是怎么得到的呢
2.2学习感知器模型
在感知器的训练阶段,我们需要不断的调整权值参数w使输出和训练样例的实际输出一致。算法概述如下
1 另D={(xi,yi)|i=1,2..N}为训练样本集
2 用随机值初始化w
3 repeat
4 for 每个样本(xi,yi)
5 计算预测输出yi(k)
6 for 每个权值wj
7 更新权值 wj(k+1)=wj(k)+T(yi-yi(k))xij (1)
8 end
9 end
10 until满足终止条件
w(k)是第k次循环时相应的权值。参数T为学习率 leaning rate。 xij是第i个样本的第j个属性。从权值更新公式可以直观的看出,新权值wj(k+1)等于旧权值wj(k)加上一个正比于预测误差的量。学习率T在0和1之间。
这里我们的感知器模型是线性的,同时也是线性可分的情况。如果面对线性不可分的情况这个算法将不会生效。 (无法再学习这样一个线性超平面讲两种样本分开)。
当然为了保证收敛到一个最优解,显然学习率T不应该太大。
2.3多层人工神经网络
2.3.1学习ANN模型
2.3.2ANN学习中的设计问题
参考资料
深度学习预备课:神经网络