“Linear Algebra review(optional)——Inverse and transpose”

上两个小节分别讲了矩阵和矩阵的乘法、矩阵乘法的性质、单位矩阵,这一小节讲一些特殊的矩阵运算:矩阵的逆和矩阵转置。

同样的,我们对比实数运算来理解矩阵的逆运算和转置。

逆矩阵

在实数空间中,我们有一个特殊的数“1”,任何数和1相乘都等于它本身,如果一个数和它的倒数相乘等于1。当然,也并不是所有的数都有倒数的,比如0.

那么,在矩阵的世界中,有没有类似实数倒数的定义呢?那就是逆矩阵了。它怎么定义呢?如下:




java矩阵的变换 java矩阵的转置_java二维矩阵怎么进行转置


如果一个方阵存在逆矩阵,那它们满足:


. 要注意,只有方阵(即矩阵的行数=矩阵的列数)才可能存在逆矩阵。


那逆矩阵怎么算出来呢?当然是使用软件来做了。如果用Python的话,可以用Numpy来做。

本门课使用的是Octava,直接用函数pinv即可,代码如下


A=[3 4; 2 16]
inverseOfA = pinv(A)


pinv(A)即是所求,关于Octava的使用将在第二周的课程中讲解。

我们需要注意的是:(1)只有方阵才有可能有逆矩阵;(2)并不是所有的方阵都有逆矩阵。那到底什么样的矩阵没有逆矩阵呢?此处并没有讲,后面机器学习问题碰到的时候再说。对于不存在逆矩阵的矩阵,学术上被称为“奇异矩阵”或者“退化矩阵”。

转置

如下图,A的转置矩阵用


来表示。


java矩阵的变换 java矩阵的转置_用指针将33矩阵转置_02


矩阵A的第一列,变成了A的转置后的第一行,就这么简单。更正式一点的定义如下:


java矩阵的变换 java矩阵的转置_java矩阵的变换_03


就是说,把矩阵的行标列标呼唤一下,就变成它的转置矩阵了。

到此为止,我们把机器学习中所要用到的线性代数的知识就都复习完了。包括了:加减、乘标量、乘向量、乘矩阵、求逆、求转置、矩阵乘法的性质这几部分内容,说起来很简单,但就是这样简单的线性代数基础可以发展成机器学习的算法,很奇妙。

注意:第一周的视频笔记全部完成,加作者好友可以索取所有的学习资料(包括讲义、视频、阅读材料等)。


java矩阵的变换 java矩阵的转置_java矩阵的变换_04