矩阵问题

来源:7-2 使用梯度上升法求解PCA问题

云水轩

2019-08-27

老师你在7.2第二小节转置相乘有点不明白。矩阵相乘明确规定,第一个矩阵的行数要等于第二个矩阵的列数!但是如果转置后明显不相等如何相乘?

写回答

1回答

liuyubobobo

2019-08-27

先看第一个式子:

//img1.sycdn.imooc.com/szimg/5d651cbb0974687913020802.jpg


X 是一个 m * n 的矩阵,w 是一个 n 维向量。Xw 是一个 m 维向量。但是,向量和矩阵是不能做乘法的。(Xw).T 相当于将这个 m 维向量转化成了一个矩阵:1*m 的矩阵。(因为把向量看做是矩阵,是m*1的矩阵,所以转置后,是1*m的矩阵)。然后,这个 1*m 的矩阵和X这个m*n的矩阵相乘,得到的是1*n的矩阵。但其实,我们要的是一个向量,也就是再把结果看做是一个 n 维向量。


我们再看第二个式子:

//img.mukewang.com/szimg/5d651e09095f8e4013020802.jpg


X 是一个 m*n 的矩阵,X.T 是一个 n*m 的矩阵。

Xw,上面分析过了,是一个m维的向量。

一个 n*m 的矩阵,可以直接和一个 m 维向量做乘法。得到的结果就是我们要求的 n 为向量。


这里的关键是:上一个式子是两个矩阵做乘法。下一个式子是矩阵和向量做乘法。当然,对于下一个式子,你也可以理解成是n*m的矩阵和m*1的向量做乘法。


是的,最终结果从矩阵的角度看不一样,一个是1*n的矩阵,一个是n*1的矩阵。但是,我们最重要的结果是一个向量,都是同样的n维向量。所以,下一个式子是更直接的获得这个n维向量的方式。


继续加油!:)

1
1
云水轩
非常感谢!
2019-08-27
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程