机器学习中的线性代数

作者&投稿:策雄 (若有异议请与网页底部的电邮联系)
机器学习中的线性代数
线性代数作为数学中的一个重要的分支,广发应用在科学与工程中。掌握好线性代数对于理解和从事机器学习算法相关的工作是很有必要的,尤其是对于深度学习而言。因此,在开始介绍深度学习之前,先集中探讨一些必备的线性代数知识。
2.1 标量,向量,矩阵和张量
标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如s∈R
.
向量(vector):一个向量是一列数,我们用粗体的小写名称表示向量。比如x
,将向量x
写成方括号包含的纵柱:
x=??????x1x2?xn??????

矩阵(matrix):矩阵是二维数组,我们通常赋予矩阵粗体大写变量名称,比如A。如果一个矩阵高度是m,宽度是n,那么说A∈Rm×n。一个矩阵可以表示如下:
A=[x11x21x12x22]

张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用A表示,如张量中坐标为(i,j,k)的元素记作Ai,j,k。
转置(transpose):矩阵的转置是以对角线为轴的镜像,这条从左上角到右下角的对角线称为主对角线(main diagonal)。将矩阵A
的转置表示为A?
。定义如下:
(A?)i,j=Aj,i
A=???x11x21x31x12x22x32????A?=[x11x21x21x22x31x32]
2.2 矩阵和向量相乘
矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵A
和B的矩阵乘积(matrix product)是第三个矩阵C。矩阵乘法中A的列必须和B的行数相同。即如果矩阵A的形状是m×n,矩阵B的形状是n×p,那么矩阵C的形状就是m×p
。即
C=A×B

具体的地,其中的乘法操作定义为
Ci,j=∑kAi,kBk,j

矩阵乘积服从分配律
A(B+C)=AB+AC

矩阵乘积也服从结合律
A(BC)=(AB)C

注意:矩阵乘积没有交换律
点积(dot product)两个相同维数的向量x
和y的点积可看作是矩阵乘积x?y
矩阵乘积的转置
(AB)?=B?A?

利用向量的乘积是标量,标量的转置是自身的事实,我们可以证明(10)式:
x?y=(x?y)?=y?x

线性方程组
Ax=b
2.3 单位矩阵和逆矩阵
线性代数中提供了矩阵逆(matrix inverse)的工具,使得我们能够解析地求解(11)中的A
.
单位矩阵(identity matrix):任意向量与单位矩阵相乘都不会改变。我们将保持n
维向量不变地单位矩阵记作为In,形式上In∈Rn×n

?x∈Rn,Inx=x

矩阵A的矩阵逆被记作A?1,被定义为如下形式:
A?1A=AA?1=In

(11)式方程组的求解:
Ax=bA?1Ax=A?1bInx=A?1bx=A?1b
方程组的解取决于能否找到一个逆矩阵A?1。接下来讨论逆矩阵A?1的存在的条件。
2.4 线性相关和生成子空间
如果逆矩阵A?1
存在,那么(11)式肯定对于每一个向量b恰好存在一个解。分析方程有多少个解,我们可以看成是A
的列向量的线性组合(linear combination)。
Ax=∑ixiA:,i

形式上,某个集合中向量的线性组合,是指每个向量乘以对应系数之后的和,即
∑iciv(i)

一组向量的生成空间(span)是原始向量线性组合后所能抵达的点的集合。
线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关。
要想使矩阵可逆,首先必须矩阵是一个方阵(square),即m=n
,其次,所有的列向量都是线性无关的。
一个列向量线性相关的方阵被称为奇异的(singular)。
2.5 范数
有时候我们需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量矩阵大小,形式上,Lp
范数如下:
||x||p=(∑i|xi|p)12

其中p∈R,p≥1。
范数是将向量映射到非负值的函数。直观上来说,向量x
的范数就是衡量从原点到x
的举例。更严格来说,范数满足下列性质的函数:
f(x)=0?x=0

f(x+y)≤f(x)+f(y)
?α∈R,f(αx)=|α|f(x)

当p=2
时,L2被称作欧几里得范数(Euclidean norm)。它表示从原点出发到向量x确定的点的欧几里得距离。平方L2范数常被用来衡量向量的大小,因为它便于求导计算(如对向量中每个元素的导数只取决于对应的元素,但是它也有缺陷,即它在原点附近增长得十分缓慢),可以简单用点积x?x
来计算。
max 范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用L∞
范数表示,期形式为:
||x||∞=∑(i,j)A2i,j??????√
两个向量的点积(dot product)也可以用范数来表示。具体地,

