深度学习 DEEP LEARNING 1-2章
文章目录
1.神书简介
《deep Learning》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,其被奉为AI界圣经。因其封面为AI生成的鲜花图像,故其“花书”之名广为传播。
其大致可以分为三大部分:各种基础(属地基型,学此部分的同时可佐以线性代数、李航统计学方法、吴恩达机器学习、机器学习实战、西瓜书、林轩田机器学习等书籍。。)、深度神经网络核心知识(本书灵魂所在,实践才是硬道理)、前沿发展(金字塔尖儿,可以细琢磨一下以便发论文)
重难点内容
- 矩阵对角化与svd分解 2. 最小二乘与pca
2.基本概念
线性代数主要研究的是以下几种对象:
- 标量(scalar):标量就是单一的数字,比如单一的整数,实数,有理数等都是标量。
- 向量(vector):可以看做是一组标量形成的一维数组,如由n个实数组成的向量:
x = [ x 1 x 2 ⋮ x n ] \boldsymbol{x}=\left[\begin{array}{c}{x_{1}} \\ {x_{2}} \\ {\vdots} \\ {x_{n}}\end{array}\right] x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
- 矩阵(matrix): 矩阵是二维数组,所以每个元素需要行和列的指标来标记
[ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2 ] \left[\begin{array}{ll}{A_{1,1}} & {A_{1,2}} \\ {A_{2,1}} & {A_{2,2}}\end{array}\right] [A1,1A2,1A1,2A2,2]
- 张量(tensor):张量是多维数组,当它是零维时就是标量,一维时就是矢量,二维时就是矩阵,也可以大于二维。
- 行列式(determinant):det(A)等于矩阵特征值的乘积,用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。
3.矩阵运算
- 转置(transpose):矩阵转置可以想成将矩阵按轴线翻转过来,矩阵A的转置常常用 A T A^{T} AT表示
- 矩阵乘法(matrix product):假如有两个形状分别为 m x n 的矩阵A和 n x p 的矩阵B,注意A的列数和B的行数要匹配,矩阵乘积C=AB就是将A的每一行与对应的B的每一列相乘求和,并将所得的数存储在C的对应元素中:
C i , j = ∑ k A i , k B k , j C_{i, j}=\sum_{k} A_{i, k} B_{k, j} Ci,j=∑kAi,kBk,j
由图形表示即是
矩阵与向量的乘积可以看做是矩阵与矩阵乘积的一种特殊情况。我们常用的n元一次线性方程组也可以表示为矩阵与向量的乘积形式
A x = b A x=b Ax=b
- 逆矩阵(inverse matrix):首先我们需要定义单位矩阵(Identity Matrix) I n I_{n} In, I n I_{n} In是一个n x n的方形矩阵,并且主对角线均为1,其他元素均为零,单位矩阵与任意向量相乘还得到该向量本身。矩阵A的逆矩阵常用 A − 1 A^{-1} A−1表示,其性质是 A − 1 A = I n A^{-1} A=I_{n} A−1A=In.即矩阵(方阵)的逆满足如下条件: A − 1 A = A A − 1 = I n A^{-1} A=A A^{-1}=I_{n} A−1A=AA−1=In
假如一个矩阵存在逆矩阵,那么相应的线性方程组就可以转化为求逆矩阵与向量的矩阵乘积的问题:
A x = b A − 1 A x = A − 1 b I n x = A − 1 b \begin{aligned} A x &=b \\ A^{-1} A x &=A^{-1} b \\ I_{n} x &=A^{-1} b \end{aligned} AxA−1AxInx=b=A−1b=A−1b
-
迹(trace):迹定义为求主对角线元素的和 Tr ( A ) = ∑ i A i , i \operatorname{Tr}(\boldsymbol{A})=\sum_{i} \boldsymbol{A}_{i, i} Tr(A)=∑iAi,i
-
范数(norm):范数用来度量向量的大小。比如 L p L^{p} Lpnorm定义为 ∥ x ∥ p = ( ∑ i ∣ x i ∣ p ) 1 p \|\boldsymbol{x}\|_{p}=\left(\sum_{i}\left|x_{i}\right|^{p}\right)^{\frac{1}{p}} ∥x∥p=(∑i∣xi∣p)p1(其中p是实数且p≥1)
常用的有 L 2 L^{2} L2norm,代表了从原点到向量所表示的点的欧几里得空间距离。为了方便计算, 我们也常常用 L 2 L^{2} L2norm的平方,可计算为向量转置与自身的乘积 x T x x^{T} x xTx。机器学习算法中还比较常用的是 L 1 L^{1} L1norm,即
∥ x ∥ 1 = ∑ i ∣ x i ∣ \|x\|_{1}=\sum_{i}\left|x_{i}\right| ∥x∥1=∑i∣xi∣
L 1 L^{1} L1norm常常用来做机器学习模型的regularization(防止过拟合,以后章节会细讲),因为 机器学习模型中我们常常想减小模型非零变量的数量以防止过拟合,也就是很多变量变为零,而将大部分权重放在某些有意义的变量上,这时候由于 L 2 L^{2} L2在变量较小接近零时跟随的改变较小,会出现很多趋近于零而不为零的变量,而 L 1 L^{1} L1norm由于跟随于每个变量的变动是恒定的,使得零元素和非零但趋近于零的变量仍对该项有显著贡献,在目标是减小这一项的过程中会使很多变量归零(注意是归零而不仅仅是较小接近零),从而更有效的减少过拟合。
- 实用性质:
A(B+C)=AB+AC(分配律)
A(BC)=(AB)C(结合律)
AB≠BA(一般不满足交换律)
(AB)=BA
( A B ) ⊤ = B ⊤ A ⊤ (A B)^{\top}=B^{\top} A^{\top} (AB)⊤=B⊤A⊤(转置)
x ⊤ y = ( x ⊤ y ) ⊤ = y ⊤ x x^{\top} y=\left(x^{\top} y\right)^{\top}=y^{\top} x x⊤y=(x⊤y)⊤=y⊤x(转置) 其中:x,y都是列向量, x ⊤ x^{\top} x⊤是行向量, x T y x^{T} y xTy的结果是一个标量
4.特殊矩阵
-
对称矩阵(symmetric matrix):对称矩阵的转置等于它自身。 A = A ⊤ A=A^{\top} A=A⊤
-
对角矩阵(diagonal matrix):除主对角线的元素均为零。
-
单位向量(unit vector): 单位向量的 L 2 L^{2} L2norm等于1。
-
正交矩阵(orthogonal matrix): 正交矩阵的转置与它自身的矩阵乘积是单位矩阵: A ⊤ A = A A ⊤ = I A^{\top} A=A A^{\top}=I A⊤A=AA⊤=I
-
单位矩阵(identity matrix):任意向量或矩阵和单位矩阵相乘,都不会改变,记为I。
所有沿主对角线的元素都是1,而所有其他位置的元素都是0。
5.特征分解
正如我们可以把正整数表示为更基本的质数的乘积的形式,特征分解(eigendecomposition)也是将矩阵分解为组成它的特征向量(eigenvector)和特征值(eigenvalue)的形式。
特征向量定义如下:如果正方形矩阵A和向量v的乘积可以表示为一个标量 λ \lambda λ 与向量v的乘积,那么v就是A的一个特征向量, λ \lambda λ就是A的一个特征值: A v = λ v A v=\lambda v Av=λv
可以看出,如果v就是A的一个特征向量,那么任意一个标量与v的乘积仍是A的一个特征向量,而且他们的特征值相同,所以通常我们只关心范数为1的特征向量。假设矩阵A是一个m×m的实对称矩阵(即 A = A T A=A^{T} A=AT),那么它可以被分解成如下的形式
A = Q Σ Q T = Q [ λ 1 ⋯ ⋯ ⋯ ⋯ λ 2 ⋯ ⋯ ⋯ ⋯ ⋱ ⋯ ⋯ ⋯ ⋯ λ m ] Q T A=Q \Sigma Q^{T}=Q\left[\begin{array}{cccc}{\lambda_{1}} & {\cdots} & {\cdots} & {\cdots} \\ {\cdots} & {\lambda_{2}} & {\cdots} & {\cdots} \\ {\cdots} & {\cdots} & {\ddots} & {\cdots} \\ {\cdots} & {\cdots} & {\cdots} & {\lambda_{m}}\end{array}\right] Q^{T} A=QΣQT=Q⎣⎢⎢⎡λ1⋯⋯⋯⋯λ2⋯⋯⋯⋯⋱⋯⋯⋯⋯λm⎦⎥⎥⎤QT
其中Q为标准正交阵,即有 Q Q T = I Q Q^{T}=I QQT=I, Σ \Sigma Σ为对角矩阵,且上面的矩阵的维度均为mxm。 λ i \lambda_{i} λi称为特征值, q i q_{i} qi是Q(特征矩阵)中的列向量,称为特征向量。 A q i = λ i q i , q i T q j = 1 ( i ≠ j ) A q_{i}=\lambda_{i} q_{i}, \quad q_{i}^{T} q_{j}=1(i \neq j) Aqi=λiqi,qiTqj=1(i=j)
我们可以想象矩阵A实际上是将空间在其特征向量的方向上各自拉伸了对应的特征值的尺度。
将矩阵分解为特征值 λ 和特征向量的表示形式。(一般只有方阵才有)
可以看作在二维平面上画出特征向量后,乘上矩阵A表示这个向量被拉伸了 λ 倍,如下图:
当然,不是所有矩阵都可以做特征分解,比较幸运的是,通常我们可能要解决的只是某类特定形式的矩阵问题,例如实对称矩阵总可以表示成特征分解的形式。
λ > 0:正定矩阵(positive definite)
λ ≥ 0:半正定矩阵(positive semidefinite)
λ < 0:负定矩阵(negative definite)
6.矩阵的对角化
矩阵B(方阵)的对角化 P − 1 A P = B P^{-1} A P=B P−1AP=B,其中A为对角矩阵,P为单位正交矩阵(即 P T P = P P T = I P^{T} P=P P^{T}=I PTP=PPT=I => P T = P − 1 P^{T}=P^{-1} PT=P−1 所以: B = P T A P B=P^{T} A P B=PTAP)。B首先要是方阵,其次它可对角化
一般的矩阵不一定能对角化,但是对称矩阵一定可以对角化(特别是对称正定矩阵(任何一个向量x $x^{T}Ax>0 ) , 得 到 的 ),得到的 ),得到的\lambda_{1}$都是正数)。
设 P T = ( u 1 , u 2 , ⋯ , u n ) , u i ∈ R n P^{T}=\left(u_{1}, u_{2}, \cdots, u_{n}\right), u_{i} \in \mathbb{R}^{n} PT=(u1,u2,⋯,un),ui∈Rn(其为一个n*n的矩阵,每个ui都为n乘以 1的列向量)
A = ( λ 1 λ 2 ⋱ λ n ) A=\left(\begin{array}{cccc}{\lambda_{1}} & {} & {} & {} \\ {} & {\lambda_{2}} & {} & {} \\ {} & {} & {\ddots} & {} \\ {} & {} & {} & {\lambda_{n}}\end{array}\right) A=⎝⎜⎜⎛λ1λ2⋱λn⎠⎟⎟⎞
则 B = ( u 1 , u 2 , ⋯ , u n ) ( λ 1 ⋱ λ n ) ( u 1 T ⋮ u n T ) B=\left(u_{1}, u_{2}, \cdots, u_{n}\right)\left(\begin{array}{ccc}{\lambda_{1}} & {} & {} \\ {} & {\ddots} & {} \\ {} & {} & {\lambda_{n}}\end{array}\right)\left(\begin{array}{c}{u_{1}^{T}} \\ {\vdots} \\ {u_{n}^{T}}\end{array}\right) B=(u1,u2,⋯,un)