梯度下降算法matlab
时间: 2023-10-16 14:10:26 浏览: 118
梯度下降算法
以下是一个简单的梯度下降算法的Matlab实现,用于最小化给定函数的参数:
```matlab
% 定义函数
function y = myfunc(x)
y = x(1)^2 + x(2)^2;
end
% 初始化参数和学习率
x0 = [1; 1];
alpha = 0.1;
% 迭代次数
num_iters = 100;
% 梯度下降算法
for i = 1:num_iters
% 计算梯度
grad = [2*x0(1); 2*x0(2)];
% 更新参数
x0 = x0 - alpha * grad;
% 打印迭代过程中的参数和函数值
fprintf('Iteration %d: x = [%f, %f], f(x) = %f\n', i, x0(1), x0(2), myfunc(x0));
end
```
在上述代码中,我们首先定义了一个函数`myfunc`,它是我们要最小化的函数。然后初始化参数和学习率,并进行指定次数的迭代来更新参数。在每次迭代中,我们首先计算梯度,然后使用学习率乘以梯度来更新参数。最后,我们打印出迭代过程中的参数和函数值。
注意:此处的梯度计算和参数更新都是使用了整个数据集,这种方法称为批量梯度下降(Batch Gradient Descent)。在实际应用中,可能需要使用随机梯度下降(Stochastic Gradient Descent)或者小批量梯度下降(Mini-batch Gradient Descent)等更高效的方法。
阅读全文