当前位置:文档之家› 人工神经网络算法

人工神经网络算法

/s/blog_5bbd6ec00100b5nk.html人工神经网络算法(2008-11-20 17:24:22)标签:杂谈人工神经网络算法的作用机理还是比较难理解,现在以一个例子来说明其原理。

这个例子是关于人的识别技术的,在门禁系统,逃犯识别,各种验证码破译,银行预留印鉴签名比对,机器人设计等领域都有比较好的应用前景,当然也可以用来做客户数据的挖掘工作,比如建立一个能筛选满足某种要求的客户群的模型。

机器识别人和我们人类识别人的机理大体相似,看到一个人也就是识别对象以后,我们首先提取其关键的外部特征比如身高,体形,面部特征,声音等等。

根据这些信息大脑迅速在内部寻找相关的记忆区间,有这个人的信息的话,这个人就是熟人,否则就是陌生人。

人工神经网络就是这种机理。

假设上图中X(1)代表我们为电脑输入的人的面部特征,X(2)代表人的身高特征X(3)代表人的体形特征X(4)代表人的声音特征W(1)W(2)W(3)W(4)分别代表四种特征的链接权重,这个权重非常重要,也是人工神经网络起作用的核心变量。

现在我们随便找一个人阿猫站在电脑面前,电脑根据预设变量提取这个人的信息,阿猫面部怎么样,身高多少,体形胖瘦,声音有什么特征,链接权重初始值是随机的,假设每一个W均是0.25,这时候电脑按这个公式自动计算,Y=X(1)*W(1)+X(2)*W(2)+X(3)*W(3)+X(4)*W(4)得出一个结果Y,这个Y要和一个门槛值(设为Q)进行比较,如果Y>Q,那么电脑就判定这个人是阿猫,否则判定不是阿猫.由于第一次计算电脑没有经验,所以结果是随机的.一般我们设定是正确的,因为我们输入的就是阿猫的身体数据啊.现在还是阿猫站在电脑面前,不过阿猫怕被电脑认出来,所以换了一件衣服,这个行为会影响阿猫的体形,也就是X(3)变了,那么最后计算的Y值也就变了,它和Q比较的结果随即发生变化,这时候电脑的判断失误,它的结论是这个人不是阿猫.但是我们告诉它这个人就是阿猫,电脑就会追溯自己的判断过程,到底是哪一步出错了,结果发现原来阿猫体形X(3)这个体征的变化导致了其判断失误,很显然,体形X(3)欺骗了它,这个属性在人的识别中不是那么重要,电脑自动修改其权重W(3),第一次我对你是0.25的相信,现在我降低信任值,我0.10的相信你.修改了这个权重就意味着电脑通过学习认为体形在判断一个人是否是自己认识的人的时候并不是那么重要.这就是机器学习的一个循环.我们可以要求阿猫再穿一双高跟皮鞋改变一下身高这个属性,让电脑再一次进行学习,通过变换所有可能变换的外部特征,轮换让电脑学习记忆,它就会记住阿猫这个人比较关键的特征,也就是没有经过修改的特征.也就是电脑通过学习会总结出识别阿猫甚至任何一个人所依赖的关键特征.经过阿猫的训练电脑,电脑已经非常聪明了,这时你在让阿猫换身衣服或者换双鞋站在电脑前面,电脑都可以迅速的判断这个人就是阿猫.因为电脑已经不主要依据这些特征识别人了,通过改变衣服,身高骗不了它.当然,有时候如果电脑赖以判断的阿猫关键特征发生变化,它也会判断失误.我们就不要要求这么高了,不要说电脑,就是人类也无能为力,你的一个好朋友你经过多次的识记肯定认识吧,但是他整了容你们在大街上邂逅.你可能觉得这个人声音好熟悉,体形好熟悉,----都像自己一个朋友,就是脸长的不像.你不敢贸然上去搭讪吧(否定的判断).因为我们判定一个人是否是自己的朋友的时候依靠的关键的特征就是面部特征,而他恰恰就是改变了这一特征.当然也存在我们把一个拥有和我们朋友足够多相似特征的人判定为我们的朋友,这就是认错人的现象了.这些问题电脑也会出现.不过这个算法还是有比较积极的意义的,实现了一定程度上的智能化.下面是这种方法的理论解释:人工神经网路学习是要透过我们的头脑,因而研究大脑神经细胞的运作,可以帮助我们了解学习在脑神经是如何完成的,进而可以模拟神经细胞的运作以达到類似学习的功能。

据估计人脑约有一千亿(1011)个神经细胞,每个神经细胞约有一千(103)根連结与其它神经细胞相連,因此人脑中约有一百万亿(1014)根連结,形成一个高度連结网狀的神经网路(neural network)。

科学家们相信:人脑的信息处理工作即是透过这些連结來完成的 [葉怡成1993]。

神经细胞的形狀与一般的细胞有很大的不同,它包括:细胞体(soma):神经细胞中呈核狀的处理机构;轴突(axon):神经细胞中呈轴索狀的输送机构;树狀突(dendrites):神经细胞中呈树枝狀的输出入机构;与突触(synapse):树狀突上呈点狀的連结机构。

根据神经学家的研究发现:当神经细胞透过神经突触与树狀突从其它神经元输入脉波讯号后,经过细胞体处理,产生一个新的脉波讯号。

如果脉波讯号够强,将产生一个约千分之一秒100 毫伏的脉波讯号。

这个讯号再经过轴突传送到它的神经突触,成为其它神经细胞的输入脉波讯号。

如果脉波讯号是经过兴奋神经突触(excitatory synapse),则会增加脉波讯号的速率;相反的,如果脉波讯号是经过抑制神经突触(inhibitory synapse),则会减少脉波讯号的速率。

