Pe.潘义 发表于 2012-12-13 21:26:26

BP神经网络理论

BP神经网络理论

<div class="postText"><div id="cnblogs_post_body">科普:神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。人工神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。

单个神经元(理解神经网络第一步):

http://pic002.cnblogs.com/images/2012/421560/2012062823130355.png

[*]a1~an为输入向量的各个分量
[*]w1~wn为神经元各个突触的权值
[*]b为偏置(bias),或者称之为阈值(threshold)
[*]f为传递函数,通常为非线性函数。一般有traingd(),tansig(),hardlim()。以下默认为hardlim()
[*]t为神经元输出
数学表示

http://pic002.cnblogs.com/images/2012/421560/2012062823163456.png

[*]向量W为权向量
[*]向量A为输入向量,做内积需要用到转置
[*]b为偏置(bias),或者称之为阈值(threshold)
[*]f为传递函数,也即激励函数
http://pic002.cnblogs.com/images/2012/421560/2012062823301739.png
带有 sigma 函数(顶部)和 cutoff 函数(底部)
可见,一个神经元的功能是求得输入向量与权向量的内积后,经一个非线性传递函数得到一个标量结果。
单个神经元的作用:把一个n维向量空间用一个超平面分割成两部分(称之为判断边界),给定一个输入向量,神经元可以判断出这个向量位于超平面的哪一边。(SVM也即是做的这部分工作,所以说,当单个神经元的时候,BP神经网络做的工作与SVM类似。该超平面的方程:WXT + b = 0)

[*]向量W为权向量
[*]向量X为输入向量
[*]b为偏置(bias),或者称之为阈值(threshold)
首先解释一下单个神经元如何进行分类判断:
引入一个阈值逻辑单元(Threshold Logic Unit,TLU)的名词,它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了某个阈值,输出一个量。

让我们用符号标注这些功能,首先,有输入值以及它们的权系数:X 1, X 2, ..., X n和 W 1, W 2, ..., W n。接着是求和计算出的 X i*W i ,产生了激发层 a,换一种方法表示:
a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn)
阈值称为 theta。最后,输出结果 y。当 a >=theta 时 y=1,反之 y=0。请注意输出可以是连续的,因为它也可以由一个 squash 函数 s(或 sigma)判定,该函数的自变量是 a,函数值在 0 和 1 之间,y=s(a)。
  假设一个 TLU 有两个输入值,它们的权系数等于 1,theta 值等于 1.5。当这个 TLU 输入 <0,0>、<0,1>、<1,0> 和 <1,1> 时,它的输出分别为 0、0、0、1。TLU 将这些输入分为两组:0 组和 1 组。就像懂得逻辑连接(布尔运算 AND)的人脑可以类似地将逻辑连接的句子分类那样,TLU 也懂得一点逻辑连接之类的东西。
神经网络的学习是模仿大脑调节神经网络连接的原理。TLU通过改变它的权值以及阈值来进行学习。回想上面,我们看到SUM()>=theta时候,TLU在临界点是输出的是1而不是0,这就相当于当SUM(Wi * Xi)+(-1 * theta) >= 0的时候。这时候,我们把-1当做是一个常量输入,而他的权系数theta θ在学习过程(或者说是训练过程)中进行调整。这样,当 SUM(X i* W i)+ (-1 * theta) >= 0 时,y=1,反之 y=0。
在培训过程中,神经网络输入:

[*]一系列需要分类的术语示例X(input)
[*]它们的正确分类或者目标Target
这样的输入可以看成一个向量:<X 1, X 2, ..., X n, theta, t>,这里 t 是一个目标或者正确分类。神经网络用这些来调整权系数,其目的使培训中的目标与其分类相匹配。因为神经网络是有指导的培训。或许你现在会问,神经网络是如何通过“调整权系数”来进行学习的?也即神经网络的学习规则。下面介绍一下:权系数的调整有一个学习规则,一个理想化的学习算法如下所示:
<div class="cnblogs_Highlighter" style="border: 1px solid #cccccc; color: #000000; text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: #f8f8f8; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">理想化的学习算法 fully_trained = FALSEDO UNTIL (fully_trained):    fully_trained = TRUE    FOR EACH training_vector = <X1, X2, ..., Xn, theta, target>::                               # Weights compared to theta      a = (X1 * W1)+(X2 * W2)+...+(Xn * Wn) - theta      y = sigma(a)      IF y != target:            fully_trained = FALSE      FOR EACH Wi:      MODIFY_WEIGHT(Wi)      # According to the training rule    IF (fully_trained):      BREAK
页: [1]
查看完整版本: BP神经网络理论