gpt4 book ai didi

tensorflow - 神经网络超参数调整 - 设置随机种子是个好主意吗?

转载 作者:行者123 更新时间:2023-12-03 16:47:04 26 4
gpt4 key购买 nike

关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic

9 个月前关闭。




Improve this question




我正在尝试调整一个基本的神经网络作为练习。 (基于 Coursera 类(class)中的示例:神经网络和深度学习 - DeepLearning.AI)
我面临随机权重初始化的问题。假设我尝试调整网络中的层数。
我有两个选择:

  • 1.:将随机种子设置为固定值
  • 2.:在不设置种子的情况下多次运行我的实验

  • 两个版本各有利弊。
    我最大的担忧是,如果我使用随机种子(例如: tf.random.set_seed(1) ),那么确定的值可能会“过度拟合”到种子,并且在没有种子的情况下可能无法正常工作,或者如果值发生变化(例如: tf.random.set_seed(1) -> tf.random.set_seed(2) . 另一方面,如果我在没有随机种子的情况下运行我的实验更多次,那么我可以检查更少的选项(由于计算能力有限)并且仍然只检查可能的随机权重初始化的子集。
    在这两种情况下,我都觉得运气是这个过程中的一个重要因素。
    是否有最佳实践来处理这个话题?
    TensorFlow 是否为此内置了工具?我感谢任何描述或教程的来源。提前致谢!

    最佳答案

    在深度学习中调整超参数(通常在机器学习中)是一个常见问题。将随机种子设置为固定数量可确保可重复性和公平比较。重复相同的实验会导致相同的结果。您可能知道,避免过度拟合的最佳做法是对数据进行训练测试拆分,然后使用 k-fold cross-validation选择最优超参数。如果您测试一个超参数的多个值,您需要确保可能影响模型性能的其他情况(例如训练-测试-分割或权重初始化)对于每个超参数都是相同的,以便公平比较表现。因此,我总是建议修复种子。
    现在,问题在于,正如您已经指出的那样,每个模型的性能仍将取决于随机种子,例如在您的情况下特定的数据拆分或权重初始化。为了避免这种情况,可以进行重复的 k 折交叉验证。这意味着您多次重复 k 折交叉验证,每次使用不同的种子,选择该运行的最佳参数,测试测试数据并平均最终结果以获得对性能 + 方差的良好估计,从而消除种子在验证过程中的影响。
    或者,您可以执行一次 k 折交叉验证,并使用不同的随机种子训练每个分割 n 次(消除权重初始化的影响,但仍然具有训练-测试-分割的效果)。
    最后,TensorFlow 没有为此目的的内置工具。你作为修行者必须照顾到这一点。

    关于tensorflow - 神经网络超参数调整 - 设置随机种子是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65704588/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com