第二章 机器学习中的线性代数知识

线性代数作为数学中的一个重要的分支,广发应用在科学与工程中。掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言。因此,在开始介绍深度学习之前,先集中探讨一些必备的线性代数知识。

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

标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如 s∈Rs \in R.

向量(vector):一个向量是一列数,我们用粗体的小写名称表示向量。比如 x\bf x,将向量x\bf x 写成方括号包含的纵柱:

x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥

{\bf x}= \begin {bmatrix} x_1\\x_2\\ \vdots \\x_n\\ \end{bmatrix}
矩阵(matrix):矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如 A​\bf A​ 。如果一个矩阵高度是 m​m​,宽度是 n​n​,那么说 A∈Rm×n​\bf A\in \bf R ^{m \times n}​ 。一个矩阵可以表示如下:

A=[x11x21x12x22]

{\bf A}= \begin{bmatrix} x_{11} &x_{12}\\ x_{21} & x_{22}\\ \end{bmatrix}
张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用 A​\bf A​ 表示,如张量中坐标为 (i,j,k)​(i,j,k)​的元素记作 Ai,j,k​{\bf A}_{i,j,k}​。

转置(transpose):矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。将矩阵A\bf A的转置表示为A⊤{\bf A^\top}。定义如下:

(A⊤)i,j=Aj,i

({\bf A^\top})_{i,j}=\bf A_{j,i}

A=⎡⎣⎢x11x21x31x12x22x32⎤⎦⎥⟹A⊤=[x11x21x21x22x31x32]

{\bf A} = \begin{bmatrix} x_{11} &x_{12}\\ x_{21} & x_{22}\\ x_{31} & x_{32} \end{bmatrix} \implies {\bf A^\top}= \begin{bmatrix} x_{11} &x_{21}&x_{31} \\ x_{21} & x_{22}& x_{32} \end{bmatrix}

2.2 矩阵和向量相乘

矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵A\bf A和B\bf B 的矩阵乘积(matrix product)是第三个矩阵C\bf C 。矩阵乘法中A\bf A 的列必须和 B\bf B 的行数相同。即如果矩阵 A\bf A 的形状是 m×nm \times n ,矩阵 B\bf B 的形状是 n×pn \times p ,那么矩阵 C\bf C 的形状就是 m×pm \times p 。即

C=A×B

\bf C = \bf A \times \bf B
具体的地,其中的乘法操作定义为

Ci,j=∑kAi,kBk,j

{\bf C}_{i,j} = \sum_k {\bf A}_{i,k} {\bf B}_{k,j}
矩阵乘积服从 分配律

A(B+C)=AB+AC

\bf A(B + C) = \bf AB+AC
矩阵乘积也服从 结合律

A(BC)=(AB)C

\bf A(BC) = (AB)C
注意:矩阵乘积没有交换律

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

矩阵乘积的转置

(AB)⊤=B⊤A⊤

(\bf AB)\top = B \top A\top
利用向量的乘积是标量,标量的转置是自身的事实,我们可以证明(10)式:

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

\bf x \top y = (x\top y)\top = y\top x
线性方程组

Ax=b

\bf Ax = b

2.3 单位矩阵和逆矩阵

线性代数中提供了 矩阵逆(matrix inverse) 的工具,使得我们能够解析地求解(11)中的 A\bf A.

单位矩阵(identity matrix):任意向量与单位矩阵相乘都不会改变。我们将保持 nn 维向量不变地单位矩阵记作为 In\bf I_n ,形式上 In∈Rn×n\bf I_n \in \Bbb R ^{n\times n} ,

∀x∈Rn,Inx=x

\forall \bf x \in \Bbb R^n, \bf I_nx=x
矩阵 A\bf A 的矩阵逆被记作 A−1\bf A^{-1} ,被定义为如下形式:

A−1A=AA−1=In

\bf A^{-1}A=AA^{-1}=I_n
(11)式方程组的求解:

Ax=bA−1Ax=A−1bInx=A−1bx=A−1b

