DeepLearning(花书)第二章主要内容(1-6节)

来源:互联网 发布:mac下rar解压软件 编辑:程序博客网 时间:2024/06/02 03:04

第二章:线性代数
线代是数学的一个分支。
线代主要面向连续数学,而非离散数学,因此很多计算机科学家很少接触它。
掌握线代对深度学习算法而言非常重要。

此章为后续章节的基础章,已经熟悉现代的可以轻松地跳过本章。

作者推荐书籍:The Matrix CookBook(Petersen and Pedrsen,2006).

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

标量(scalar):一个标量就是一个单独的书,他不同与线代中研究的其他大部分对象。
向量(vector):一个向量是一列数。这些数是有序排列的。通过次序中的索引,我们可以确定每个单独的书。
矩阵(matrix):矩阵是一个二维数组,其中的每一个元素被两个索引而非一个索引确定。
张量(tensor):在某些情况下,我们会讨论超过2维的数组,一般地,一个数组中的元素分布在若干维坐标的规则网格中,我们将其称之为张量。

转置(transpose)是矩阵重要的操作之一,矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。其操作公式为:
这里写图片描述

只要矩阵的形状一样,我们便可以把两个矩阵相加。两个矩阵相加是指对应位置的元素加:
C=A+B 此时:

这里写图片描述

标量和矩阵相乘,相加的时候,我们只需要将矩阵的每个元素相乘相加:
D = a·B + c ,其中

这里写图片描述

深度学习中,我们也使用一些不那么常规的符号。我们允许矩阵和向量相加,结果是另一个矩阵:
C = A + b,其中
这里写图片描述

这样我们无需在加法操作前定义一个向量b复制到每一行而产生矩阵。这种隐式地复制我们成为广播(broadcasting)。

2.2矩阵和向量相乘
矩阵乘积
两个矩阵A和B的矩阵乘积(matrix product)是第三个矩阵C。
A与B能够相乘的前提是A的列数必须和B的行数相等。
A.shape 为 m x n,那么 B.shape 必须为 m x p。
我们可以将两个矩阵并列放置以书写矩阵乘法:
C = AB。
具体操作定义为:
这里写图片描述

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

向量点积
两个相同纬度的向量x和y的点积(dot product)可以看作是矩阵xTy。
那么矩阵乘积 C=AB中计算Ci,j的步骤就可以看作是A的第i行与B的第j列之间的点积。

矩阵乘法的性质
分配律:
A(B+C) = AB + AC.
结合律:
A(BC) = (AB)C.

矩阵乘积没有交换律,但是向量的点积满足交换律:
这里写图片描述

矩阵乘积的转置有着简单的形式:
这里写图片描述
两个向量的点积是标量,标量转置是自身,可以证明:
这里写图片描述

这里写图片描述

2.3单位矩阵和逆矩阵
单位矩阵(identity matrix):任意向量与单位矩阵相乘,都不会改变。我们将保持n维向量不变的单位矩阵记作
这里写图片描述
形式上,
这里写图片描述

单位矩阵的结构:所有沿主对角线的元素都是1,其余元素为0,如下图:
这里写图片描述
矩阵A的逆矩阵(matrix inversion)记作A-1,其定义的矩阵满足:
这里写图片描述
现在我们可以通过下面步骤求解(2.11):
这里写图片描述
方程的解取决于我们能否找到一个逆矩阵A-1。

2.4线性相关和生成子空间
如果逆矩阵A-1存在,那么式子(2.11)肯定对于每个向量b下恰好存在一个解。
但是对于方程组而言,对于向量b的某些值,有可能不存在解,或者存在无限多个解。
存在多以一个解但是少于无限多个解的情况是不可能发生的,因为如果x和y都是某方程组的解,则
z = αx+(1-α)y
(α取任意实数)也是该方程的解。

为了分析方程组有多少个解,我们把A的列向量看作是从原点(origin)(元素都是0的向量)出发的不同方向,确定有多少种方法可以到达向量b。在这个观点下,向量x中的每个元素表示我们应该沿这个方向走多远,即xi表示我们需要沿着第i个向量方向走多远:
这里写图片描述
一般来说,这种操作被称为线性组合(linear combination)。形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:
这里写图片描述
一组向量的生成子空间(span)是原始向量线性组合后能够抵达的点的集合。

