【问题标题】:How to tell tell that my self-play Neural Network is overfitting如何判断我的自我游戏神经网络过度拟合
【发布时间】:2023-03-03 03:06:01
【问题描述】:

我有一个神经网络,旨在玩 Connect 4,它衡量游戏状态对玩家 1 或玩家 2 的价值。

为了训练它,我让它与自己对战n 场次。

我发现,尽管每 100 场比赛的均方平均值在 100,000 轮中不断提高,但 1000 场比赛比 100,000 场比赛的游戏效果更好。

(我通过在http://riddles.io挑战排名第一的玩家来确定这一点)

因此我得出的结论是发生了过度拟合。

考虑到自我博弈,您如何成功地衡量/确定/估计是否发生过拟合?即,如何确定何时停止自玩?

【问题讨论】:

    标签: neural-network reinforcement-learning temporal-difference


    【解决方案1】:

    我对强化学习不是很熟悉,我更像是一个监督学习的人。 话虽如此,我觉得您的选择永远不会与监督学习相同。

    您需要找到在训练空间之外(同样是有损)在 Inputs 上的表现(我使用该术语时会丢失), 开始减少。 发生这种情况时,您将终止培训。 您需要提前停止。

    对于有监督的学习,这将通过保留开发集来完成。 作为一个测试集的模仿。

    在您的情况下,很明显这会让您的机器人扮演一群真实的人——这是对测试集的完美模仿。
    这正是你所做的。

    缺点是对真人的比赛很慢。
    你可以做的部分抵消这一点,而不是暂停训练来做这个测试, 拍摄您的网络的快照,例如每 500 次迭代, 并在一个单独的过程中作为机器人启动它,并在网络仍在训练时对其进行测试并记录分数。 但是,在这种情况下,这并没有真正的帮助,因为我认为即使是 1 次试玩游戏所花费的时间也比运行 500 次训练迭代所花费的时间要长得多。 如果你的收敛速度不快,这仍然适用。

    我认为,因为这个问题很简单,所以这是为了学习目的。
    在此基础上,您可以伪造真人。
    Connect4 是一款游戏空间足够小的游戏,经典的游戏玩法 AI 应该可以做到近乎完美。
    因此,您可以设置一个使用 Alpha-beta 剪枝极小极大值的机器人(作为其开发集等效项)。

    针对 100 次左右的迭代器运行游戏,如果您的相对分数开始下降,您就知道您已经过度拟合。

    您可以做的另一件事是首先降低过度拟合的可能性。这不会帮助你检测到它,但如果你让它变得足够难让它过拟合,你可以在一定程度上假设它不是。 所以 L1/L2 重量惩罚。退出。更小的隐藏层尺寸。

    您还可以增加等效的训练集。 除了纯粹的自我游戏,您还可以与其他机器人对战, 甚至可能使用不同的超参数设置自身的其他版本。

    【讨论】:

    • 与真人对战有点麻烦,由于托管他们的系统,也无法与对手机器人对战。我不确定 alpha beta pruning 如何帮助我制作对手机器人,我将如何评估每一步?我使用 NN 的原因是确定移动值。
    • 归根结底,我认为没有任何方法可以在不检查训练集之外的球员的表现的情况下真正检测过拟合。可能存在与 L1/L2 正则化相同的逻辑,即如果权重大于某个错误,您认为您已经过拟合,但我不知道。同样,一旦您的损失相对改善下降到相对较高的阈值以下,可能会有一种方法停止,因为早期的简单改善可能是通用的。
    • 公平点。 WRT alpha-beta 修剪。如果你无法找到一个像样的启发式,甚至比你的机器人有更多的深度(ply)。然后你会失去进行修剪的能力,并且必须评估完整的极小值。方便的是,游戏足够小,我认为你实际上可以在现代计算机上做到这一点,尽管我猜你需要预先计算残局书籍和一些其他类似的技巧(en.wikipedia.org/wiki/Connect_Four#Mathematical_solution),我可能会离开,它只有 4 *10^12 个板状态。感觉不会太多。
    • 一般来说,我认为您可以从任何地方(例如当前的训练机器人)获取“Dev-set”机器人的启发式算法,并且只需比您的训练机器人允许的深度多几步;不?或者这就是在自我游戏中进行训练的方式?
    • 我不清楚如何让我的过拟合测试机器人进行更深层次的搜索来防止过拟合。我实际上是在对照自己衡量自己,不是吗?
    【解决方案2】:

    与其测量/检测何时开始发生过拟合,不如采取措施防止它发生更容易。这样做的两个想法:

    1. 与其总是让代理与自己对战,不如让代理与从大量旧版本自身中随机选择的代理对战。这个想法在精神上与 Lyndon 对人类和/或 alpha-beta 搜索引擎进行测试的想法有些相似(并且与他在答案最后一段中的想法非常相似)。但是,这里的目标不是测试和找出性能何时开始在一组测试对手中开始下降。目标只是创建一组多样化的训练对手,这样您的代理就不能只对其中一个进行过度拟合。我相信这种方法也被用于 [1, 2]。

    2. 在训练期间将搜索算法(如 MCTS)直接整合到代理的动作选择中。 NN + 搜索的组合(通常由 NN 通知/偏向)通常比 NN 本身要强一些。所以你总是可以不断更新神经网络,让它的行为更像神经网络+搜索的行为,这通常是一个改进。其中的搜索部分不太可能过度拟合特定的对手(因为它不是从经验中学习的,所以搜索总是以相同的方式表现)。如果 NN 自身开始对特定对手过度拟合,并开始建议一般来说不好但对特定对手有利的动作,则搜索算法应该能够通过过度拟合 NN“利用/惩罚”这个“错误” ,因此向 NN 提供反馈以再次摆脱过度拟合。这种方法的示例可以在 [3, 4, 5] 中找到。

    第二个想法可能比第一个想法需要更多的工程努力,而且它也只有在你实际上可以实现像 MCTS 这样的搜索算法时才有效(你可以,因为你知道游戏规则),但它可能有点工作更好的。我不确定它是否会更好,我只是怀疑它会因为它被用于后来的出版物中,结果比使用第一个想法的论文更好。


    参考文献

    [1] Silver, D., Huang, A., Maddison, CJ, Guez, A., Sifre, L., van den Driessche, G., Schrittwieser, J., Antonoglou, I., Panneershelvam, V ., Lanctot, M., Dieleman, S., Grewe, D., Nham, J., Kalchbrenner, N., Sutskever, I., Lillicrap, T., Leach, M., Kavukcuoglu, K., Graepel, T ., 和 Hassabis, D. (2016)。使用深度神经网络和树搜索掌握围棋游戏。 自然,第 529 卷,第 7587 期,第 484-489 页。

    [2] Bansal, T.、Pachocki, J.、Sidor, S.、Sutskever, I. 和 Mordatch, I. (2017)。通过多智能体竞争出现的复杂性。 arXiv:1710.03748v2.

    [3] Anthony, T. W.、Tian, Z. 和 Barber, D. (2017)。使用深度学习和树搜索快速和慢速思考。 arXiv:1705.08439v4.

    [4] Silver, D., Schrittwieser, J., Simonyan, K, Antonoglou, I., Huang, A., Guez, A., Hubert, T., Baker, L., Lai, M., Bolton, A.、Chen, Y.、Lillicrap, T.、Hui, F.、Sifre, L.、van den Driessche, G.、Graepel, T. 和 Hassabis, D. (2017)。在没有人类知识的情况下掌握围棋游戏。 自然,卷。 550,第 7676 号,第 354-359 页。

    [5] Silver, D., Hubert, T., Schrittweiser, J., Antonoglou, I., Lai, M., Guez, A., Lanctot, M., Sifre, L., Kumaran, D. , Graepel, T., Lillicrap, T., Simonyan, K. 和 Hassabis, D. (2017c)。使用通用强化学习算法通过自我对弈掌握国际象棋和将棋。 arXiv:1712.01815v1.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2017-06-07
      • 2016-09-01
      • 1970-01-01
      • 2014-10-23
      相关资源
      最近更新 更多