【问题标题】:Is tuning batch size or epochs necessary for linear regression with TensorFlow?使用 TensorFlow 进行线性回归是否需要调整批量大小或时期?
【发布时间】:2018-04-17 13:10:19
【问题描述】:

我正在撰写一篇文章,我专注于一个简单的问题——在存在标准正态或均匀噪声的情况下对大型数据集进行线性回归。我选择了 TensorFlow 的 Estimator API 作为建模框架。

我发现,当训练步骤的数量可以足够大时,超参数调整实际上对这样的机器学习问题并不重要。我所说的超参数是指训练数据流中的批量大小或时期数。

是否有任何论文/文章对此有正式证明?

【问题讨论】:

    标签: machine-learning tensorflow linear-regression estimation hyperparameters


    【解决方案1】:

    我认为没有专门针对这个问题的论文,因为它或多或少是一个基本事实。 this book 的介绍性章节讨论了机器学习的一般概率解释,特别是损失函数优化。

    简而言之,这个想法是这样的:小批量优化 wrt (x1,..., xn) 等价于连续优化步骤 wrt x1, ..., xn 输入,因为梯度是线性算子。这意味着小批量更新等于其各个更新的总和。这里的重要说明:我假设 NN 不应用批处理规范或任何其他向推理模型添加显式变化的层(在这种情况下,数学有点毛茸茸)。

    所以batch size可以看作是一种纯粹的计算思想,通过向量化和并行计算加速优化。假设一个人可以承受任意长时间的训练并且数据被正确打乱,批量大小可以设置为任何值。但并非所有超参数都自动成立,例如非常高的学习率很容易迫使优化发散,所以不要误以为超参数调整通常不重要。

    【讨论】:

    • 感谢您的出色回答。唯一的问题是 tf.estimator.LinearRegressor() 甚至没有学习率作为超参数。唯一的超参数来自输入函数端,它们是批量大小和时期数。我没有使用传统的 tf.train.GradientDescentOptimizer,学习率是我可以输入的显式参数。
    • @Tirtha 我同意,高级 TF API 很棘手,因为它隐藏了很多细节。实际上,您可以通过创建和传递这样的优化器来设置学习率:ftrl.FtrlOptimizer(learning_rate=learning_rate)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多