深度学习"圣经" | 第二章 线性代数

深度学习领域圣经,英文原版的三位作者 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville

本人仅对中文版深度学习书中,提炼笔记,添加个人理解,该笔记仅作为个人深度学习知识的学习、总结、复习使用。若有错误,还望批评指教。—-ZJ

中文版 2017-09-04 版 pdf (PDF 阅读器打开 55)

第二章内容:中文版 P27 -,英文版 P31 -


Chapter 2 Linear Algebra

2.1 标量、向量、矩阵和张量

学习线性代数,会涉及以下几类数学概念:

  • 标量(scalar):一个标量就是一个单独的数。
  • 向量(vector):一个向量是一列数。
    • x=x1x2xn.(2.1) (2.1) x = [ x 1 x 2 ⋮ x n ] .
  • 矩阵(matrix):矩阵是一个二维数组,其中的每一个元素被两个索引(而非一个)所确定。

2.2 矩阵和向量相乘

  • 逐元乘积 (element-wise product):

    两个矩阵的标准乘积不是指两个矩阵中对应元素的乘积。不过,那样的矩阵操作确实是存在的,被称为元素对应乘积(element-wise product)或者Hadamard 乘积(Hadamard product),记为 A ⊙ B。

  • 点积(dot product):

    两个相同维数的向量 x 和 y 的点积(dot product)可看作是矩阵乘积 xy x ⊤ y

矩阵乘积运算有许多有用的性质,从而使矩阵的数学分析更加方便。比如,矩阵乘积服从分配律:

两个向量的点积(dot product)满足交换律:

两个向量点积的结果是标量,标量转置是自身的事实

2.3 单位矩阵和逆矩阵

单位矩阵(identity matrix):任意向量和单位矩阵相乘,都不会改变。
我们将保持 n n 维向量不变的单位矩阵记作 In I n 。 形式上, InRn×n I n ∈ R n × n

xRn,Inx=x.(1) (1) ∀ x ∈ R n , I n x = x .

矩阵 A A 的矩阵逆记作 A1 A − 1 ,其定义的矩阵满足如下条件

A1A=In.(2) (2) A − 1 A = I n .

Ax=bA1Ax=A1bInx=A1bx=A1b.(3) (3) A x = b A − 1 A x = A − 1 b I n x = A − 1 b x = A − 1 b .

2.4 线性相关和生成子空间

Ax=ixiA:,i.(4) (4) A x = ∑ i x i A : , i .

线性组合(linear combination)

iciv(i).(5) (5) ∑ i c i v ( i ) .

一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。

确定 Ax=b A x = b 是否有解相当于确定向量 b b 是否在 A A 列向量的生成子空间中。 这个特殊的生成子空间被称为 A A 的列空间或者 A A 的值域。

P61 (pdf)有点晕,找个相关视频看看

这种冗余被称为线性相关(linear dependence)。如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关(linearly independent)。

这意味着该矩阵必须是一个方阵(square),即 m = n,并且所有列
向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)。

2.5 范数

Lp L p 范数:

有时我们需要衡量一个向量的大小。在机器学习中,我们经常使用被称为 范数(norm)的函数衡量向量大小。形式上, Lp L p 范数定义如下

||x||p=(i|xi|p)1p(2.30) (2.30) | | x | | p = ( ∑ i | x i | p ) 1 p

其中 pRp1 p ∈ R , p ≥ 1

范数(包括 Lp L p 范数)是将向量映射到非负值的函数。 直观上来说,向量 x x 的范数衡量从原点到点 x x 的距离。 更严格地说,范数是满足下列性质的任意函数:

  • f(x)=0x=0 f ( x ) = 0 ⇒ x = 0
  • f(x+y)f(x)+f(y) f ( x + y ) ≤ f ( x ) + f ( y ) (三角不等式)
  • αR ∀ α ∈ R , f(αx)=αf(x) f ( α x ) = α f ( x )

L2 L 2 范数:

p=2 p = 2 时, L2 L 2 范数被称为欧几里得范数。 它表示从原点出发到向量 x x 确定的点的欧几里得距离。 L2 L 2 范数在机器学习中出现地十分频繁,经常简化表示为 ||x|| | | x | | ,略去了下标 2 2 。 平方 L2 L 2 范数也经常用来衡量向量的大小,可以简单地通过点积 xTx x T x 计算。

平方 L2 L 2 范数在数学和计算上都比 L2 L 2 范数本身更方便。 例如,平方 L2 L 2 范数对 x x 中每个元素的导数只取决于对应的元素,而 L2 L 2 范数对每个元素的导数却和整个向量相关。 但是在很多情况下,平方 L2 L 2 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。

L1 L 1 范数:

在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。 在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数: L1 L 1 范数。 L1 L 1 范数可以简化如下:

x1=i|xi|.(2.31) (2.31) ‖ x 1 ‖ = ∑ i | x i | .

当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用 L1 L 1 范数。 每当 x x 中某个元素从 0 0 增加 ϵ ϵ ,对应的 L1 L 1 范数也会增加 ϵ ϵ

L0 L 0 范数:

有时候我们会统计向量中非零元素的个数来衡量向量的大小。 有些作者将这种函数称为” L0 L 0 范数”,但是这个术语在数学意义上是不对的。 向量的非零元素的数目不是范数,因为对向量缩放 α α 倍不会改变该向量非零元素的数目。 L1 L 1 范数经常作为表示非零元素数目的替代函数。

L L ∞ 范数:

另外一个经常在机器学习中出现的范数是 L L ∞ 范数,也被称为,最大范数(max
norm)。 这个范数表示向量中具有最大幅值的元素的绝对值:

