机器学习(三)梯度下降算法
简述
前面说到了线性回归,我们需要找到代价函数最小的相应参数。这里介绍一种寻找的方法,梯度下降法。
按字面意思理解,就是顺着斜坡一路向下,最终找到最低点。
再具体一点说,就是通过求导求斜率,按照函数梯度以一定的步进不断迭代,最终到达最小值点。
迭代公式
为步进,在这里称为学习速率。
向量化公式
推导过程
其中
即
故向量化公式为
Octave/MATLAB 代码实现
function [theta] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y);
for iter = 1:num_iters
theta = theta - alpha / m * (X' * (X * theta - y));
end
end
注意事项
学习速率的选择应适当:
- 过大则可能每次步进都跨过最小值点,以至于可能随梯度增大而远离最小值点
- 过小则可能步进极慢,效率低下
为便于向量化表示,向量第一列默认为全1。此时相当于与1相乘。
Comments