\bf Ax = b \\ A^{-1}Ax = A^{-1}b \\ I_n x=A^{-1}b \\ x = A^{-1}b
方程组的解取决于能否找到一个逆矩阵 A−1\bf A^{-1} 。接下来讨论逆矩阵 A−1\bf A^{-1} 的存在的条件。

2.4 线性相关和生成子空间

如果逆矩阵 A−1\bf A^{-1} 存在,那么(11)式肯定对于每一个向量 b\bf b 恰好存在一个解。分析方程有多少个解,我们可以看成是 A\bf A 的列向量的 线性组合(linear combination)

Ax=∑ixiA:,i

{\bf Ax} = \sum_i x_i {\bf A}_{:,i}
形式上,某个集合中向量的线性组合,是指每个向量乘以对应系数之后的和,即

∑iciv(i)

\sum_i c_i {\bf v}^{(i)}
一组向量的 生成空间(span) 是原始向量线性组合后所能抵达的点的集合。

线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关

要想使矩阵可逆,首先必须矩阵是一个方阵(square),即 m=nm=n ,其次,所有的列向量都是线性无关的。

一个列向量线性相关的方阵被称为 奇异的(singular)

2.5 范数

有时候我们需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量矩阵大小,形式上, LpL^p 范数如下:

||x||p=(∑i|xi|p)12

||{\bf x}||_p = (\sum_i |x_i|^p)^\frac{1}{2}
其中 p∈R,p≥1​p \in \Bbb R, p \geq 1​。

范数是将向量映射到非负值的函数。直观上来说,向量 x\bf x 的范数就是衡量从原点到 x\bf x 的举例。更严格来说,范数满足下列性质的函数:

  • f(x)=0⟹x=0{\bf f(x)}=0 \implies {\bf x} =0
  • f(x+y)≤f(x)+f(y){\bf f(x+y)} \leq {\bf f(x)} + {\bf f(y)}
  • ∀α∈R,f(αx)=|α|f(x)\forall \alpha \in \Bbb R, \bf f(\alpha {\bf x}) = |\alpha|f({\bf x})

当 p=2p=2 时, L2L^2 被称作 欧几里得范数(Euclidean norm)。它表示从原点出发到向量 x\bf x 确定的点的欧几里得距离。平方 L2L^2 范数常被用来衡量向量的大小,因为它便于求导计算(如对向量中每个元素的导数只取决于对应的元素,但是它也有缺陷,即它在原点附近增长得十分缓慢),可以简单用点积 x⊤x \bf x \top x 来计算。

max 范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用 L∞L^\infty 范数表示,期形式为:

||x||∞=∑(i,j)A2i,j−−−−−−√

||{\bf x}||_\infty = \sqrt {\sum_{(i,j)} {\bf A}^ 2_{i,j}}
两个向量的 点积(dot product)也可以用范数来表示。具体地,

x⊤y=||x||2||y||2cosθ

\bf x \top y = ||x||_2||y||_2 \cos \theta

2.6 特殊类型的矩阵和向量

对角矩阵(diagonal matrix) 只在主对角线上含有非零元素,其它位置都是零。矩阵 D\bf D 是对角矩阵,当且仅当 ∀i≠j,Di,j=0\forall i \neq j, {\bf D}_{i,j} = 0 ,用 diag(v)diag(\bf v) 表示一个对角元素由向量 v\bf v 中元素给定的对角矩阵。

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

A=A⊤

\bf A = A^ \top
即在矩阵 A\bf A 中,有 Ai,j=Aj,i{\bf A}_{i,j}={\bf A}_{j,i} 。

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

||x||2=1

||{\bf x}||_2 = 1
如果 x⊤y=0{\bf x \top y } = 0 ,那么向量 x\bf x 和向量 y\bf y 互相 正交(orthogonal)。如果两个向量都有非零范数,那么表示这两个向量之间的夹角是90 度。在 Rn\Bbb R^n 中,至多有 nn 个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal)

正交矩阵(orthonormal matrix) 是指行向量是标准正交的,列向量是标准正交的方阵:

A⊤A=AA⊤=I

\bf A^ \top A = A A^\top = I
这意味着

A−1=A⊤

\bf A^{-1} = A^\top
所以正交矩阵受到关注是因为求逆计算代价小。需要注意正交矩阵的定义。反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。