x1=maxi|xi|.(2.32) (2.32) ‖ x 1 ‖ ∞ = max i | x i | .

衡量矩阵的大小:

有时候我们可能也希望衡量矩阵的大小。 在深度学习中,最常见的做法是使用 Frobenius 范数(Frobenius norm),

AF=i,jA2i,j, ‖ A ‖ F = ∑ i , j A i , j 2 ,

其类似于向量的 L2 L 2 范数。

两个向量的点积(dot product)可以用范数来表示。 具体地,

xTy=x2Y2cosθ(2.34) (2.34) x T y = ‖ x ‖ 2 ‖ Y ‖ 2 cos ⁡ θ

其中 θ θ 表示 x x y y 之间的夹角。

2.6 特殊类型的矩阵和向量

对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其他位置都是零。

我们用 diag(v) 表示一个对角元素由向量 v 中元素给定的对角方阵。

计算乘法 diag(v)x,我们只需要将 x 中的每个元素 xi x i 放大 vi v i 倍。换言之,diag(v)x = v ⊙ x。

对称(symmetric)矩阵是转置和自己相等的矩阵:

A=A. A = A ⊤ .

单位向量(unit vector)是具有单位范数(unit norm)的向量:

||x||2=1.(2.36) (2.36) | | x | | 2 = 1.

正交(orthogonal):

如果 xy=0 x ⊤ y = 0 ,那么向量 x 和向量 y 互相正交(orthogonal)。如果两个向量都有非零范数,那么这两个向量之间的夹角是 90 度。

标准正交(orthonormal):

在 R n 中,至多有 n 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为 1,那么我们称它们是标准正交(orthonormal)。

正交矩阵(orthogonal matrix)是指行向量和列向量是分别标准正交的方阵:

AA=AA=I.(6) (6) A ⊤ A = A A ⊤ = I .

2.7 特征分解

知乎:如何理解矩阵特征值?https://www.zhihu.com/question/21874816

许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性而更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式产生的。

整数可以分解为质因数。 12 = 2 × 2 × 3

正如我们可以通过分解质因数来发现整数的一些内在性质,我们也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。

特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。

方阵 A 的特征向量(eigenvector)是指与 A 相乘后相当于对该向量进行缩放的非零向量 v v

Av=λv. A v = λ v .

  • 标量 λ 被称为这个特征向量对应的特征值(eigenvalue)

假设矩阵 A A n n 个线性无关的特征向量 v(1),,v(n) v ( 1 ) , … , v ( n ) ,对应着特征值 λ1,,λn λ 1 , … , λ n 。 我们将特征向量连接成一个矩阵,使得每一列是一个特征向量: V=[v(1),,v(n)] V = [ v ( 1 ) , … , v ( n ) ] . 类似地,我们也可以将特征值连接成一个向量 lambda=[λ1,,λn] l a m b d a = [ λ 1 , … , λ n ] ⊤ 。 因此 A A 的特征分解可以记作

A=VdiagλV1.(7) (7) A = V diag λ V − 1 .

然而,我们也常常希望将矩阵分解(decompose)成特征值和特征向
量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

实对称矩阵都可以分解成实特征向量和实特征值:

P66 找个视频看看

A=QΛQ A = Q Λ Q ⊤
. (2.41)

2.8 奇异值分解

知乎:奇异值的物理意义是什么?https://www.zhihu.com/question/22237507

另一种分解矩阵的方法,被称为奇异值分解(singular value decomposition, SVD),将矩阵分解为奇异向量(singular vector)和奇异值(singular value)。

特征分解:

A=Vdiag(λ)V1 A = V d i a g ( λ ) V − 1
.

奇异值分解是类似的,只不过这回我们将矩阵 A 分解成三个矩阵的乘积:

A=UDV A = U D V ⊤
.

假设 A 是一个 m×n 的矩阵,那么 U 是一个 m×m 的矩阵,D 是一个 m×n的矩阵,V 是一个 n × n 矩阵。

矩阵 U 和 V 都定义为正交矩阵,而矩阵 D 定义为对角矩阵。注意,矩阵 D 不一定是方阵。

2.9 Moore-Penrose 伪逆

CSDN:Moore-Penrose广义逆矩阵

Moore-Penrose 伪逆(Moore-Penrose pseudoinverse)使我们在这类问题上取得了一定的进展。矩阵 A 的伪逆定义为:

2.10 迹运算

迹运算返回的是矩阵对角元素的和:

Tr(A)=iAi,i T r ( A ) = ∑ i A i , i

迹运算提供了另一种描述矩阵 Frobenius 范数的方式:

||A||F=Tr(AAT) | | A | | F = T r ( A A T )

多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的。当然,我们需要考虑挪动之后矩阵乘积依然定义良好:

Tr(ABC)=Tr(CBA)=Tr(BCA) T r ( A B C ) = T r ( C B A ) = T r ( B C A )

另一个有用的事实是标量在迹运算后仍然是它自己: a=Tr(a) a = T r ( a )

2.11 行列式

知乎:行列式的本质是什么?

行列式就是线性变换的放大率!

行列式,记作 det(A),是一个将方阵 A 映射到实数的函数。行列式等于矩阵特征值的乘积。行列式的绝对值可以用来衡量矩阵参与矩阵乘法后空间扩大或者缩小了多少。如果行列式是 0,那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是 1,那么这个转换保持空间体积不变。

2.12 实例:主成分分析 PCA

知乎:PCA的数学原理(转)

主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?https://www.zhihu.com/question/30094611/answer/275172932

主成分分析(principal components analysis, PCA)是一个简单的机器学习算法,可以通过基础的线性代数知识推导。

你可能感兴趣的:(Deep,Leaning,Ian,Goodfellow)