11

目前我正在学习神经网络,并试图创建一个可以训练识别手写字符的应用程序。 这个问题我使用前馈神经网络,它似乎工作时,我训练它识别1,2或3个不同的字符。但是当我尝试让网络学习超过3个字符时,它会停滞在40-60%左右的错误百分比。OCR的训练前馈神经网络

我尝试了多层次,更少/更多数量的神经元,但我似乎无法得到它的权利,现在我想知道如果一个前馈神经网络能够识别这么多的信息。

一些统计数据:

网络类型:前馈神经网络。

输入神经元: 100(10 * 10)网格用于绘制人物

输出神经元:字符量regocnize

没有人知道什么是可能的缺陷在我的架构是?有太多输入神经元吗?前馈神经网络不能进行字符分配吗?

在此先感谢。

+1

您使用了多少个隐藏的神经元? – mbatchkarov 2012-03-13 12:49:37

+0

输入和输出神经元似乎对你的任务很好,但你如何训练你的网络,你使用什么算法?你如何初始化权重? – maximdim 2012-03-13 12:53:32

+0

我尝试使用backpopagation和遗传算法。我还试着用一个70神经元的隐藏层和一个隐藏层(70和40)的神经元。 – 2012-03-13 12:55:59

回答

12

对于手写字符识别需要

  1. 许多训练实例(也许你应该创建你的训练集的扭曲)输出层
  2. SOFTMAX激活功能
  3. 交叉熵误差函数
  4. 随机训练梯度下降
  5. 每层偏差

一个很好的测试问题是手写数字数据集MNIST。以下是论文,在这个数据集成功地应用于神经网络:

Y. LeCun,L. Bottou,Y. Bengio和P.哈夫纳:基于梯度学习应用于文档识别,http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

丹克劳迪乌Ciresan ,Ueli Meier,Luca Maria Gambardella,Juergen Schmidhuber:手写数字识别的深大简单神经网络Excel,http://arxiv.org/abs/1003.0358

我训练了一个采用784-200-50-10架构的MLP,并且在测试集上获得了> 96%的准确度。

10

您可能想要按照讲座3和4在http://www.ml-class.org。吴教授解决了这个问题。他正在分类10个数字(0 ... 9)。一些认为他在得到他的95%的训练精度类做的事情是:

  • 输入Nueron:400(20×20)
    • 隐藏图层:2
    • 隐藏层的大小: 25
    • 激活函数:乙状结肠
    • 训练方法:梯度下降
    • 数据大小:5000
+0

-1表示无效链接。 – jpjacobs 2012-03-14 21:16:22

+0

对不起,没有链接..正确的链接是http://www.ml-class.org。班级由斯坦福大学提供。 – nitin 2012-03-14 21:25:10

+1

upvoted相应;) – jpjacobs 2012-03-14 21:47:19

1

我前一段时间也有类似的问题,试图找出使用MNIST数据集手写的数字。我的前馈神经网络在验证集上给出了大约92%的精确度,但经常对我给它的图像进行错误分类。

我通过在我的网络中添加一个隐藏层并使用RMSProp解决了这个问题。网络现在提供了大约97%的准确度,并正确分类我给它的图像。此外,如果你的成本没有下降,这可能意味着你的纳税率太高,或者你的网络可能停留在当地最低标准。在这种情况下,您可以尝试降低您的学习率和初始权重。