本文主要是将上一篇博文 中的得出的梯度下降法的算法用矩阵进行化简,得到一个一般化的公式,最后对这两种方法进行了比较。
几个结论
在开始正式推导之前,我将会列出一些推导过程中需要用到的定义和结论,其中有些我会给出证明。
首先是关于矩阵迹的定义:一个n×n的矩阵A的迹,是指A的主对角线上各个元素的总和。迹是定义在矩阵上的一种运算,它是一个实数。
关于矩阵的迹,它有以下几个结论:
- trAB=trBA 推论:trABC=trCAB=trBCA
- 令f(A)=trAB1,则∇AtrAB=BT
- trA=trAT
- 如果a∈R,则tra=a
- ∇AtrABATC=CAB+CTABT
几个结论的简略证明如下:
trAB=trBA
根据矩阵乘法的运算法则,如果C=A_m×nB_n×m,则C_ij=(AB)_ij=∑_k=1nA_ikB_kj。
所以,tr(AB)=∑mi=1(AB)ii=∑mi=1∑_k=1nAikBki=∑nk=1∑mi=1BkiAik=∑nk=1(BA)jj=trBA
现在证明∇_AtrAB=BT
trAB=∑ni=1∑mk=1AikBki=∑mk=1A1kBk1+∑mk=1A2kBk2⋯∑mk=1AnkBkn
所以,∂trAB∂A_ij=B_ji
即,∇_AtrAB=BT
结论3、4、5此处就不再给出证明了。2
矩阵推导
有了上述的准备工作,就可以开始我们的推导工作了。我们将训练数据表示成矩阵的形式:
参数θ和输出结果y表示成向量形式:\(\theta = \left[
所以Xθ−y就可以表示成:
根据向量的基本性质:zTz=∑ni=1z2i,所以:
因此,为了使J(θ)达到最小,只需要求出令∇_θJ(θ)=0时的θ值,这时的θ值就是梯度下降法中最终得到的参数值。
最终3,我们得到了最终的Normal Equation:XTXθ=XT→y
所以,梯度下降法就转变为一个矩阵计算:θ=(XTX)−1XT→y
但是,需要注意的是,不要以为式子变简单了,计算量就减少了,事实上,当X的维数很高时,计算量反而更大,因为大矩阵运算会消耗很多资源。
参考文献
- 维基百科:迹
- 豆丁网:矩阵导数和迹的性质
- 斯坦福《机器学习》公开课第二集及其配套讲义