为什么截距参数会朝意想不到的方向增加?
Why does the intercept parameter increases in an unexpected direction?
我正在进行 2 次梯度下降迭代(初始条件:learning_rate = 0.1,并且 [w0,w1] = [0,0])以找到 2 个参数(y_hat = w0 + w1*x) 对于适合简单数据集的线性模型,x=[0,1,2,3,4] 和 y=[0,2,3,8,17]。通过使用封闭式公式,我发现 w0 = -2 和 w1 = 4。对于梯度下降的前 2 次迭代,我发现 w0 = 0.6,w0 = 0.74。然而,我认为,如果在梯度下降中没有发生过冲,我应该期望 w0 在给定梯度下降的初始条件和我从封闭形式的解决方案中得到的答案的情况下,每次迭代都会减少。如果误差函数是凸函数,为什么会发生这种情况?
你实际上误解了梯度下降。梯度下降并不是说在每次迭代中所有的权重都会向各自的最优值移动,而是它的全部意义在于,如果提供了准确的超参数,你总是会向最小成本移动。在您使用 [0,0] 初始化权重的情况下,不存在 alpha 值,这将否定上述效果,因为当 w0 从 0.6 变为 0.74(考虑这是一个向量)并且 w1 从 2 移动到 2.68(考虑这个另一个向量)那么合成向量是这样的,它以最陡的下降下山,这就是 GD 所解释的,这是权重沿着成本函数的山下移动的集体方向。
并且您可以通过绘制成本图来验证这一点,并且在第二次迭代之后,b 值确实向 -2 移动,因为在第二次迭代之后,该方向上的 w0 是最陡峭的。
下图是w0在不同迭代时的值,x_axis=w0和y_axis=iteration_no
现在我们可以清楚地看到开头的小凹口了,这也是您提到的。
下面是不同迭代的成本图
这条成本曲线你可以清楚地看到成本在每一次迭代中都在下降,也就是说,我们不断地沿着最陡峭的方向下山,这就是梯度下降,这就是梯度下降的实际工作GD。是的,在学习模型的过程中,我们可能会遇到这样的行为,即我们的权重与所需的值相反,但因为我们正在下山,所以我们总是收敛到权重的最小值和正确值。
现在,如果它仍然让您烦恼,那么解决此问题的唯一方法是更改权重的初始值,因为调整 learning_Rate 不会通过 [0,0] 初始化解决此问题。
所以用 [-0.1,3.1] 和相同的 learning_rate
初始化
现在你可以清楚地看到开始时没有这样的上升槽口,因为现在成本值在权重也向其最佳值方向移动的方向减少,即 [-2,4]
现在您还可以看到成本和 w0 像以前一样在更少的迭代中接近所需的值,这是因为现在我们的初始化非常接近所需的值。
还有更多这样的初始化可以给你这个结果。
结论 - GD 总是沿着最陡峭的路径下山
祝机器学习愉快...
我正在进行 2 次梯度下降迭代(初始条件:learning_rate = 0.1,并且 [w0,w1] = [0,0])以找到 2 个参数(y_hat = w0 + w1*x) 对于适合简单数据集的线性模型,x=[0,1,2,3,4] 和 y=[0,2,3,8,17]。通过使用封闭式公式,我发现 w0 = -2 和 w1 = 4。对于梯度下降的前 2 次迭代,我发现 w0 = 0.6,w0 = 0.74。然而,我认为,如果在梯度下降中没有发生过冲,我应该期望 w0 在给定梯度下降的初始条件和我从封闭形式的解决方案中得到的答案的情况下,每次迭代都会减少。如果误差函数是凸函数,为什么会发生这种情况?
你实际上误解了梯度下降。梯度下降并不是说在每次迭代中所有的权重都会向各自的最优值移动,而是它的全部意义在于,如果提供了准确的超参数,你总是会向最小成本移动。在您使用 [0,0] 初始化权重的情况下,不存在 alpha 值,这将否定上述效果,因为当 w0 从 0.6 变为 0.74(考虑这是一个向量)并且 w1 从 2 移动到 2.68(考虑这个另一个向量)那么合成向量是这样的,它以最陡的下降下山,这就是 GD 所解释的,这是权重沿着成本函数的山下移动的集体方向。
并且您可以通过绘制成本图来验证这一点,并且在第二次迭代之后,b 值确实向 -2 移动,因为在第二次迭代之后,该方向上的 w0 是最陡峭的。
下图是w0在不同迭代时的值,x_axis=w0和y_axis=iteration_no
现在我们可以清楚地看到开头的小凹口了,这也是您提到的。
下面是不同迭代的成本图
这条成本曲线你可以清楚地看到成本在每一次迭代中都在下降,也就是说,我们不断地沿着最陡峭的方向下山,这就是梯度下降,这就是梯度下降的实际工作GD。是的,在学习模型的过程中,我们可能会遇到这样的行为,即我们的权重与所需的值相反,但因为我们正在下山,所以我们总是收敛到权重的最小值和正确值。
现在,如果它仍然让您烦恼,那么解决此问题的唯一方法是更改权重的初始值,因为调整 learning_Rate 不会通过 [0,0] 初始化解决此问题。
所以用 [-0.1,3.1] 和相同的 learning_rate
初始化现在你可以清楚地看到开始时没有这样的上升槽口,因为现在成本值在权重也向其最佳值方向移动的方向减少,即 [-2,4]
现在您还可以看到成本和 w0 像以前一样在更少的迭代中接近所需的值,这是因为现在我们的初始化非常接近所需的值。
还有更多这样的初始化可以给你这个结果。
结论 - GD 总是沿着最陡峭的路径下山
祝机器学习愉快...