加载中…
个人资料
天若有情scga
天若有情scga
  • 博客等级:
  • 博客积分:0
  • 博客访问:408,149
  • 关注人气:77
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

神经网络入门 第一部分

(2011-09-28 19:00:03)
标签:

杂谈

分类: 算法
【翻译】AI:神经网络入门 第一部分
2008-11-14 14:50

英文原文链接:http://www.codeproject.com/KB/recipes/NeuralNetwork_1.aspx

作者Sacha Barber

翻译本站http://hi.baidu.com/ebfok原创

说明:翻译力求保持原貌,删去了一些无关紧要的内容;水平有限,错误难免;转载请注明出处。

-------------------------------------------------------------------------------------

说明

本文是我发表的三篇文章之一。内容如下:

  1. 第一部分:介绍感知器(单层神经网络)
  2. 第二部分:介绍多层神经网络,使用反向传播训练方法来解决一个非线性分类问题,即XOR逻辑门问题。这类问题是不能用感知器解决的
  3. 第三部分:介绍使用遗传算法来训练一个多层神经网络,解决某些逻辑问题

从一些生物知识说起

大脑中的神经细胞被称为神经元。人类大脑中大约含有10^1010^13个神经元。每个神经元都能与其他几千个神经元联系起来。神经元是大脑用来处理信息的基本单元。

神经元是什么样子

神经元由细胞体以及从细胞体中延伸出来的各种扩展物组成。其中大部分呈枝状被称为树突。有一根特别长的叫做轴突。图中的虚线处就是轴突小丘,也就是信号传输开始的地方。如下图所示

神经网络入门 <wbr>第一部分

 

图一 神经元

细胞的外部是细胞膜。膜的内部和外部之间存在电势差(膜电位)。

如果输入足够大,就会产生一个动作电位。接着,这个动作电位(神经冲动)沿着轴突离开细胞体。

神经网络入门 <wbr>第一部分

 

图二 神经冲动

突触

两个神经元相互联接的部位称为突触。信息总是经由轴突(见图一)离开一个神经元,然后越过突触到达接收神经元。

神经元激活

神经元只有在输入大于某一阈值时才会激活。It should, however, be noted that firing doesn't get bigger as the stimulus increases, its an all or nothing arrangement.

神经网络入门 <wbr>第一部分

 

 

图三 神经元激活

神经元通过脉冲信号来通信。发送的信息是以来编码的。

神经元的输入

突触分为兴奋性的和抑制性的。

到达兴奋性突触的脉冲信号往往激活接收神经元。到达抑制性突触的脉冲信号则往往抑制接收神经元。

 

细胞体和突触计算(通过一个复杂的化学/电过程)接收的的兴奋性输入和抑制性输入(时空总和)之间的差值。

当这一差值足够大(相对于该神经元的阈值)时,神经元就激活了。

粗略地说,兴奋性脉冲越快到达突触,神经元就激活得越快(抑制性脉冲相类似)。

什么是人工神经网络

假设每个神经元都有一个激活率。也假设一个神经元与其他m个神经元联接起来,所以接受m个输入"x1 …. … xm",如下图所示:

神经网络入门 <wbr>第一部分

 

图四 人工神经元的结构

该结构实际上被称为感知器。感知器(由Rosenblatt [1962]发明)是最早的人工神经网络模型。感知器对单个神经元建模,如果输入的加权和大于某个可调整的阈值就输出1(否则输出0,此即上文提到的生物脉冲)。

图四中,输入信号(x1,x2,x3..xm)和联接权值(w1,w2,w3..wm)通常是实数值,可正可负。若xi趋向于使感知器激活,则权值wi为正值,反之为负值。

感知器本身由权值,加法器,激活函数以及可调阈值(以下称 偏置)组成。

通常为了方便起见,将偏置也作为一个输入信号,如下图所示

神经网络入门 <wbr>第一部分

 

图五 将偏置作为附加输入的人工神经元结构

偏置可以被看作是感知器的与其输入无关的激活倾向。图五所示的感知器将被激活,如果加权和>0

 

神经网络入门 <wbr>第一部分

激活函数

通常采用以下激活函数。

Sigmoid函数(S函数)

输入越强,神经元激活得越快(激活率越高)。Sigmoid函数在多层网络中同样十分有用,因为S曲线是可微分的(这在多层网络的反向传播训练中是必要的)。

神经网络入门 <wbr>第一部分

神经网络入门 <wbr>第一部分

 

 

阶跃函数

是一个开关函数,  0 > x  0,  x >= 0  1

神经网络入门 <wbr>第一部分

神经网络入门 <wbr>第一部分

 

学习

在开始讨论感知器的学习前先来考虑一个实际生活中的例子:

你是怎么教小孩识别椅子的?你给他看实物,告诉他,“这是椅子,那不是椅子”,直到他学会了椅子的概念。在这一阶段,当被问及“那东西是椅子吗?”,小孩能给出正确的答案。

只要给让孩子接触足够多的正的反的例子训练,那么当他看到一个以前从未见过的新东西时就能正确的识别了。

这就是感知器背后的思想。

感知器学习

感知器的学习就是修改权值和偏置的过程。感知器计算其输入的二值函数。

“感知器是一种能学习概念的程序,即,通过重复地‘学习’提交的例子,它就能对我们提呈的例子做出响应,1或者0

感知器是是单层神经网络,其权值和偏置能被训练,当输入一个向量,就能得到一个相应的正确的目标向量。用来训练的技术称为感知器学习规则。感知器工作在随机分布的联接之上,具有泛化能力,特别适用于简单的模式分类问题”——英国Warwick大学,科学计算中心,Jianfeng feng教授。

学习规则

训练感知器,对每一个输入向量做出响应,输出01.当解存在时,该学习规则被证明是能在有限时间内收敛到某个解的。

b = b + [ T - A ]

W(i) = W(i) + [ T - A ] * P(i)


式中, W 是权值向量, P输入向量, T是期望输出, A 是实际输出, b是偏置.

训练

训练集中的向量是一个接一个的提交到感知器的.

若感知器的输出是正确的则不做改变.

否则,权值和偏置按上面的学习规则进行更新。当每个epoch(所有输入向量的一次完整遍历称为一个epoch)都没有误差,训练就结束。

此时,对训练集中的每个向量,感知器都能得到正确的输出向量。如果输入一个不在训练集中的向量P感知器将输出这样一个向量,该向量与训练集中类似P的那个向量的输出向量相似,即表现出一定的泛化能力。

神经网络能做什么

单层神经网络

单层神经网络(感知器网络)的输出单元是相互独立的-每个权值仅影响一个输出。感知器网络能用来解决线性分类问题。函数如下图所示(假设网络有2个输入一个输出)

神经网络入门 <wbr>第一部分

 

这等价于 AND / OR 逻辑门, 如下图所示。

神经网络入门 <wbr>第一部分

图六 分类问题

这就是一个关于感知器能做什么的简单例子,但是若把几个感知器连起来会怎么样呢?那样就能得到一些十分复杂的功能。最基本的,能建造一个电路的等价物。

然而感知器确实有许多限制。如果向量不是线性可分的,学习将不会收敛,即不能合适地分类向量。感知器不能解决线性不可分的最著名的例子是XOR问题。

多层神经网络

使用多层神经网络就能解决类似上面的XOR问题的线性不可分问题。后面将会提到使用反向传播算法解决XOR问题。

转载:http://hi.baidu.com/ebfok/blog/item/730cbbdee2f1ae5394ee3787.html

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有