2.7 特征分解

许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而被更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。就像我们可以通过分解质因数来发现一些关于整数的真实性质,我们也可以通过分解矩阵来获取一些矩阵表示成数组元素时不明显的函数性质。

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

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

Av=λv

\bf Av=\lambda v
标量 λ\lambda被称为这个特征向量对应的 特征值(eigenvalue)

如果v\bf v 是A\bf A 的特征向量,那么任何放缩后的向量 sv(s∈R,s≠0){\bf sv} (s \in \Bbb R,s \neq 0) 也是A\bf A 的特征向量并且其与\bf v 有相同的特征值。所以我们通常只考虑单位特征向量

假设矩阵A\bf A 有nn个线性无关的特征向量 {v(1),v(2),...,v(n)}\{{\bf v}^{(1)},{\bf v}^{(2)},...,{\bf v}^{(n)}\} ,对应着的特征值 {λ1,λ2,...,λn}\{\bf \lambda_1, \lambda_2, ...,\lambda_n\} ,我们将特征向量连成一个矩阵,使得每一列是一个特征向量:

V=[v(1),v(2),...,v(n)]

\bf V =[{\bf v}^{(1)},{\bf v}^{(2)},...,{\bf v}^{(n)}]
类似地,特征值连成一个向量:

λ=[λ1,λ2,...,λn]⊤

\bf \lambda = [\bf \lambda_1, \lambda_2, ...,\lambda_n]^\top
因此\bf A 的特征分解(eigendecomposition)可以记作:

A=Vdiag(λ)V−1

{\bf A = V}diag({\bf \lambda}){\bf V}^{-1}
上面我们构建具体特定的特征值和特征向量,能够使我们在目标方向上延伸空间。我们也常常希望将矩阵 分解(decompose) 成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。

不是每一个矩阵都可以分解成特征值和特征向量,在某些情况下,特征分解会涉及到复数,而非实数。在本书的机器学习学习中,我们只讨论一类简单分解的矩阵。具体就是,每个实对称矩阵都可以分解为实特征向量和实特征值:

A=QΛQ⊤

\bf A = Q \Lambda Q\top
其中 Q\bf Q 是 A\bf A 的特征向量组成的正交矩阵, Λ\Lambda 是对角矩阵。特征值 Λi,i{\bf \Lambda}_{i,i} 对应的特征向量是矩阵 Q\bf Q 的第 ii列,记作 Q:,i{\bf Q}_{:,i} 。因为 Q\bf Q 是正交矩阵,所以可以将 A\bf A 看作是沿方向 v(i){\bf v}^{(i)} 延展 λi{\bf \lambda}_i 倍的空间。如下图所示:

2.8 迹运算

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

Tr(A)=∑iAi,i

Tr({\bf A}) = \sum_i {\bf A}_{i,i}
迹运算因为很多原因而受到关注。若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以进行清楚地表示。例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式:

||A||F=Tr(AA⊤)−−−−−−−−√

||{\bf A}||_F = \sqrt {Tr(\bf AA^\top)}
用迹运算表示式,使我们可以用很多有用的性质来操纵表示式。例如迹运算在转置下是不变的:

Tr(A)=Tr(A⊤)

Tr(\bf A) = Tr(\bf A^\top)
多个矩阵乘积的迹还满足链式规律,即:

Tr(ABC)=Tr(BCA)=Tr(CAB)

Tr(\bf ABC) = Tr(BCA) =Tr(CAB)
标量的迹是它本身: a=Tr(a)a = Tr(a) 。

2.9 行列式

行列式,记作det(A)det(\bf A),是一个将方阵A\bf A 映射到实数的函数。行列式等于矩阵特征值的乘积。行列式的绝对值可以被认为是衡量矩阵相乘后空间扩大或者缩小了多少。如果行列式是0, 那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是1, 那么矩阵相乘没有改变空间体积。

总结

以上是在机器学习过程中必须了解和掌握的有关线性代数的知识,关于线性代数在机器学习中应用较多的矩阵求导部分,将在下篇文章中阐述。

