我正在进行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)
您实际上误解了梯度下降。梯度下降并不是说每次迭代都将所有权重都移向各自的最佳值,而是要提供的是,如果提供了准确的超参数,则总会朝着最小成本迈进。在您使用[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]进行初始化,并具有相同的学习率
现在您可以清楚地看到开始时就没有这种向上的缺口,因为现在成本值沿权重也朝其最佳值方向移动的方向减小,即[-2,4] >
现在您还可以看到cost和w0像以前一样以较少的迭代次数达到了所需值,这是因为现在我们初始化时非常接近所需值。
还有更多此类初始化可为您提供此结果。
结论-GD总是沿着最陡峭的路径下山
快乐机器学习...