因此,脉波讯号的速率是同时取决于输入脉波讯号的速率,以及神经突触的强度。

而神经突触的强度可视为神经网路储存信息之所在,神经网路的学习即在调整神经突触的强度。

類神经网路(artificial neural networks),或译为人工神经网路,则是指模仿生物神经网路的信息处理系统,它是由许多人工神经细胞(又称为類神经元、人工神经元、与处理单元)所组成,人工神经细胞,如图15-18 所示。

本节将探讨最古老、也是最基本的類神经网路模式——感知机(perceptron),它是1957 年由Rosenblatt 所提出。

感知机的基本原理是由脑神经模型所启发,特别是1943 年McCulloch 和Pitts 所共同提出的數学模型,通称为MP 模型,以及Hebb 所提出的神经元学习规则,通称为Hebb 学习规则。

MP 模型的要点如下:(1) 神经元的狀态为兴奋或抑制二者之一,可用0 表示抑制狀态,用1 表示兴奋狀态。

(2) 神经元与其它神经元间的連结,可用一个加权值(weight)表示連结强度。

(3) 神经元的狀态会经由連结输出到其它神经元,成为其输入。

(4) 神经元的狀态受其相連的神经元制约,当从这些神经元传來的输入讯号(即该神经元的狀态)经过連结以加权乘积和计算所得的值大于某门坎值(threshold)时,神经元的狀态将成为兴奋狀态;否则,为抑制狀态。

以公式表示为:其中,Wij为神经元i与神经元j间的連结强度,即連结加权值,Xi为从神经元i传來的输入讯号,θj为神经元j的门坎值,f为转换函數(transfer function),通常为一个阶梯函數(step function),其定义如下:(5) 神经网路的学习过程即在调整神经元间的連结强度,即連结加权值。

而Hebb学习规则的要点如下:调整兩个神经元间連结加权值的原则为当第i个与第j个神经元同时处于兴奋狀态时,则其連结应当加强。

Hebb 学习规则与动物行为科学中的条件反射学說一致。

感知机的网路架构有兩种,如图15-19 所示,一含有隐藏层,另一种则无。

它们皆包括有输入层与输出层。

输入层用以表现网路的输入变數,其处理单元數目依问题而定,使用线性转换函數f (X ) = X,亦即输入值即为输出值。

隐藏层用以表现输入处理单元间的交互影响,其处理单元數目通常以实验方式决定其最佳數目,隐藏层可以有一层以上,也可以没有。

输出层用以表现网路的输出变數,其处理单元的數目依问题而定。

输入变數形成一个输入向量,输出变數形成一个输出向量。

图15-19 感知机网路架构我们以简单的无隐藏层的感知机來說明類神经网路的学习机制。

在神经网路的学习中,样本资料以數值形式表示,每一个样本都包含有输入向量X = [X1, X2, …,Xn] 和目标输出向量T = [T1, T2, …, Tm]。

一般将所有的样本资料随机分为兩部分,一部分为训練样本(training samples),另一部分为测试样本(test samples)。

首先,将感知机初始化,即给定每一个連结一个随机亂數值。

然后将一个训練样本的输入向量X输入感知机中,并利用公式 (15-6.1) 和 (15-6.2) 计算其推論输出向量Y= [Y1, Y2, …, Ym]。

此网路利用由训練样本输入之目标输出向量T和透过网路推得的推論输出向量Y相较之下的误差,作为修正連结中的加权值的依据,以从训練样本中学习隐含的输入向量与输出向量之对应关系。

差距量δj计算公式如下:δj=T j-Y j (15-6.4)若δj > 0,表示推論输出变數Y j小于目标输出变數T j,根据公式 (15-6.2) 得知連结加权值W ij太小,故应增加W ij的值。

相反的,若δj < 0,表示推論输出变數Y j大于目标输出变數T j,根据公式 (15-6.2) 得知連结加权值W ij太大,故应减少W ij的值。

加权值之改变量公式可表达如下:△W ij=ηδXi (15-6.5)其中,η为学习速率(learning rate),控制每次加权值改变量的幅度。

公式 (15-6.5)中,加权值之改变量也应与输入讯号Xi成正比,因为讯号越大,其修正量也应越大。

同理,输出单元的门坎值改变量公式计算如下:△θj=-ηδj (15-6.6)類神经网路的学习过程,通常以一次一个训練样本的方式进行,直到学习完所有的训練样本为止,称为一个学习循环(learning cycle)。

加权值与门坎值的修正可采用逐步学习(step learning)或批次学习(batch learning),逐步学习是每输入一个训練样本,计算其加权值与门坎值的修正量后立即修改。

而批次学习是在一个学习循环后,计算所有训練样本的加权值与门坎值的修正量后,依下列公式计算其整体修正量而修改之。

其中,m表示第m个样本,而N为训練样本总數。

一个网路可以将训練样本反复学习多个循环,直到满足终止条件为止。

而终止条件可订为执行一定數目的学习循环或是网路已收敛(即误差不再有明显变化)。

感知机的误差程度可用总错误率E定义如下:学习过程:1. 设定网路參數。

2. 以均布随机亂數设定加权值矩阵W,与偏权值向量初始值。

3. 输入一个训練样本的输入向量X与目标输出向量T。

4. 计算推論输出向量Y。

5. 计算差距量δ。

6. 计算加权值矩阵修正量ΔW,以及偏权值向量修正量Δθ。

7. 更新加权值矩阵W,以及偏权值向量θ。

8. 重复步骤3 至步骤7 直至到收敛或执行一定數目的学习循环。

回想过程:1. 设定网路參數。

相关主题