用于OCR的多层感知器

时间:2009-03-28 19:01:43

标签: nlp ocr backpropagation neural-network

我打算使用通过反向传播训练的多层感知器网络(一个隐藏层,输入用作包含来自图像的B / W像素的8×8位矩阵)。出现以下问题:

  1. 我应该使用哪种学习方式:批量还是在线?
  2. 我如何估计隐藏层中正确的节点数?我打算处理26个英文字母。
  3. 我怎么能停止训练过程,以避免过度拟合?
  4. (不太相关)是否有另外一个更好的NN被认为比MLP表现更好?我知道MLP卡在局部最小值,过度拟合等等,所以有更好的(基于软计算的)方法吗?
  5. 由于

2 个答案:

答案 0 :(得分:5)

这些问题中的大部分都是您需要尝试不同选项以查看效果最佳的问题。这就是人工神经网络的问题。没有“最佳”方式可以做任何事情。您需要找出适合您特定问题的方法。不过,我会就你的问题提出建议。

1)我更喜欢渐进式学习。我认为在每个模式之后更新网络权重非常重要。

2)这是一个棘手的问题。这实际上取决于您的网络的复杂性。有多少输入节点,输出节点和训练模式。对于你的问题,我可以从100开始,尝试从100上下调整范围,看看是否有改进。

3)我通常在每个纪元后应用于测试集(不是训练集)时计算网络的总误差。如果该错误增加了大约5个时期,我将停止训练,然后使用在增加发生之前创建的网络。在决定停止训练时,不要使用训练集的错误。这将导致过度拟合。

4)如果您将输出表示为26个节点,每个节点代表一个字母表,您也可以尝试使用概率神经网络。这种网络架构有利于分类问题。同样,尝试一些不同的体系结构来查看最适合您的问题的方法可能是一个好主意。

答案 1 :(得分:2)

关于数字3,找出你的人工神经网络开始过度拟合的一种方法是通过绘制你的训练数据和测试数据的网络准确性与执行的时期数量的关系图。在某些时候,随着您的训练精度继续提高(趋向于100%),您的测试精度可能会开始实际减少,因为ANN过度拟合训练数据。看看什么时候开始发生,并确保不要过去训练。

如果您的数据非常经常且一致,那么它可能不会在游戏的最后阶段过度拟合,或者根本不过度。如果您的数据非常不规则,那么您的ANN将会更早地开始过度拟合。

此外,测试数据规则的方法是执行k-fold cross validation

之类的操作