文档章节

【自己动手写神经网络】小白入门连载(三)--神经元的感知

吴小编
 吴小编
发布于 2014/07/04 17:19
字数 1277
阅读 147
收藏 2

【真实原创,转载务必注明出处】

上一个连载中我们已经了解了神经元模型和其工作方式。单个神经元就可以构成一个最简单的神经网络——感知机。在单层神经元感知机中,网络接收若干过输入,并通过输入函数、传输函数给出一个网络的输出。这个网络已经可以解决苹果和香蕉的分类问题。在本系列中,将具体介绍其内部原理。

首先,我们确定感知机的输入。在此,我们引入形状和颜色两个变量,苹果的形状为圆形记为1,颜色为红色记为1;香蕉的形状为弯形记为-1,颜色为黄色记为-1。则有输入p如表3.1所示。

3.1 常用传输函数列表

P

形状

颜色

苹果

1

1

香蕉

-1 

-1 


其次可以确定传输函数f为Step函数。由于Step函数只能有1和0两种输出,故在此处,定义输出1表示苹果,输出0表示香蕉。

令权重w1=1,w2=1,b=0,则有图3.1所示的感知机,它有两个输入,并且都是1。这表示圆形,并且红色。

3.1 感知机识别苹果

此时,net=p1*w1+p2*w2+b

=1+1+0

=2

Step(net)=1

可以看到当输入苹果属性时,感知机正确输出了1,表示苹果。

同样道理当输入-1、-1的香蕉属性时,感知机反应如下:

net=p1*w1+p2*w2+b

=-1-1+0

=-2

Step(net)=0

感知机又作出了正确的判断,当遇到弯的黄色水果时,感知机判断其为香蕉。

虽然感知机在此时已经可以做出来正确的判断,但是我相信读者一定会觉得很疑惑,权值w1、w2和b究竟为什么定义为1、1、0?如果取其它值,感知机还可以正常工作吗?应该如何求出权重和偏置的取值呢?

首先,必须知道,权重和偏置的取值会直接关系到感知机能否正常工作,并不是所有的取值都可以使感知机正常工作。但所幸的是,即使弄错了权值和偏置,还可以使用一套感知机的学习规则,通过不断的迭代学习,求得可以使感知机正常工作的权值和偏置。

感知机学习规则如下:

wnew=wold+ep

bnew=bold+e

其中e表示误差,e=t-a,t为期望输出,a为实际输出。

此规则的含义是,如果感知机的输出有误,则首先计算误差e,e为期望输出和实际输出的差值。新的权值等于旧值加上误差和输入p的乘积。同理,偏置可以看做是输入p恒为1的输入信号,故新的偏置等于旧偏置加入误差。当计算机出新的权重和偏置后,使用测试数据再次测试感知机,直到没有误差或误差在可接受范围内为止。

设w1=1,w2=-1,b=0,输入苹果属性1,1。得到:

net=p1*w1+p2*w2+b

=1-1+0

=0

Step(net)=0

输出错误,存在误差,故进行修正。

e=t-a

=1-0

=1

w1new=w1old+ep

     =1+1*1

=2

w2new=w2old+ep

     =-1+1*1

=0

bnew=bold+e

=0+1

=1

使用新的权值带入感知机,重新计算苹果的属性输入。

net=p1*w1+p2*w2+b

=1*2+1*0+1

=3

Step(net)=1

纠正误差后,苹果判断正确。尝试判断香蕉。

net=p1*w1+p2*w2+b

=-1*2-1*0+1

=-1

Step(net)=0

香蕉判断也正确,误差为0,学习结束。由此可见,即使初始权值是错误的,只要按照感知机学习规则修正权值和偏置,在感知机的可判断范围内,就有可能消除误差或将误差限制在可接收范围内。

感知机的基本原理已经基本介绍完毕。下面就可以动手实现自己的感知机了。为了方便读者理解,本书使用Java来实现神经网络,并引入神经网络框架neuroph,辅助神经网络的实现。有关neuroph框架以及感知机的具体实现,将在下一章节做详细介绍。

转载请注明出处,感谢大家的支持!

本文来自优优码:http://www.uucode.net/201406/perceptron



© 著作权归作者所有

吴小编
粉丝 19
博文 69
码字总数 47867
作品 0
海淀
私信 提问
零基础入门深度学习(1) - 感知器

python深度学习大全 原文地址:https://www.zybuluo.com/hanbingtao/note/433855 深度学习是啥 在人工智能领域,有一个方法叫机器学习。在机器学习这个方法里,有一类算法叫神经网络。神经网...

luanpeng825485697
2018/01/09
0
0
资源 | 阿里发布免费深度学习课程:从感知机开始说起

  机器之心整理   参与:机器之心编辑部      在今天的 2018 云栖大会·上海峰会上,阿里巴巴发布了免费的天池深度学习课程,涵盖了神经网络基础、CNN、RNN、递归网络、强化学习以及...

机器之心
2018/06/07
0
0
神经网络入门

眼下最热门的技术,绝对是人工智能。 人工智能的底层模型是"神经网络"(neural network)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。学习人工智能,一...

阮一峰
2017/07/13
0
0
神经网络和反向传播算法——反向传播算法本质上是随机梯度下降,链式求导法则而来的

原文:https://www.zybuluo.com/hanbingtao/note/476663 写得非常好,适合入门! 神经元 神经元和感知器本质上是一样的,只不过我们说感知器的时候,它的激活函数是阶跃函数;而当我们说神经...

桃子红了呐
2017/11/09
0
0
一小时神经网络从入门到精通(放弃)

前言 本文主要是学习BP神经网络的一个总结,其本身也是机器学习中比较基础、适合入门的模型。 目前本人对于机器学习也还只是入门状态,对于很多名词仍然是一知半解(感觉机器学习中的很多术语...

imhy
2018/06/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Phpstorm2018 永久激活

1、安装phpstorm,安装包请自行官网下载 http://www.jetbrains.com/phpstorm/download/ 2、下载JetbrainsCrack.jar文件,存放至你的phpstorm执行文件同级目录下 下载JetbrainsCrack.jar 提取...

happyfish319
21分钟前
5
0
谈一谈Android进程间通信的几种方式

###来看一下Android中除了AIDL还有哪些进程间通信的方式: 1、Bundle Bundle实现了Parcelable,所以在Android中我们可以通过Intent在不同进程间传递Bundle数据。 但是在Intent 传输数据的过程...

二营长的意大利炮手
22分钟前
6
0
互联网薪资“高开低走”,你的能力是否真的可以匹配高薪?

对于国内外主流互联网大厂,技术出身似乎已经成为各大掌门人的必备标签。谷歌 CEO 桑达尔·皮查伊、马克·扎克伯格、李彦宏、马化腾、雷军等等皆为技术人出身,都曾参与了公司内部重要产品的...

Java技术剑
23分钟前
6
0
java 多线程

线程声明周期 线程的五个状态:新建,就绪,运行,阻塞,死亡。 其中就绪和运行两个状态客户互相转换,但运行到阻塞,阻塞到就绪,只能单向转换。 刚new出的线程就是【新建】状态,调用start...

雷开你的门
25分钟前
7
0
构造器Constructor是否可被overrid

构造器不能被重写,不能用static修饰构造器,只能用public private protected这三个权限修饰符,且不能有返回语句。

无名氏的程序员
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部