机器学习中的线性代数相关推荐

  1. 机器学习中的线性代数之矩阵求导

    前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...

  2. 机器学习中的线性代数知识(中)

    关于作者 作者小硕一枚,研究方向为机器学习与自然语言处理,欢迎大家关注我的个人博客https://wangjie-users.github.io/,相互交流,一起学习成长. 前言 在机器学习中的线性代 ...

  3. 10个例子带你了解机器学习中的线性代数

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自:机器之心 本文介绍了 10 个常见机器学习案例,这些案例需要 ...

  4. 初学者 | 10个例子带你了解机器学习中的线性代数

    选自 | machinelearningmastery 作者 | Jason Brownlee 编译 | 机器之心   参与 | 张倩.刘晓坤 本文介绍了 10 个常见机器学习案例,这些案例需要用线性 ...

  5. 矩阵分析理论在实际工程中的应用_机器学习中的线性代数

    [妹子说]上一篇文章中讲了如何打好机器学习中的概率统计基础,那今天就再来说说线性代数的学习路径和思路吧. 没问题. 线性代数作为利用空间来投射和表征数据的基本工具,可以方便的对数据进行各种变换,从而让 ...

  6. 读懂系列 | 10个例子带你了解机器学习中的线性代数

    (给机器学习算法与Python学习加星标,提升AI技能) 选自machinelearningmastery 作者:Jason Brownlee 编译:机器之心(almosthuman2014) 原文: ...

  7. 机器学习中的线性代数知识(上)

    关于作者 作者小硕一枚,研究方向为机器学习与自然语言处理,欢迎大家关注我的个人博客https://wangjie-users.github.io/,相互交流,一起学习成长. 前言 As all we ...

  8. Spark 机器学习中的线性代数库

    文章目录 1. DenseVector.SparseVector 2. DenseMatrix 3. SparseMatrix 4. Vector 运算 5. 矩阵运算 6. RowMatrix 7. ...

  9. 吴恩达机器学习学习笔记第三章:机器学习中的线性代数

    线性代数在python中的实现已经在第六章谈到,这里关于线性代数的理论基础 给大家分享几个知乎上解释线性代数讲的很生动形象的回答和文章 矩阵乘法的本质是什么? - 张一苇的回答 - 知乎 矩阵乘法的本 ...

最新文章

  1. 科学:螳螂虾大脑拥有记忆和学习中心
  2. POJ 1679 - The Unique MST(次小生成树)
  3. 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇
  4. 自己也遇到了-db_recovery_file_dest_size 修改大一点
  5. 地理(GIS)教学神器:气象地球生成器
  6. stm32f103移植到f0_STM32F042替换STM32F103
  7. A8U推一键上面洗车APP软件
  8. Git——版本回退【git reset / git log / git reflog】
  9. M1芯片电脑SVN安装
  10. pdf如何去除保护限制,pdf复制打印限制怎么解除?
  11. 关于React Hooks使用
  12. 宝塔php伪静态规则,宝塔BT面板伪静态规则大全汇总
  13. 毕业论文设置奇偶页页眉不同时,目录页也出现页眉,解决办法
  14. [数据库笔记] SQL50题11 - 30
  15. 计算机组成原理 模拟机,面向计算机组成原理数学的MML模拟器
  16. Python中通过property实现属性的修改、删除、查看
  17. 华为服务器批量修改bmc地址,华为服务器批量修改bmc地址
  18. 程序员如何轻松又愉快的学好英语
  19. Windows批处理文件中相当于NEQ、LSS、GTR等的符号
  20. C语言文件读取错误怎么解决,c语言中文件随机读取出错如何解决

热门文章

  1. c++中虚函数的作用(virtual)
  2. 用jquery实现换肤的效果
  3. 一键复制多个文件夹内的文件到同一文件夹中
  4. 苹果底层开发语言C语言,IOS开发语言Object-C与C语言之间的对比
  5. 移动APP后端网络处理一些问题记录
  6. 3d效果之旋转的球形
  7. 千纸鹤多边形建模Max教程----作者: vincent整理 来源: cgblog
  8. SD Card 驱动流程分析
  9. Node.js Git Server搭建及Git常用操作笔记
  10. 【vps】如何在vps上安装mirai机器人?