王朝网络
分享
 
 
 

简单手写体数字识别系统

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

简单手写体数字识别系统

作者:陈海艺 (广西工学院 计算机系)

下载源代码

摘要

为了实现对手写字体的识别,运用了人工智能的分层神经网络思想,对识别的字体通过训练学习,达到识别手写字体的功能。

关键字VC,人工智能,神经网络,手写识别。

1 引言

1.1 编写目的

人工智能英文名表示是"Artificial Intelligence",简称

AI,也就是用计算机模拟人的思维和知识,通过对本系统的学习开发,对计算机人工智能和神经网络有了初步的认识,萌发初学者对人工智能和网络神经学习的基本方法和思路。

1.2 背景

目前市面上的语音识别系统和手写识别,指纹识别系统大都建立在人工智能的神经网络技术的基础上,神经网络技术是解决识别系统难题的适当方法。

2 必备知识

2.1 vc基础

本系统采用vc开发,所以希望读者对vc也要熟悉。

2.2神经网络

下面我们来对神经网络技术有个大体的认识,

这里说的神经网络,实质上是指人工神经网络,是模拟生物神经元的实现,神经网络又分单层神经网络(不带输入层),和多层神经网络,实验证明,神经网络的的层数多少不影响网络对实体的识别,可能有人会问,为什么还需要多层神经网络的开发呢?答案是,适当的多层结构可以使网络的训练学习进度提高,可以更快地收敛到需要的权值上,但层数越多,或者层数不多都不足以证明能够越快地收敛到需要的权值上,这里的研究不属于我们的范畴,我们这里采用的使分层前向神经网络,结构图如下(图1)

3.算法

3.1.算法思想

(1)界面方面:这里我们先来熟悉一下算法的思想,为了使程序跟用户有交流界面,我们必须提供一个给用户输入的终端,这里我们用鼠标代替手写,并绘制一个输入终端用于提取我们的输入,首先子类化一个静态控件,并给重绘重载,在里面绘制控件的背景(白色),和网格线(淡青色),通过矩阵的信息进行点的重绘,响应鼠标事件,用来绘制终端的点。

(2)神经网络:我们这里采用了10×10的网格结构,为了是算法清晰易见,所以输入采用100个输入,事实上用到的点没有那么多,用户可以根据需要更改,中间的隐层采用5个输入,因为我们只是识别数字,所以只是有10个输出就足够了,(其实不用10个输出也可以完成任务,1010就可以标识10了,可以只要四位,但是还是那句话,为了算法清晰易见),所以神经网络的结构是100:5:10.可以通过改变源代码的define来改变网络拓扑结构。

3.2 算法描述

(1)学习

设输入层为n个输入,隐层是m个输入,输出层是p个输出

1.初始化V,W,α,ε //给V,W赋初值,这里用随机值,有经验的话可以给V和W

//赋一个近似的初值,这样的话可以加快收敛速度。

// 是学习因子,可以根据学习的进度来动态改变,这里自始

//至终取0.7, 是精度系数,

2.循环学习直到误差小于精度e=(I,T) //对每一个样本取样放到集合e中 ,I代表输入样本,T代表输出样板

求a[j]=g(in[j])=g(

//求隐层的值,其中V是各个权值的向量,

//I是样板值

o[i]=g(in[i])=g(

//求输出层的值,其中W是各个隐层输入的

//权值,a[j]是输入的隐层的值

Err[i]=T[i]-O[i] (1<=i<=p) //Err是误差值

求 Δ[i]=Err[i]*g`(in[i]) (1

这里遇到一个难题是隐层的误差值怎么求,因为输出层有准确的输出值作参考,所以能够求到误差值,但是隐层没有相应的准确值。我们可以观察输出层的误差值,这个值其实蕴涵了隐层的误差值所在,经过证明可以用下面公式获取误差值。

Err[j]= //Err(1<=j<=P)是输出层的误差,这里

//利用这个误差蕴涵的信息来获取隐

//层的误差

V[k,j]=V[k,j]+ *I[k]*Err[j]*g`(in[j]) //隐层权值修正

3.返回V,W,学习完成

可能有些人不明白函数g(x)是如何选取,根据我们识别的特性来看,我们应该选择,S型函数(关于函数的类型请参阅其他书籍),考虑函数的导数在内,应该选择一个比较好导的函数。所以我们选择。

y=f(A)=1/(1+Exp(-A))

y`=f`(A)=y(1-y)

(2)实现识别

1.获取输入层的各个值 a

a[j]=g(in[j])=g(

把P改成m //求隐层的值,其中V是各个权值

//的向量,

o[i]=g(in[i])=g(

//求输出层的值,其中W是各个隐层输入的

Err[i]=(T[i]-O[i])2 /2

// 为精度,如果全局误差都小于精度就//证明输出的矩阵O是合法的。

//

ε为精度,如果全局误差都小于精度就//证明输出的矩阵O是合法的。

3.3算法实现

设输入层为n个输入,隐层是m个输入,输出层是p个输出。

*这里是一次训练的算法,程序可以根据自己需要实现。

INPUT W,V,P,A //输入权值W,V,精度P,和学习系数A

INPUT i[1],...,i[n],t[1],...,t[p] //输入和输出样板集

Step 1 Set v_sum=0. //设定累加器

Step 2 Set in_i[m],in_j[p]

Step 3 For j=1,...,m do Step 4 and Step 5,Step 7

Step 4 Set in_j[j]=0; //初始化

Step 5 For k=1,...,n do Step6 and Step7

Step 6 Set in_j[j]=a[j]+(v[k,j]*i[k]);

Step 7 Set a[j]=1/(1-Exp(-in_j[j]));

Step 8 For i=1,...,p do Step9 and Step 10,Step 12

Step 9 Set in_i[i]=0;

Step 10 For j=1,...,m do Step 11

Step 11 Set in_i[i]=in_i[i]+(w[j,i]*a[j])

Step 12 Set o[i]=1/(1-Exp(-in_i[i]);

Step 13 For i=1,...,p do Step 14

Step 14 Set Err[i]=t[i]-o[i] //误差

Step 15 For j=1,...,m do Step 16

Step 16 For i=1,...,p do Step 17

Step 17 Set w[j,i]=w[j,i]+A*a[j]*Err[i]* 1/(1-Exp(-in_j[j]))(1-1/(1-Exp(-in_j[j])));//输出层权

//值修正

Step 18 For k=1,...,n do Step 19

Step 19 For j=1,...,m do Step 20

Step 20 Set v[k,j]=v[k,j]*A*i[k]*Err[j]* 1/(1-Exp(-in_j[j]))(1-1/(1-Exp(-in_j[j])));//隐层权值

//修正

Step 21 OUTPUT (Err[1],...,Err[p])

STOP

重复训练过程来对准确权值的收敛,识别过程是学习过程的一部分,所以这里不再重复

3.4终端处理位置居中

要使识别系统能够处理同一个输入终端但是有坐标偏移的问题,要作一些坐标转换,就是先获取中点坐标,然后根据中点坐标的偏移来平移,注意,这里的平移,包括样本,和输入层的点都要作平移。具体实现请参见附件的源代码

4.实现效果

采样效果

训练后的识别效果

5.总结

通过对手写数字识别系统的开发,熟悉了人工神经网络的基本工作方式,神经网络有很多种,每一种都有自己的特点和功能,人工神经网络还可以拓展到其他领域,我国的人工智能研究起步比较迟,还需要很大的努力才能跟上其他发达国家的水平。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有