趁着寒假的闲暇时光,希望能稍加学习。
花书毕竟是深度学习四大名著之一,因此早就想拜读一下。在其中获得的感悟或者学习到的新的内容,希望能够通过博客的形式记录下来。一来是希望能够记录下自己学习的点点滴滴,二来是希望能够和大家探讨探讨。
这个系列的博客不会以教程的形式来撰写,毕竟本博猪也是刚开始看,将以笔记的形式呈现出来,希望大家不要嫌弃。
下面进入正题吧
第二章 线性代数
一、 范数
-
形式上,Lp 范数定义如下:
平方 L2 范数在数学和计算上都比 L2 范数本身更方便。例如,平方 L2 范数对x 中每个元素的导数只取决于对应的元素,而 L2 范数对每个元素的导数却和整个向量相关。(对于这句话的理解,自己求个导就显而易见了)
有了上述表达式,那么L1范数和L2范数的形式就有了。
特别的,需要提出一下最大范数: -
另外一个经常在机器学习中出现的范数是 L∞ 范数,也被称为 最大范数(max
norm)。这个范数表示向量中具有最大幅值的元素的绝对值:
-
另,有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使
用Frobenius 范数(Frobenius norm):
说的这么高大上,其实和L2范数的形式是一样的。 -
另,两个向量的 点积(dot product)可以用范数来表示。具体地,
其中 θ 表示 x 和 y 之间的夹角。
这里想表达的就是:向量点积和向量乘积的结果是一样的!
二、正交
-
向量正交
如果 x⊤y = 0(在线性代数中,往往将向量看成列向量),那么向量 x 和向量 y 互相 正交(orthogonal)。如果两个向量如果 x⊤y = 0,那么向量 x 和向量 y 互相 正交(orthogonal)。
如果两个向量都有非零范数,那么这两个向量之间的夹角是 90 度。在 Rn 中,至多有 n 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为 1,那么我们称它们是 标准正交(orthonormal) -
矩阵正交
正交矩阵(orthogonal matrix)是指行向量和列向量是分别标准正交(注意是标准正交而不是简单的正交)的方阵:
A⊤A = AA⊤ = I
由上式不难发现:A−1 = A⊤
所以正交矩阵受到关注是因为求逆计算代价小。我们需要注意正交矩阵的定义。违
反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列
向量互相正交但不是标准正交的矩阵,没有对应的专有术语。
三、特征分解
特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分
解成一组特征向量和特征值。
方阵 A 的 特征向量(eigenvector)是指与 A 相乘后相当于对该向量进行缩放
的非零向量 v:
Av = λv
标量 λ 被称为这个特征向量对应的 特征值(eigenvalue)。(类似地,我们也可以
定义 左特征向量(left eigenvector)
v⊤A = λv⊤
但是通常我们更关注 右特征向量
如果 v 是 A 的特征向量,那么任何缩放后的向量 sv (s ∈ R,s ̸= 0) 也是 A 的
特征向量。此外,sv 和 v 有相同的特征值。基于这个原因,通常我们只考虑单位特
征向量。
假设矩阵 A 有 n 个线性无关的特征向量 {v(1), . . . , v(n)},对应着特征值
{λ1, . . . , λn}。我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:
V = [v(1), . . . , v(n)]. 类似地,我们也可以将特征值连接成一个向量 λ = [λ1, . . . , λn]⊤。
因此 A 的 特征分解(eigendecomposition)可以记作:
A = Vdiag(λ)V−1
不是每一个矩阵都可以分解成特征值和特征向量。每个实对称矩阵都可以分解成实特征向量和实特征值:A = QΛQ⊤
其中 Q 是 A 的特征向量组成的正交矩阵,Λ 是对角矩阵。
矩阵的特征分解给了我们很多关于矩阵的有用信息:
- 矩阵是奇异的当且仅当含有零特征值。
- 实对称矩阵的特征分解也可以用于优化二次方程 f(x) = x⊤Ax,其中
限制 ∥x∥2= 1。当 x 等于 A 的某个特征向量时,f 将返回对应的特征值。在限制条
件下,函数 f 的最大值是最大特征值,最小值是最小特征值 - 所有特征值都是正数的矩阵被称为 正定(positive definite);所有特征值都是非
负数的矩阵被称为 半正定(positive semidefinite)。同样地,所有特征值都是负数的
矩阵被称为 负定(negative definite);所有特征值都是非正数的矩阵被称为 半负定
四、奇异值分解
不是每一个矩阵都可以进行特征值分解,但是每一个矩阵都可以进行奇异值分解。
特征值分解:A = Vdiag(λ)V−1
奇异值分解:A = UDV⊤
假设 A 是一个 m × n 的矩阵,那么 U 是一个 m × m 的矩阵,D 是一个 m × n
的矩阵,V 是一个 n × n 矩阵。
注意,矩阵 U 和 V 都定义为正交矩阵,而矩阵 D 定义为对角矩阵。矩阵 D 不一定是方阵。
对角矩阵 D 对角线上的元素被称为矩阵 A 的 奇异值(singular value)。矩阵
U 的列向量被称为 左奇异向量(left singular vector),矩阵 V 的列向量被称 右奇异
向量(right singular vector)。
事实上,我们可以用与 A 相关的特征分解去解释 A 的奇异值分解。A 的 左奇
异向量(left singular vector)是 AA⊤ 的特征向量。A 的 右奇异向量(right singular
vector)是 A⊤A 的特征向量。A 的非零奇异值是 A⊤A 特征值的平方根,同时也是
AA⊤ 特征值的平方根。
五、伪逆
有的矩阵可能没有逆矩阵,那么就用伪逆来代替:
矩阵 A 的伪逆定义为:
计算伪逆的实际算法没有基于这个定义,而是使用下面的公式:
A+ = VD+U⊤
其中,矩阵 U,D 和 V 是矩阵 A奇异值分解后得到的矩阵。对角矩阵 D 的伪逆
D+ 是其非零元素取倒数之后再转置得到的。