目录
线性代数
范数
⼀个向量的范数告诉我们⼀个向量有多⼤。这⾥考虑的⼤⼩(size)概念不涉及维度,⽽是分量的⼤⼩
在线性代数中,向量范数是将向量映射到标量的函数f。给定任意向量x,向量范数要满⾜⼀些属性。第⼀个性质是:如果我们按常数因⼦α缩放向量的所有元素,其范数也会按相同常数因⼦的绝对值缩放:
最后⼀个性质要求范数最⼩为0,当且仅当向量全由0组成。
范数是将向量映射到非负值的函数。直观上来说,向量 x的范数衡量从原点到点 x 的距离。
L2
当p=2时,L2 范数称为欧几里得范数 (Euclidean norm),它表示从原点出发到向量 x 确定的点的欧几里得距离。
为了方便计算, 我们也常常用 L2 norm的平方,可计算为向量转置与自身的乘积 xTx 。平方L2 范数在数学和计算上都比L2 范数本身更方便。例如,平方L2 范数对 x 中每个元素的导数只取决于对应的元素,而L2 范数对每个元素的导数和整个向量相关。
pytorch中:torch.norm(u) u是一个向量
L1
但是在很多情况下,平方L2 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数:L1 范数
当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用L1范数。每当 x 中某个元素从0增加ε ,对应的L1 范数也会增加ε。L1 范数经常作为表示非零元素数目的替代函数
L2范数对权重向量的⼤分量施加了巨⼤的惩罚,这使得我们的学习算法偏向于在⼤量特征上均匀分布权重的模型。在实践中,这可能使它们对单个变量中的观测误差更为稳定。相⽐之下, L1惩罚会导致模型将权重集中在⼀⼩部分特征上,⽽将其他权重清除为零。这称为特征选择(feature selection),这可能是其他场景下需要。
比如我们常常想减小模型非零变量的数量以防止过拟合,也就是很多变量变为零,而将大部分权重放在某些有意义的变量上,这时候由于L2 在变量接近零时跟随的改变较小,会出现很多趋近于零而不为零的变量,而 L1 norm由于跟随于每个变量的变动是恒定的,使得零元素和非零但趋近于零的变量仍对该项有显著贡献,在目标是减小这一项的过程中会使很多变量归零(注意是归零而不仅仅是较小接近零),从而更有效的减少过拟合。
pytorch中:torch.abs(u).sum() u是一个向量
Frobenius范数
有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数 (Frobenius norm),类似于向量的L2 范数。Frobenius范数满⾜向量范数的所有性质
torch.norm(u) u是一个矩阵
特殊类型的矩阵和向量
对角矩阵 (diagonal matrix)只在主对角线上含有非零元素,其他位置都是零。用diag(ν)表示对角元素由向量ν中元素给定的一个对角方阵。并非所有的对角矩阵都是方阵。长方形的矩阵也有可能是对角矩阵。
对称 (symmetric)矩阵是转置和自己相等的矩阵
单位向量 (unit vector)是具有单位范数 (unit norm)的向量。 L2norm等于1
正交矩阵 (orthogonal matrix)指行向量和列向量是分别标准正交的方阵,即转置与它自身的矩阵乘积是单位矩阵
特征分解eigendecomposition
方阵 A 的特征向量 (eigenvector)是指与 A 相乘后相当于对该向量进行缩放的非零向量ν:
其中标量λ称为这个特征向量对应的特征值 (eigenvalue)
如果ν是A的特征向量,那么任何缩放后的向量也是A的特征向量。此外,sν和ν有相同的特征值。基于这个原因,通常我们只考虑单位特征向量
假设我们将矩阵A的所有特征向量连成一个矩阵V: V=[v(1),...,v(n)] ,而对应特征值连成一个向量 λ=[λ1,...,λn]T ,那么矩阵A就可以表示为它的特征分解形式:
将矩阵分解 (decompose)成特征值和特征向量,可以帮助我们分析矩阵的特定性质。
左图是一族单位向量,并且标出了矩阵A的特征向量v1和v2。将矩阵A和这些单位向量相乘,得到的向量族如右图。矩阵A实际上是将空间在其特征向量的方向上各自拉伸了对应的特征值(λ)的尺度
不是每一个矩阵都可以分解成特征值和特征向量。我们通常只需要分解一类有简单分解的矩阵。具体来讲,每个实对称矩阵都可以分解成实特征向量(正交矩阵)和实特征值
奇异值分解SVD
奇异值分解