前面大概有2年时间,利用业余时间断断续续写了一个机器学习方法系列,和深度学习方法系列,还有一个三十分钟理解系列(一些趣味知识);新的一年开始了,今年给自己定的学习目标——以补齐基础理论为重点,研究一些基础课题;同时逐步继续写上述三个系列的文章。

最近越来越多的研究工作聚焦研究多层神经网络的原理,本质,我相信深度学习并不是无法掌控的“炼金术”,而是真真实实有理论保证的理论体系;

本篇打算摘录整理一些最最基本的数据知识,包括线性代数,矩阵求导,凸函数等,一方面便于自己平时查用,一方面也给读者想入门的有一个初步的介绍。

1.线性代数

线性代数作为数学中的一个重要的分支,我感觉是一般人学习机器学习或者深度学习算法的必备知识,作为博主这样的CS出身的工科生,学了线性代数、微积分、概率论这些基础课程,平时也就够用了,再复杂的一些数学分支涉及的很少。(这一部分摘录自[1],加上我自己的一些理解)

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

  • 标量(scalar):一个标量就是一个单独的数。用斜体表示标量,如 sRs∈R 。一个矩阵可以表示如下:

A=[x11x21x12x22]A=[x11x12x21x22]
  • 张量(tensor):某些情况下,我们会讨论不止维坐标的数组。如果一组数组中的元素分布在若干维坐标的规则网络中,就将其称为张量。用A​ 表示,如张量中坐标为(i,j,k)​的元素记作Ai,j,kAi,j,k

A=x11x21x31x12x22x32A=[x11x21x21x22x31x32]A=[x11x12x21x22x31x32]⟹A⊤=[x11x21x31x21x22x32]

1.2 矩阵和向量相乘

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

C=A×BC=A×B具体的地,其中的乘法操作定义为

Ci,j=kAi,kBk,jCi,j=∑kAi,kBk,j矩阵乘积服从分配律,结合律,但是矩阵乘法没有交换律,

A(B+C)=AB+ACA(BC)=(AB)CABBAA(B+C)=AB+ACA(BC)=(AB)CAB≠BA
  • 点积(dot product)两个相同维数的向量x和y的点积可看作是矩阵乘积 xTyxTy

1.3 单位矩阵和逆矩阵
矩阵A的矩阵逆被记作 A1A−1
线性无关(linearly independent): 如果一组向量中的任意一个向量都不能表示成其他向量的线性组合,那么这组向量被称之为线性无关。要想使矩阵可逆,首先必须矩阵是一个方阵(square),即 m=n,其次,所有的列向量都是线性无关的。一个列向量线性相关的方阵被称为 奇异的(singular)。

1.4 范数
需要衡量一个向量的大小,在机器学习中,我们使用称为范数(norm)的函数来衡量向量大小,形式上, LpLp来计算。

当p=1时,称为L1范数,是向量元素绝对值之和;

当p=0时,上面的定义没有包含,称为0范数,定义为向量非零元素的数量

max范数(max norm):这个范数表示向量中具有最大幅度得元素的绝对值,用LL∞
矩阵的范数(matrix norm)具体请参考[6],最常用的就是 Frobenius norm

||A||F=(ij|aij|2)1/2||A||F=(∑i∑j|aij|2)1/2

1.5 特殊类型的矩阵和向量

  • 对角矩阵 (diagonal matrix) 只在主对角线上含有非零元素,其它位置都是零。矩阵D是对角矩阵,当且仅当 ∀i≠j,Di,j=0,用 diag(v)表示一个对角元素由向量v中元素给定的对角矩。对称(symmetric) 矩阵是任意转置和自己相等的矩阵: A=AA=A⊤
    所以正交矩阵受到关注是因为求逆计算代价小。

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

特征分解(eigendecomposition) 是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。方阵A的特征向量(eigenvector)是指与A相乘后相当于对该向量进行缩放的非零向量v:

Av=λvAv=λv

标量λ被称为这个特征向量对应的特征值(eigenvalue);如果v是A的特征向量,那么任何放缩后的向量sv,sR,s0sv,s∈R,s≠0 有相同的特征值。所以我们通常只考虑单位特征向量。

假设矩阵A有n个线性无关的特征向量{v1,v2,...,vn}{v1,v2,...,vn},我们将特征向量连成一个矩阵,使得每一列是一个特征向量:

V={v1,v2,...,vn}V={v1,v2,...,vn}

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

并不是所有的方阵都可以被对角化,这里主要考虑对称矩阵(A=ATA=AT

A=VΛVT=[v1,v2,,vn]λ1λnvT1vT2vTn=i=1nλivivTiA=VΛVT=[v1,v2,⋯,vn][λ1⋱λn][v1Tv2T⋮vnT]=∑i=1nλiviviT

其中V是A的特征向量组成的正交矩阵,Λ是对角矩阵。因为V是正交矩阵,所以可以将A看作是沿方向vivi倍的空间。如下图所示:
深度学习/机器学习入门基础数学知识整理(一):线性代数基础,矩阵,范数等-LMLPHP

1.7 矩阵的迹
矩阵的迹定义是矩阵对角元素的和:

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

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

用迹运算表示式,使我们可以用很多有用的性质来操纵表示式。例如迹运算在转置下是不变的:

10-05 12:39