代码之家  ›  专栏  ›  技术社区  ›  lmsasu

用于ocr的多层感知器[闭合]

  •  2
  • lmsasu  · 技术社区  · 16 年前

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

    1. 我应该使用哪种类型的学习:批量学习还是在线学习?
    2. 如何估计隐藏层中的正确节点数?我打算处理英文字母表中的26个字母。
    3. 我如何才能停止训练过程,以避免过度健身?
    4. (不太相关)有没有比mlp更好的nn-prved?我知道mlp在局部极小值、过拟合等方面的缺陷,那么是否有更好的(基于软计算的)方法呢?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  5
  •   Kevin Crowell    16 年前

    这些问题中的大多数都是你需要尝试不同的选择,看看什么最有效。这就是ann的问题。几乎没有什么“最好”的方法。你需要找出什么能解决你的具体问题。不过,我会对你的问题提出建议。

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

    2)这个问题很难回答。这真的取决于你的网络的复杂性。有多少个输入节点、输出节点和训练模式。对于您的问题,我可以从100开始,尝试从100开始上下浮动,看看是否有改进。

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

    4)如果将输出表示为26个节点,每个节点表示字母表中的一个字母,也可以尝试使用概率神经网络。这种网络结构对分类问题很有帮助。同样,尝试一些不同的架构来看看什么最适合您的问题可能是一个好主意。

        2
  •  2
  •   JoeCool    15 年前

    关于第3个问题,一个找出你的神经网络何时开始过度拟合的方法是在你的训练数据和你的测试数据上描绘出网络的准确性与执行的时间段数的关系。在某种程度上,随着你的训练精度不断提高(接近100%),你的测试精度可能会开始真正地 减少 因为神经网络对训练数据的拟合度过高。看看什么时代开始发生,确保不要训练过去。

    如果你的数据是 非常 经常性和一致性,那么它可能不会过度适合,直到游戏很晚,或根本没有。如果你的数据是高度不规则的,那么你的神经网络会很早开始过度拟合。

    另外,测试数据规则性的一种方法是 k-fold cross validation .