x?y=||x||2||y||2cosθ
2.6 特殊类型的矩阵和向量
对角矩阵(diagonal matrix)只在主对角线上含有非零元素,其它位置都是零。矩阵D
是对角矩阵,当且仅当?i≠j,Di,j=0,用diag(v)表示一个对角元素由向量v
中元素给定的对角矩阵。
对称(symmetric) 矩阵是任意转置和自己相等的矩阵:
A=A?
即在矩阵A中,有Ai,j=Aj,i。
单位向量(unit vector)是具有单位范数(unit norm)的向量:
||x||2=1
如果x?y=0,那么向量x和向量y互相正交(orthogonal)。如果两个向量都有非零范数,那么表示这两个向量之间的夹角是90 度。在Rn中,至多有n个范数非零向量互相正交。如果这些向量不仅互相正交,并且范数都为1,那么我们称它们是标准正交(orthonormal)。
正交矩阵(orthonormal matrix)是指行向量是标准正交的,列向量是标准正交的方阵:
A?A=AA?=I
这意味着
A?1=A?

所以正交矩阵受到关注是因为求逆计算代价小。需要注意正交矩阵的定义。反直觉地,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵没有对应的专有术语。
2.7 特征分解
许多数学对象可以通过将它们分解成多个组成部分,或者找到它们的一些属性而被更好地理解,这些属性是通用的,而不是由我们选择表示它们的方式引起的。就像我们可以通过分解质因数来发现一些关于整数的真实性质,我们也可以通过分解矩阵来获取一些矩阵表示成数组元素时不明显的函数性质。
特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。
方阵A
的特征向量(eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v

Av=λv
标量λ被称为这个特征向量对应的特征值(eigenvalue)。
如果v
是A的特征向量,那么任何放缩后的向量sv(s∈R,s≠0)也是A
的特征向量并且其与bf v 有相同的特征值。所以我们通常只考虑单位特征向量。
假设矩阵A
有n个线性无关的特征向量{v(1),v(2),...,v(n)},对应着的特征值{λ1,λ2,...,λn}
,我们将特征向量连成一个矩阵,使得每一列是一个特征向量:
V=[v(1),v(2),...,v(n)]
类似地,特征值连成一个向量:
λ=[λ1,λ2,...,λn]?
因此bf A 的特征分解(eigendecomposition)可以记作:
A=Vdiag(λ)V?1
上面我们构建具体特定的特征值和特征向量,能够使我们在目标方向上延伸空间。我们也常常希望将矩阵分解(decompose)成特征值和特征向量。这样可以帮助我们分析矩阵的特定性质,就像质因数分解有助于我们理解整数。
不是每一个矩阵都可以分解成特征值和特征向量,在某些情况下,特征分解会涉及到复数,而非实数。在本书的机器学习学习中,我们只讨论一类简单分解的矩阵。具体就是,每个实对称矩阵都可以分解为实特征向量和实特征值:
A=QΛQ?
其中Q是A的特征向量组成的正交矩阵,Λ是对角矩阵。特征值Λi,i对应的特征向量是矩阵Q的第i列,记作Q:,i。因为Q是正交矩阵,所以可以将A看作是沿方向v(i)延展λi倍的空间。如下图所示:
2.8 迹运算
迹运算返回的是矩阵对角元素的和:
Tr(A)=∑iAi,i
迹运算因为很多原因而受到关注。若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号,可以进行清楚地表示。例如,迹运算提供了另一种描述矩阵Frobenius 范数的方式:
||A||F=Tr(AA?)????????√
用迹运算表示式,使我们可以用很多有用的性质来操纵表示式。例如迹运算在转置下是不变的:
Tr(A)=Tr(A?)
多个矩阵乘积的迹还满足链式规律,即:
Tr(ABC)=Tr(BCA)=Tr(CAB)

标量的迹是它本身:a=Tr(a)。
2.9 行列式
行列式,记作det(A)
,是一个将方阵A
映射到实数的函数。行列式等于矩阵特征值的乘积。行列式的绝对值可以被认为是衡量矩阵相乘后空间扩大或者缩小了多少。如果行列式是0, 那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是1, 那么矩阵相乘没有改变空间体积。
总结
以上是在机器学习过程中必须了解和掌握的有关线性代数的知识

~

人工智能基础-算法工程师为什么要懂线性代数?
答:在大学数学学科中,线性代数是最为抽象的一门课,从初等数学到线性代数的思维跨度比微积分和概率统计要大得多。很多人学过以后一直停留在知其然不知其所以然的阶段,若干年之后接触图形编程或机器学习等领域才发现线性代数的应用无处不在,但又苦于不能很好地理解和掌握。的确,多数人很容易理解初等数学的各种概念,函数...

线性代数在计算机学科上到底有什么应用?
答:线性代数在计算机学科上的应用:计算机数学基础是计算机专业必修的数学基础知识,针对计算机专业的特点,加强了Mathematica数学软件的应用。包含4大模块:微积分、线性代数、概率论。计算机图形学、计算机辅助设计、密码学、虚拟现实等技术无不以线性代数为其理论和算法基础的一部分。随着科学的发展,不仅要研究单...

为什么自动化要学习线性代数?
答:分析多输入多输出情况,就得用矩阵。线性代数、矩阵理论,在线性系统领域应用很广泛;尤其是自动化、通信专业,电气强电领域电力系统,电机学里面的帕克方程,电力电子PWM的矢量控制,都基于线性代数的非线性方程组。电气自动化用于工业控制系统,例如一条设备怎样运行才能保证它能正常生产出合格的产品,现代工...

学计算机专业要学习哪些课程啊???
答:课程的主要内容:线性代数、概率基础、数理统计基础等。 2. 计算机电路基础 (1) 本课程4学分,课内学时72,其中实验18学时,开设一学期。 本课程是计算机应用专业的专业基础课。主要内容包括:电路基本概念(电路与电路模 型、电路基本物理量、电路基本元件、基尔霍夫定律、简单的电阻电路),半导体基本器件 ;开关理论基础,...

如何使用线性代数求解器来计算矩阵的秩?
答:1.首先,将矩阵输入到线性代数求解器中。这可以通过手动输入矩阵的元素或者从文件中导入矩阵来完成。2.确定矩阵的类型。线性代数求解器通常支持不同类型的矩阵,如方阵、对称矩阵、正交矩阵等。根据矩阵的类型,选择相应的选项或参数。3.选择计算矩阵秩的方法。线性代数求解器通常提供了多种计算矩阵秩的方法...

人工智能需要学习哪些课程?
答:学习内容包括数学基础、算法积累以及编程语言。数学要学好高数、线性代数、概率论、离散数学等等内容,算法积累需要学会人工神经网络、遗传算法等等,还需要学习一门编程语言,通过编程语言实现算法,还可以学习一下电算类的硬件基础内容。2、人工智能专业应用领域 应用领域是很广泛的,主要有图像识别、博弈论、...

想要学习人工神经网络,需要什么样的基础知识?
答:最基础的部分的话需要:线性代数,机器学习,微积分,优化等等。几乎所有操作都有矩阵运算,所以至少最基础的线性代数需要掌握 建议从单一的感知机Perceptron出发,继而认识到Decision Boundary(判别边界),以及最简单的一些“监督训练”的概念等,有机器学习的基础最好。就结果而言,诸如“过拟合”之类的概念,...

学人工智能要学些什么?
答:、数学基础。数学基础知识蕴含着处理智能问题的基本思想与方法,也是理解复杂算法的必备要素。这一模块覆盖了人工智能必备的数学基础知识,包括线性代数、概率论、最优化方法等。2、机器学习。机器学习的作用是从数据中习得学习算法,进而解决实际的应用问题,是人工智能的核心内容之一。这一模块覆盖了机器学习...

学习飞行器控制与信息工程必须要知道哪些事情?
答:学习飞行器控制与信息工程,首先需要了解以下几个方面的知识:1.基础理论知识:包括高等数学、线性代数、概率论与数理统计、复变函数与积分变换等。这些知识是学习飞行器控制与信息工程的基础,为后续的学习和实践打下坚实的基础。2.飞行器动力学与控制理论:这是飞行器控制与信息工程的核心内容,包括飞行器...

懂公式编辑器的朋友进来吧 线性代数问题 跪谢
答:INsertEqution——》在请输入快捷键文本框中输入——》你需要的快捷键——》比如ctr+ALT+E,那么直接同时摁住这三个键——》点击左下角的 指定按钮——》关闭 即可 以后直接使用ctr+ALT+E就可以打开了公式编辑器 其他方法就是直接将公式编辑器连接方式 拖放到工具栏 就可以直接使用了 ...