只使用一个纪元可以吗?

时间:2016-06-23 19:26:40

标签: machine-learning neural-network tensorflow

我正在TensorFlow中训练一个神经网络(使用tflearn)来生成我生成的数据。据我所知,每个时代我们都使用了所有的训练数据。由于我可以控制我有多少个例子,看起来最好只生成更多的训练数据,直到一个纪元足以训练网络。

所以我的问题是:假设我有足够的训练数据,那么仅使用一个纪元是否有任何缺点?假设一百万个例子中的一个时期优于10个10万个时期,我是否正确?

2 个答案:

答案 0 :(得分:3)

与@Prune讨论后:

假设您有可能生成无数个标记示例,从固定的基础概率分布中采样,即来自相同的流形

网络看到的示例越多,它学得越好,尤其是概括越好。理想情况下,如果你训练的时间足够长,它可以达到100%的准确率。

结论是只运行1个纪元是好的,只要这些例子是从同一个分布中采样的。

此策略的限制可能是:

  • 如果您需要存储生成的示例,则可能会耗尽内存
  • 处理不平衡的类(参见@jorgemf答案),你只需要为每个类抽取相同数量的例子。
    • e.g。如果你有两个类,有10%的机会对第一个类进行抽样,你应该创建50%/ 50%分布的批量实例
  

运行多个时代可能会让它更好地学习一些不常见的案例。

我不同意,多次使用相同的例子总是比生成新的未知示例更糟糕。但是,您可能希望随着时间的推移生成越来越难的示例,以便在不常见的情况下使您的网络更好。

答案 1 :(得分:2)

您需要培训示例才能使网络学习。通常你没有这么多的例子来使网络融合,所以你需要运行多个纪元。

如果你有很多例子并且它们相似,那么只使用一个纪元即可。如果你有100个课程,但其中一些只有很少的例子,你不会只用一个时代来学习这些课程。所以你需要平衡的课程。

此外,最好有一个随着示例数量而减少的可变学习率,因此网络可以自我调整。它以较高的学习速度开始,然后随着时间的推移而减少,如果你只运行一个纪元,你需要记住这一点来调整图形。

我的建议是运行多个纪元,主要是因为您拥有的内存越多,您需要存储的内存就越多。但是如果记忆力很好并且学习率根据例子的数量而不是时代进行调整,那么它可以运行一个时代。

编辑:我假设您使用的学习算法可以更新每批次或类似网络的权重。