1、为什么要用向量化?
很多语言中包含了矩阵计算,矩阵计算可以将一些程序计算进行简化并且可以提速。
2、如何理解向量化?
【非向量化案例】
这个是一个我们通常计算预测的一个公式。左边的预测值是由右边的公式求和获得。
程序可以写成:
【向量化案例】
如果右边化简的话可以用以下表达式:
计算求和就是:
Theta*x=1*1+2*2+3*3+4*4=1+4+9+16=30
于是乎就达到了效果
变成可以写成:
3、场景应用:
梯度下降中我们会更新theta值,那么每次的迭代更新就可以使用这个思想:
【向量化思想】
使用Octave软件实现:
function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
m = length(y); % number of training examples
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
theta=theta-alpha/m*((X*theta-y)'*X)'
end
end
参考文献:
NG 《机器学习》课程,第5章第六节。