之前整理CS229和CS231作业的时候发现CNN和RNN的反向传播推导还是有些难度的,由此产生了整理机器学习中的线性代数的想法,整理内容包括(但不限于)向量微积分,奇异值分解,反向传播的推导等等,每个部分都会给出严格的理论推导,相应的代码以及其应用。这篇博客相当于一个索引,给出主要的结论,并且会经常更新,每个结论背后的理论推导都会专门写一篇博客进行补充。

基本概念

不同的资料上对于线性代数的记号略有不同,为了严谨起见,这部分给出一些基本概念以及记号的说明。

向量和矩阵的表示

矩阵

我们用大写字母(例如$A,B,C,\ldots$)表示矩阵,用带下标的小写字母$a_{ij},b_{ij},c_{ij},\ldots$表示其元素,例如

表示$m$行$n$列矩阵,$A\in \mathbb R^{m\times n}$表示矩阵的每个元素都是实数,即$a_{ij}\in \mathbb R$。

分块矩阵

分块矩阵是一个以矩阵作为元素的矩阵

比较常用的形式为二阶分块

方阵

如果$m=n$,那么称$A$为方阵,只有对角线非零的方阵称为对角矩阵,即

单位阵

对角元全为$1$的对角矩阵称为单位阵,记作

向量

如果矩阵的某个维度为$1$,即形状为$m\times 1 $或$1\times n$,那么称其为向量,一般使用小写字母$a,b,c,\ldots $表示,由于列向量转置之后即为行向量,所以本文只考虑列向量,例如

为了叙述方便,一般将$ \mathbb R^{n\times 1}$简记为$\mathbb R^n$,所以上述记号变为

在不特别说明的地方,后文所说的向量均指列向量。

标准单位列向量

只有一个元素为$1$,其余元素都为$0$的$n$维列向量称为$n$维标准单位列向量,在维度明确的情况下,简记为标准单位列向量,即

其中$e_i\in \mathbb R^n$,不难看出我们有

考虑矩阵$A=[a_{ij}]\in \mathbb R^{n\times n}$,记$A(i,:)$为$A$的第$i$行,$A(:,j)$为$A$的第$j$列,即

利用矩阵乘法不难看出

全$1$向量

$n$维全$1$向量记为$1_n$,即

利用$1_m1_n^{\top }$可以构造出全$1$矩阵:

全$1$向量还能对$A=[a_{ij}]\in \mathbb R^{m\times n}$按行,按列求和:

Hadamard积

$m\times n$矩阵$A=[a_{ij}]$和$m\times n$矩阵$B=[b_{ij}]$的Hadamard积记作$A\odot B$,$A\odot B$仍然是一个$m\times n$矩阵,其中

Hadamard积在推导反向传播时可以对符号进行化简。

参考文献

  1. 张贤达. 矩阵分析与应用[M]. 清华大学出版社, 2013.
  2. 姚慕生. 高等代数学[M]. 复旦大学出版社, 2003.
  3. Terence Parr and Jeremy Howard. The Matrix Calculus You Need For Deep Learning. ,July 3, 2018