【问题标题】:Multi layer perceptron for OCR [closed]用于 OCR 的多层感知器 [关闭]
【发布时间】:2009-03-28 19:01:42
【问题描述】:
我打算使用经过反向传播训练的多层感知器网络(一个隐藏层,输入作为 8x8 位矩阵,包含图像中的黑白像素)。出现以下问题:
- 我应该使用哪种类型的学习:批量学习还是在线学习?
- 如何估计隐藏层中的正确节点数?我打算处理英文字母的26个字母。
- 如何停止训练过程以避免过度拟合?
- (不太相关)是否有另一个更好的 NN 被证明比 MLP 表现更好?我知道 MLP 会陷入局部最小值、过度拟合等问题,那么是否有更好的(基于软计算的)方法?
谢谢
【问题讨论】:
标签:
nlp
ocr
backpropagation
neural-network
【解决方案1】:
这些问题中的大多数是您需要尝试不同的选项以查看最有效的问题。这就是人工神经网络的问题。几乎没有“最好”的方式来做任何事情。您需要找出对您的特定问题有效的方法。不过,对于您的问题,我会给出我的建议。
1) 我更喜欢渐进式学习。我认为在每个模式之后更新网络权重很重要。
2) 这是一个棘手的问题。这实际上取决于您的网络的复杂性。有多少输入节点、输出节点和训练模式。对于您的问题,我可能会从 100 开始,然后尝试从 100 上下范围,看看是否有改进。
3) 我通常在每个 epoch 之后计算网络在应用于测试集(而不是训练集)时的总误差。如果该误差增加了大约 5 个 epoch,我将停止训练,然后使用在增加之前创建的网络。在决定停止训练时不要使用训练集的误差,这一点很重要。这就是导致过拟合的原因。
4) 如果您将输出表示为 26 个节点,每个节点代表字母表中的一个字母,您也可以尝试使用概率神经网络。这种网络架构适用于分类问题。同样,最好尝试几种不同的架构,看看哪种架构最适合您的问题。
【解决方案2】:
关于第 3 点,找出 ANN 何时开始过度拟合的一种方法是绘制网络在训练数据和测试数据上的准确度与执行的 epoch 数的关系图。在某些时候,随着您的训练准确度继续提高(趋向 100%),您的测试准确度实际上可能会开始降低,因为 ANN 对训练数据过度拟合。查看开始发生的时期,并确保不要训练超过那个时期。
如果您的数据非常规律且一致,那么它可能直到游戏的最后阶段才过拟合,或者根本不会过拟合。如果您的数据非常不规则,那么您的 ANN 将更早开始过度拟合。
另外,测试数据的规律性的一种方法是执行k-fold cross validation 之类的操作。