从梯度下降更新规则中获得直觉
Gaining intuition from gradient descent update rule
梯度下降更新规则:
为此规则使用这些值:
x = [10
20
30
40
50
60
70
80
90后
100]
y = [4
7
8个
4个
5个
6个
7
5个
3个
4]
使用 0.07 的学习率进行两次迭代后输出值 theta
-73.396
-5150.803
经过三次迭代后 theta 为:
1.9763e+04
1.3833e+06
所以看起来 theta 在第二次迭代后变得更大,这表明学习率太大了。
所以我设置:
迭代次数 = 300;
阿尔法 = 0.000007;
theta 现在是:
0.0038504
0.0713561
这些 theta 值是否应该允许我绘制一条直线数据,如果可以的话如何?我刚刚开始尝试理解梯度下降,所以请指出我逻辑中的任何错误。
来源:
x = [10
20
30
40
50
60
70
80
90
100]
y = [4
7
8
4
5
6
7
5
3
4]
m = length(y)
x = [ones(m , 1) , x]
theta = zeros(2, 1);
iterations = 300;
alpha = 0.000007;
for iter = 1:iterations
theta = theta - ((1/m) * ((x * theta) - y)' * x)' * alpha;
theta
end
plot(x, y, 'o');
ylabel('Response Time')
xlabel('Time since 0')
更新:
所以每个 x 值乘以 theta 的乘积绘制一条直线:
plot(x(:,2), x*theta, '-')
更新 2:
这与线性回归模型有何关系:
由于模型也输出预测值 ?
是的,你应该可以画一条直线。在回归中,梯度下降是一种用于最小化线性回归模型的成本(误差)函数的算法。您使用梯度作为轨迹以到达成本函数的最小值,学习率决定了您沿路径行进的速度。走得太快,您可能会超过全局最小值。当您达到所需的最小值时,将这些 theta 值插入您的模型以获得您的估计模型。在一维情况下,这是一条直线。
查看 this article,它很好地介绍了梯度下降。
梯度下降更新规则:
为此规则使用这些值:
x = [10 20 30 40 50 60 70 80 90后 100] y = [4 7 8个 4个 5个 6个 7 5个 3个 4]
使用 0.07 的学习率进行两次迭代后输出值 theta
-73.396
-5150.803
经过三次迭代后 theta 为:
1.9763e+04
1.3833e+06
所以看起来 theta 在第二次迭代后变得更大,这表明学习率太大了。
所以我设置:
迭代次数 = 300; 阿尔法 = 0.000007;
theta 现在是:
0.0038504
0.0713561
这些 theta 值是否应该允许我绘制一条直线数据,如果可以的话如何?我刚刚开始尝试理解梯度下降,所以请指出我逻辑中的任何错误。
来源:
x = [10
20
30
40
50
60
70
80
90
100]
y = [4
7
8
4
5
6
7
5
3
4]
m = length(y)
x = [ones(m , 1) , x]
theta = zeros(2, 1);
iterations = 300;
alpha = 0.000007;
for iter = 1:iterations
theta = theta - ((1/m) * ((x * theta) - y)' * x)' * alpha;
theta
end
plot(x, y, 'o');
ylabel('Response Time')
xlabel('Time since 0')
更新:
所以每个 x 值乘以 theta 的乘积绘制一条直线:
plot(x(:,2), x*theta, '-')
更新 2:
这与线性回归模型有何关系:
由于模型也输出预测值 ?
是的,你应该可以画一条直线。在回归中,梯度下降是一种用于最小化线性回归模型的成本(误差)函数的算法。您使用梯度作为轨迹以到达成本函数的最小值,学习率决定了您沿路径行进的速度。走得太快,您可能会超过全局最小值。当您达到所需的最小值时,将这些 theta 值插入您的模型以获得您的估计模型。在一维情况下,这是一条直线。
查看 this article,它很好地介绍了梯度下降。