1 致谢
感谢 Andrew Ng老师的教授!
2 前言
今天在学习多重线性回归~
感觉向量化&矩阵化是机器学习中很重要的编程技巧,所以这里进行一下归纳~
3 向量化&矩阵化的技巧
3.1 使用矩阵转置实现平方求和运算
在机器学习中,度量loss一个很常见的形式就是使用L2范数,也就是求解预测值与样本值的平方和,
其公式如下,
J
(
θ
0
,
θ
1
,
…
,
θ
n
)
=
1
2
m
∑
i
=
1
m
(
y
^
i
−
y
i
)
2
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(θ_0,θ_1, \dots,θ_n)=\frac{1}{2m}\sum _{i=1}^m(\hat{y}_i − y_i)^2=\frac{1}{2m}\sum _{i=1}^m(h_θ(x_i)−y_i)^2
J(θ0,θ1,…,θn)=2m1i=1∑m(y^i−yi)2=2m1i=1∑m(hθ(xi)−yi)2
而
h
θ
(
x
i
)
−
y
i
h_θ(x_i)−y_i
hθ(xi)−yi常常会被矩阵形式表示,即:
X
θ
−
y
\boldsymbol{X}θ−y
Xθ−y;
于是,产生了
J
(
θ
)
J(θ)
J(θ)函数的向量化公式,即:
J
(
θ
)
=
1
2
m
(
X
θ
−
y
)
T
(
X
θ
−
y
)
J(θ)=\frac{1}{2m}(\boldsymbol{X}θ−y)^T( \boldsymbol{X}θ−y)
J(θ)=2m1(Xθ−y)T(Xθ−y)
可以看到,这里的平方求和运算被转置运算加上矩阵乘法实现,
于是我们可以归纳一下,当求解向量
v
\boldsymbol{v}
v的平方和时,即:
f
(
v
1
,
v
2
,
…
,
v
n
)
=
∑
i
=
1
n
v
i
2
f(v_1,v_2,\dots,v_n)=\sum _{i=1}^nv_i^2
f(v1,v2,…,vn)=i=1∑nvi2
可以使用转置运算加上矩阵乘法来实现平方和运算的向量化,即:
f
(
v
)
=
v
T
v
f(\boldsymbol{v})=\boldsymbol{v}^T\boldsymbol{v}
f(v)=vTv