如何检查具有多个变量的梯度下降是否正确收敛?
How to check if gradient descent with multiple variables converged correctly?
在具有 1 个变量的线性回归中,我可以清楚地看到绘图预测线,我可以看到它是否适合训练数据。我只是创建了一个包含 1 个变量的图,并根据找到的 Theta 0 和 Theta 1 值输出并构建预测线。因此,它看起来像这样:
但是我如何检查在多个 variables/features 上实现的梯度下降结果的有效性。例如,如果特征数是 4 或 5。如何检查它是否正常工作以及发现所有 theta 值是否有效?我是否必须仅依赖根据执行的迭代次数绘制的成本函数?
梯度下降收敛于局部极小值,即一阶导数应为零,二阶非正。检查这两个矩阵将告诉您算法是否收敛。
我们可以将梯度下降视为解决 f'(x) = 0
问题的方法,其中 f'
表示 f
的梯度。为了检查这个问题的收敛性,据我所知,标准方法是计算每次迭代的差异,看看它是否收敛到 0。
也就是说,检查 ||f'(x)||
(或其平方)是否收敛到 0.
有些事情您可以尝试。
1) 检查您的 cost/energy 函数是否没有随着迭代的进行而改进。使用 "abs(E_after - E_before) < 0.00001*E_before" 之类的东西,即检查相对差异是否非常低。
2) 检查您的变量是否已停止更改。您可以选择与上述非常相似的策略来检查这一点。
实际上没有完美的方法可以完全确保您的函数已经收敛,但是上面提到的一些事情通常是人们尝试的。
祝你好运!
在具有 1 个变量的线性回归中,我可以清楚地看到绘图预测线,我可以看到它是否适合训练数据。我只是创建了一个包含 1 个变量的图,并根据找到的 Theta 0 和 Theta 1 值输出并构建预测线。因此,它看起来像这样:
但是我如何检查在多个 variables/features 上实现的梯度下降结果的有效性。例如,如果特征数是 4 或 5。如何检查它是否正常工作以及发现所有 theta 值是否有效?我是否必须仅依赖根据执行的迭代次数绘制的成本函数?
梯度下降收敛于局部极小值,即一阶导数应为零,二阶非正。检查这两个矩阵将告诉您算法是否收敛。
我们可以将梯度下降视为解决 f'(x) = 0
问题的方法,其中 f'
表示 f
的梯度。为了检查这个问题的收敛性,据我所知,标准方法是计算每次迭代的差异,看看它是否收敛到 0。
也就是说,检查 ||f'(x)||
(或其平方)是否收敛到 0.
有些事情您可以尝试。
1) 检查您的 cost/energy 函数是否没有随着迭代的进行而改进。使用 "abs(E_after - E_before) < 0.00001*E_before" 之类的东西,即检查相对差异是否非常低。
2) 检查您的变量是否已停止更改。您可以选择与上述非常相似的策略来检查这一点。
实际上没有完美的方法可以完全确保您的函数已经收敛,但是上面提到的一些事情通常是人们尝试的。
祝你好运!