学习
实践
活动
专区
工具
TVP
写文章

《深度学习》读书笔记系列——线性代数1

简单内容简要介绍,重点内容详细介绍。本篇知识内容:

标量、向量、矩阵、张量、广播、矩阵和向量相乘、单位矩阵、逆矩阵、范数

标量、向量、矩阵和张量

标量(scalar):一个标量就是一个单独的数,它不同于线性代数中研究的其他

大部分对象(通常是多个数的数组)

向量(vector):一个向量是一列数。这些数是有序排列的。通过次序中的索

引,我们可以确定每个单独的数。

矩阵(matrix):矩阵是一个二维数组,其中的每一个元素被两个索引(而非

一个)所确定。

张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般地,一

个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。我们使用

字体 A 来表示张量 “A’’。张量 A 中坐标为 (i; j; k) 的元素记作 Ai;j;k。

转置(transpose):矩阵的转置是以对角线为轴的镜像,

这条从左上角到右下角的对角线被称为 主对角线(main diagonal)。图显示了这

个操作。我们将矩阵 A 的转置表示为 A⊤,定义如下

向量可以看作只有一列的矩阵。对应地,向量的转置可以看作是只有一行的矩

阵。有时,我们通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其

变为标准的列向量,来定义一个向量,比如 x = [x1; x2; x3]⊤.

标量可以看作是只有一个元素的矩阵。因此,标量的转置等于它本身, a = a⊤。

矩阵的转置可以看成以主对角线为轴的一个镜像

两个矩阵相加是指对应位置的元素相加,比如 C = A + B,其中 Ci;j = Ai;j + Bi;j。

标量和矩阵相乘,或是和矩阵相加时,我们只需将其与矩阵的每个元素相乘或相加,比如 D = a · B + c,其中 Di;j = a · Bi;j + c。

广播

在深度学习中,我们允许矩阵和向量相加,产生另一个矩阵: C = A + b,其中 Ci;j = Ai;j + bj。换言之,向量 b 和矩阵A 的每一行相加,被称为广播(broadcasting)。

矩阵和向量相乘

两个矩阵 A 和 B 的 矩阵乘积(matrix product)是第三个矩阵 C。为了使乘法定义良好,矩阵 A 的列数必须和矩阵 B 的行数相等。如果矩阵 A 的形状是 m × n,矩阵 B 的形状是 n × p,那么矩阵C 的形状是 m× p。

C = AB

具体地,该乘法操作定义为

两个矩阵中对应元素的乘积被称为元素对应乘积(element-wise product)或者 Hadamard 乘积(Hadamard product),记为 A ⊙ B。

两个相同维数的向量 x 和 y 的 点积(dot product)可看作是矩阵乘积 x⊤y。我们可以把矩阵乘积 C = AB 中计算 Ci;j 的步骤看作是 A 的第 i 行和 B 的第 j 列之间的点积。

矩阵乘积服从分配律:

A(B + C) = AB + AC

矩阵乘积也服从结合律:

A(BC) = (AB)C

不同于标量乘积,矩阵乘积并不满足交换律(AB = BA 的情况并非总是满足)。

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

x⊤y = y⊤x

矩阵乘积的转置有着简单的形式:

(AB)⊤ = B⊤A⊤

利用两个向量点积的结果是标量,标量转置是自身的事实,我们可以证明:

x⊤y = (x⊤y)⊤ = y⊤x

可以表达下列线性方程组

Ax = b

矩阵 A 的每一行和 b 中对应的元素构成一个约束。我们可以把上式重写为

或者,更明确地,写作

单位矩阵和逆矩阵

我们将保持 n 维向量不变的单位矩阵记作 In。

单位矩阵结构:所有沿主对角线的元素都是 1,而所有其他位置的元素都是0。

矩阵 A 的 矩阵逆(matrix inversion)记作 A-1,其定义的矩阵满足如下条件:

逆矩阵主要是作为理论工具使用的,并不会在大多数软件应用程序中实际使用。这是因为逆矩阵在数字计算机上只能表现出有限的精度,有效使用向量 b 的算法通常可以得到更精确的x。

线性相关和生成子空间

如果逆矩阵 A-1 存在,那么式 (2.11) 肯定对于每一个向量 b 恰好存在一个解。但是,对于方程组而言,对于向量 b 的某些值,有可能不存在解,或者存在无限多个解。

为了分析方程有多少个解,我们可以将 A 的列向量看作从 原点(origin)(元素都是零的向量)出发的不同方向,确定有多少种方法可以到达向量 b。

一般而言,这种操作被称为 线性组合(linear combination)。形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:

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

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

不等式 n ≥ m 仅是方程对每一点都有解的必要条件。这不是一个充分条件,因为有些列向量可能是冗余的。正式地说,这种冗余被称为 线性相关(linear dependence)。如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为 线性无关

(linearly independent)。

如果一个矩阵的列空间涵盖整个 Rm,那么该矩阵必须包含至少一组 m 个线性无关的向量。要想使矩阵可逆,我们还需要保证式对于每一个 b 值至多有一个解。为此,我们需要确保该矩阵至多有 m 个列向量。否则,该方程会有不止一个解。

综上所述,这意味着该矩阵必须是一个 方阵(square),即 m = n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)。如果矩阵 A 不是一个方阵或者是一个奇异的方阵,该方程仍然可能有解。但是我们不能使用矩阵逆去求解。

范数

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

严格地说,范数是满足下列性质的任意函数:

当 p = 2 时, L2 范数被称为 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x 确定的点的欧几里得距离。 L2 范数在机器学习中出现地十分频繁,经常简化表示为 ∥x∥,略去了下标 2。平方 L2 范数也经常用来衡量向量的大小,可以简单地通过点积 x⊤x 计算平方 L2 范数在数学和计算上都比 L2 范数本身更方便。例如,平方 L2 范数对x 中每个元素的导数只取决于对应的元素,而 L2 范数对每个元素的导数却和整个向量相关。但是在很多情况下,平方 L2 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数: L1 范数。 L1 范数可以简化如下:

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

有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种函数称为 “L0 范数’’,但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数,因为对向量缩放 α 倍不会改变该向量非零元素的数目。因此, L1 范数经常作为表示非零元素数目的替代函数。另外一个经常在机器学习中出现的范数是 L1 范数,也被称为 最大范数(maxnorm)。这个范数表示向量中具有最大幅值的元素的绝对值:

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

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180421A1FOOE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券