使用 TensorFlow 进行线性回归是否需要调整批量大小或轮数?
Is tuning batch size or epochs necessary for linear regression with TensorFlow?
我正在写一篇文章,重点关注一个简单的问题——在存在标准正态或均匀噪声的情况下对大型数据集进行线性回归。我选择了 TensorFlow 的 Estimator API 作为建模框架。
我发现,当训练步骤的数量足够大时,超参数调整实际上对于此类机器学习问题并不重要。我所说的超参数是指训练数据流中的批量大小或时期数。
有paper/article正式证明吗?
我认为没有专门针对这个问题的论文,因为这或多或少是一个基本事实。 this book 的介绍章节讨论了机器学习的一般概率解释,特别是损失函数优化。
简而言之,这个想法是这样的:小批量优化 wrt (x1,..., xn)
相当于连续优化步骤 wrt x1
, ..., xn
输入,因为梯度是线性算子。这意味着小批量更新等于其单个更新的总和。此处重要说明:我假设 NN 不应用 batch-norm 或任何其他向推理模型添加显式变化的层(在这种情况下,数学有点复杂)。
所以batch size可以看作是一种纯粹的计算思想,通过向量化和并行计算来加速优化。假设一个人可以承受任意长的训练并且数据被适当地打乱,那么批量大小可以设置为任何值。但这并非对所有超参数都自动成立,例如非常高的学习率很容易迫使优化发散,所以不要错误地认为超参数调整通常并不重要。
我正在写一篇文章,重点关注一个简单的问题——在存在标准正态或均匀噪声的情况下对大型数据集进行线性回归。我选择了 TensorFlow 的 Estimator API 作为建模框架。
我发现,当训练步骤的数量足够大时,超参数调整实际上对于此类机器学习问题并不重要。我所说的超参数是指训练数据流中的批量大小或时期数。
有paper/article正式证明吗?
我认为没有专门针对这个问题的论文,因为这或多或少是一个基本事实。 this book 的介绍章节讨论了机器学习的一般概率解释,特别是损失函数优化。
简而言之,这个想法是这样的:小批量优化 wrt (x1,..., xn)
相当于连续优化步骤 wrt x1
, ..., xn
输入,因为梯度是线性算子。这意味着小批量更新等于其单个更新的总和。此处重要说明:我假设 NN 不应用 batch-norm 或任何其他向推理模型添加显式变化的层(在这种情况下,数学有点复杂)。
所以batch size可以看作是一种纯粹的计算思想,通过向量化和并行计算来加速优化。假设一个人可以承受任意长的训练并且数据被适当地打乱,那么批量大小可以设置为任何值。但这并非对所有超参数都自动成立,例如非常高的学习率很容易迫使优化发散,所以不要错误地认为超参数调整通常并不重要。