训练OCR的前馈神经网络

Mar*_* R. 11 ocr artificial-intelligence backpropagation neural-network feed-forward

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

我尝试了多层和更少/更多的神经元,但我似乎无法正确,现在我想知道前馈神经网络是否能够识别那么多信息.

一些统计:

网络类型:前馈神经网络

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

输出神经元:重新定位的字符数量

有谁知道我的架构中可能存在的缺陷是什么?输入神经元太多了吗?前馈神经网络不具备角色定位能力吗?

alf*_*lfa 14

对于手写字符识别,您需要

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

一个好的测试问题是手写数字数据集MNIST.以下是在此数据集上成功应用神经网络的论文:

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

Dan Claudiu Ciresan,Ueli Meier,Luca Maria Gambardella,Juergen Schmidhuber:Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition,http://arxiv.org/abs/1003.0358

我训练了一个具有784-200-50-10架构的MLP,并且在测试装置上获得了> 96%的准确度.


nit*_*tin 10

您可能希望在http://www.ml-class.org上关注第3和第4讲.吴教授解决了这个确切的问题.他正在分类10位数(0 ... 9).他在课堂上做的一些让他达到95%训练准确度的事情是:

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