(ps:书上这样讲的太过于抽象,贴一个百度文库链接:
https://wenku.baidu.com/view/25a56605de80d4d8d15a4ff8.html)
确定Ax=b是否有解相当于确定向量b是否存在A列向量的生成子空间中。
这个特殊的生成子空间被称为A的列空间(column space)或者A的值域(range)。
假设有一个R2x2的矩阵,但是他的两个列向量是相同的,那么他的列向量作为矩阵的列空间是一样的。换言之,虽然矩阵有2列,但是他的列空间仍然只是一条线,不能涵盖整个R2空间。正式的说,这种冗余被称为线性相关(linear dependence)。
相反,如果一个矩阵的任意一个列向量都不能表示为其他列向量的线性组合,那么这组向量被称为线性无关(linearly independent)。
如果一个矩阵的列空间涵盖整个Rm,那么该矩阵必须包含至少一组m个线性无关的向量。
这是式(2.11)对于每一个向量b的取值都有解的充分必要条件。这个条件说的是该向量集恰好有m个线性无关的列向量,而不是至少有m个。
要想使矩阵可逆,我们还需要确保式(2.11)对于每一个b值至多有1个解。因此,我们需要确保矩阵至多含有m个列向量。
综上所述,这意味着该矩阵必须是一个方阵(square),即m=n,并且所有的列向量都是线性无关的。列向量线性无关的方阵被称为奇异的(singular)。

对于方阵其左逆和右逆是相等的:
这里写图片描述

2.5范数
在机器学习中,我们经常使用被称为范数(norm)的函数衡量向量的大小。形式上,Lp范数定义如下:
这里写图片描述
其中p∈R,p>=1。
范数是将向量映射到非负值的函数。直观上来说,向量x的范数衡量的是原点到x的距离。
更严格的说,范数是满足下列性质的任意函数:
这里写图片描述

书中介绍的几个机器学习中的常用范数:
当p=2的时候,L2范数被称为欧几里德范数(Euclidean norm)。它表示从原点出发到向量x确定的点的欧几里得距离。
L2范数通常简写为||x||,省略了下标,可以通过xTx来计算。

L1范数简化如下:
这里写图片描述
当机器学习问题中零与非零元素之间的差异非常重要的时候,通常使用L1范数。因为其每当x中某个元素从0增加到d的时候,其L1范数也会增加到d。

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

有时候我们也希望衡量矩阵的大小。在深度学习中,常用的做法是使用Frobenius范数(Frobenius norm):
这里写图片描述

两个向量的点积(dot product)可以用范数来表示,具体地:
这里写图片描述

theta为x和y的夹角。

2.6特殊类型的矩阵和向量
对角矩阵(diagonal matrix)只在主对角线上含有非0元素,其他位置全都是0.
对角矩阵收到关注的部分原因是对角矩阵的乘法计算很高效:
diag(v)x 我们只需要将x中每个元素xi扩大vi倍。计算对角方阵的逆矩阵也很高效。对角方阵的逆矩阵存在。
注意一点:
对角矩阵并不是都是方阵。长方形的矩阵也有可能是对角矩阵。非方阵的对角矩阵没有逆矩阵。

对称矩阵(symmetric)矩阵是转置和自己相等的矩阵:
A=AT
常用于其不依赖参数顺序的双参数生成元素时,例如i和j之间的距离:Ai,j=Aj,i.

单位向量(unit vector)是具有单位范数(unit norm)的向量:
这里写图片描述

如果xTy=0,那么向量x和向量y互相正交(orthogonal)。
在Rn中,至多有n个范数非零向量相互正交。如果这些向量不仅正交而且其范数都是1,那么我们称它们是标准正交(orthonormal).
正交矩阵(orthogonal matrix)是指行向量和列向量分别标准正交的方阵:
这里写图片描述
这意味着:
这里写图片描述

持续更新在:
https://github.com/mrright2019/Hola

原创粉丝点击