深度学习第二章 线性代数简介
深度学习中的线性代数核心概念与实践
摘要: 线性代数是深度学习领域不可或缺的数学基础。本文旨在从实战角度,系统梳理标量、向量、矩阵、张量等基本概念,深入探讨矩阵运算的核心机制,并通过单位矩阵、逆矩阵、线性相关性等高级主题,解析其在理解模型内部工作原理及优化算法中的关键作用。同时,文章还将简要触及范数、特殊矩阵类型以及奇异值分解等实用工具,最终以主成分分析为例,展示线性代数在数据降维中的实际应用,助力读者构建扎实的理论基础,提升解决实际问题的能力。
前言
在现代人工智能,特别是深度学习领域,线性代数作为其核心数学语言,扮演着举足轻重的角色。尽管部分计算机科学背景的工程师可能更多地聚焦于离散数学,但要真正理解和驾驭复杂的机器学习算法,尤其是深度神经网络的内在机制,对线性代数原理的深入把握显得尤为必要。本章旨在为读者提供一份精炼且实用的线性代数知识概览,着重探讨那些对理解深度学习算法至关重要的概念与操作,以期在进入深度学习的广阔天地之前,为读者搭建起坚实的数学基石。我们选择性地省略了部分在深度学习应用中并非必需的线性代数理论,力求内容聚焦,直指核心。
1.1 基础构建:从标量到张量的多维数据表示
当我们深入深度学习的世界时,首先要面对的,便是各式各样的数据。这些数据远非简单的数值,它们拥有不同的结构和维度,如何准确、高效地表示和处理它们,是构建任何深度学习模型的基础。线性代数,正是为此提供了一套强大且不可或缺的数学框架。它定义了我们处理这些多维数据的基本构件,即标量、向量、矩阵乃至更普遍的张量。清晰地理解这些核心概念的定义以及它们在数据表示上的独特之处,将为我们后续深入学习复杂的深度学习算法奠定坚实的第一步。
首先是标量 (Scalar),这是所有数学对象中最基础的形式,它仅仅代表一个独立的数值。标量本身不包含任何方向或序列信息,它只是一个量值。在深度学习实践中,我们随处可见标量的身影,比如调整模型训练过程中的学习率,或者设定训练过程中一次处理的数据批次大小,这些都是以标量的形式存在的独立数值。它和我们日常生活中所说的单个数字的概念完全一致,是构建更复杂数据结构的起点。
随后是向量 (Vector),它在一维上对标量进行了扩展,表现为一列有序排列的数值。我们可以将向量想象成空间中的一个特定点,或者更形象地说,是从原点指向这个点的有向线段。在深度学习模型处理单个数据样本时,通常会将其特征表示为一个向量。举例来说,一张数字图像的所有像素值,在经过适当的展平处理后,就可以构成一个高维的向量,其中每个元素代表一个像素的亮度或颜色分量。向量中每个数值的位置,即其在序列中的索引,对于确定其代表的特定特征至关重要,也因此我们能够精确地访问和操作向量中的每一个组成部分。
继续深化,矩阵 (Matrix) 则将数据表示扩展到了二维平面。它是一个由行和列组成的矩形数组,其中每个元素都由其独特的行索引和列索引共同定位。矩阵在深度学习中的应用极为广泛和核心。例如,神经网络中的权重参数常常以矩阵的形式存在,它们定义了不同神经元之间的连接强度。此外,当我们一次性处理多个数据样本(即一个迷你批次)时,每个样本的特征向量便可以堆叠起来,形成一个矩阵,其中每一行代表一个独立的样本,每一列则代表一个特定的特征。通过这种方式,矩阵能够高效地组织和表示批处理数据,极大地提升了计算效率和模型训练的稳定性。
最终,张量 (Tensor) 构成了对标量、向量和矩阵这些概念的终极泛化。简单来说,张量是一个在任意多维坐标网格中分布的数组,它的维度数量可以远远超过二维,可以是三维、四维乃至更高维。在现代深度学习的范畴里,张量是数据表示的标准形式和核心载体。例如,一张普通的彩色图像,在深度学习框架中通常被表示为一个三维张量,其三个维度分别对应图像的高度、宽度和颜色通道(如RGB)。而如果我们考虑视频数据,它则可以被视为一个四维张量,额外增加了一个时间维度。正是张量这种灵活且强大的多维数据表示能力,使其成为处理各种复杂、高维数据类型(如图像、视频、文本序列等)不可或缺的基础工具。深入理解张量及其所支持的各种操作,对于掌握和应用主流深度学习框架至关重要。
1.2 矩阵运算的核心机制:转置与广播的效率考量
在我们深入探索深度学习的奥秘时,总会遇到大量的数据处理和模型计算,而矩阵运算正是支撑这一切的基石。在诸多矩阵操作中,转置和广播这两个概念显得尤为关键,它们不仅是数学理论的组成部分,更是我们在实际编程中优化计算效率、简化代码逻辑的得力助手。
首先,我们来聊聊转置 (Transpose)。这是一种对矩阵进行基础变换的操作,其本质是将矩阵沿着主对角线(从左上角延伸到右下角)进行“翻转”。直观来说,原矩阵中的每一行都将变成新矩阵中的列,而原矩阵中的每一列则会变为新矩阵中的行。如果我们有一个矩阵 (A),其中任意一个元素记作 (A_{i,j}),那么经过转置后,其新矩阵 (A^T) 中的对应元素就变成了 ((A^T){i,j} = A{j,i})。这项操作在多种深度学习算法中都扮演着重要角色,例如在求解某些数学问题时需要调整矩阵的形状以满足运算规则,或者在计算神经网络的梯度时,转置操作能帮助我们正确地进行维度匹配。
接下来,我们看看矩阵的加法和标量运算。矩阵之间的加法运算遵循一个直接且明确的原则:只有当两个矩阵拥有完全相同的“身材”(即相同的行数和列数)时,它们才能逐个元素地进行相加,最终得到一个形状相同的新矩阵。同样地,当一个标量(可以理解为一个单一的数值)与一个矩阵进行乘法或加法运算时,这个标量会“平等”地作用于矩阵的每一个元素。举例来说,如果我们有一个标量 (a),一个矩阵 (B),还有一个标量 (c),那么表达式 (D = a \cdot B + c) 的结果将是一个新矩阵 (D),其中 (D) 的每一个元素 ((D_{i,j})) 都会等于 (a \cdot B_{i,j} + c)。这表示标量 (a) 会先乘以 (B) 的每个元素,然后再将标量 (c) 加到每个乘积上。
然而,在现代深度学习的框架中,为了进一步提升计算的灵活性与效率,引入了一种更为智能的机制——广播 (Broadcasting)。想象一下这样的场景:我们希望将一个向量加到矩阵的每一行上,但它们最初的维度并不完全匹配。按照传统的严格矩阵运算规则,我们可能需要先手动将这个向量复制扩展成一个与矩阵形状完全相同的辅助矩阵,然后才能进行逐元素的加法。这个过程不仅繁琐,还会额外消耗内存和计算资源。而广播机制则巧妙地解决了这个问题:当检测到维度不兼容但逻辑上可以扩展的运算时,系统会自动“聪明地”将较小维度的数组(如向量)隐式地复制或扩展,使其维度与较大维度的数组(如矩阵)相匹配,然后再执行逐元素操作。例如,直接写 (C = A + b),系统会自动将向量 (b) 视为被扩展到了矩阵 (A) 的每一行,从而实现 ((C_{i,j} = A_{i,j} + b_j)) 的效果。这项机制极大地简化了我们的代码,让数学表达式更接近于我们直观的思考方式,同时又避免了不必要的内存开销和计算负担,从而显著提升了整体的计算效率。
1.3 乘法规则与性质:深度学习中的多维运算哲学
当我们深入探索线性代数在深度学习中的应用时,一个核心问题是:为什么线性代数中的乘法操作会有如此多的变体?这些不同的乘法规则,如元素对应乘积、点积以及标准的矩阵乘法,并非仅仅是数学上的巧合,它们各自承载着独特的语义,在神经网络的构建与计算中扮演着不可或缺的角色,服务于截然不同的计算目的。理解它们的内在机制与应用场景,对于我们构建高效且准确的深度学习模型至关重要。
首先,我们来审视元素对应乘积 (Element-wise Product),它在数学上通常记作 (A \odot B),并且在深度学习领域,我们更常听到它的另一个名字——Hadamard 乘积。这种乘法操作的本质是简单而直接的:它要求参与运算的两个矩阵 (A) 和 (B) 必须具有完全相同的维度和形状。运算时,它会将矩阵 (A) 中的每一个元素与矩阵 (B) 中对应位置的元素相乘,最终生成一个新的矩阵,其形状与原始矩阵保持一致。在深度学习实践中,Hadamard 乘积的应用非常广泛,例如在注意力机制中对不同特征的重要性进行加权,或者在门控循环单元(GRU)和长短期记忆网络(LSTM)中实现信息流的门控控制,通过这种元素级的“开关”来决定哪些信息应该被保留或遗忘。其直观性与灵活性使其成为精细控制数据流动的有力工具。
接下来,我们探讨点积 (Dot Product),这是向量之间一种基础且极其重要的乘法形式。对于两个具有相同维度的向量 (x) 和 (y),它们的点积结果是一个单一的标量值。从形式上看,我们可以将点积理解为一种特殊的矩阵乘积:如果将向量 (x) 视为一个 (1 \times n) 的行矩阵,而向量 (y) 视为一个 (n \times 1) 的列矩阵,那么它们的乘积便恰好是点积的结果。在几何意义上,点积不仅告诉我们两个向量的“相似”程度,还揭示了它们之间的夹角信息,因为它与两个向量的长度以及它们之间夹角的余弦值紧密相关,即 (x \cdot y = |x| |y| \cos(\theta))。在深度学习中,点积广泛应用于计算向量之间的相似度(如余弦相似度),在注意力机制中判断查询(Query)与键(Key)的相关性,以及在全连接层中将输入向量映射到输出空间,构成神经元激活的基础。
最后,也是最为复杂但功能最为强大的,便是标准的矩阵乘积 (Matrix Product),我们通常表示为 (C = AB)。与前面两种乘法不同,矩阵乘积的运算条件更为严格:只有当矩阵 (A) 的列数与矩阵 (B) 的行数相等时,这种乘法才能进行。结果矩阵 (C) 中的每一个元素 (C_{i,j}) 的计算,实际上是矩阵 (A) 的第 (i) 行向量与矩阵 (B) 的第 (j) 列向量进行点积的结果。这种乘法操作是深度学习中层间信息传递的基石。无论是卷积神经网络中特征图与卷积核的运算,还是全连接层中输入数据与权重矩阵的交互,矩阵乘法都是将输入信号转换为下一层激活值的核心引擎。它的强大之处在于能够高效地实现复杂的线性变换,从而捕获数据中的深层模式和关系。
值得深入思考的是,矩阵乘法并非仅仅是一种运算规则,它还具备一系列独特的数学性质。例如,它严格遵守分配律,即 (A(B+C) = AB + AC),以及结合律,即 ((AB)C = A(BC))。这些性质保证了我们可以在复杂的计算链中灵活地重排运算顺序,而不改变最终结果。然而,与我们习惯的标量乘法显著不同的是,矩阵乘法不满足交换律,即在绝大多数情况下,(AB) 并不等于 (BA)。这意味着矩阵乘法的顺序是至关重要的,随意调换顺序会导致结果截然不同。这是一个在深度学习模型设计与推导过程中需要时刻警惕的关键点。尽管如此,我们注意到两个向量的点积,作为矩阵乘法的一种特殊情况,是满足交换律的。此外,矩阵乘积的转置也拥有一个非常简洁且实用的性质:((AB)^T = B^T A^T)。这个性质在反向传播算法的推导中扮演着核心角色,使得我们能够高效地计算损失函数对权重矩阵的梯度,从而驱动模型的学习与优化。
1.4 求解与分析:单位矩阵、逆矩阵、线性相关性与子空间
在深度学习的实践中,我们经常会遇到需要求解或分析线性方程组的场景。这不仅仅是数学上的抽象推导,更是我们理解模型行为、数据变换乃至优化算法深层逻辑的关键。要真正把握这些复杂性,就必须深入理解几个核心概念:单位矩阵、逆矩阵、线性相关性以及生成子空间。它们共同构成了我们探究模型可解性、数据如何被高效转换以及数据固有维度特征的基石。
首先,让我们从相对基础但至关重要的单位矩阵 (Identity Matrix) 谈起。单位矩阵通常表示为 (I),它是一种特殊的方阵,其独特之处在于主对角线上的所有元素均为1,而其余所有非对角线位置的元素则均为0。这个看似简单的结构,却赋予了它在线性代数中如同数字“1”一般的核心地位:任何矩阵与单位矩阵相乘,其结果都将是原矩阵本身,即 (AI = IA = A)。在许多矩阵运算和变换中,单位矩阵是进行初始化、保持原状或作为参照的基石,其不可替代的作用贯穿于各种数学推导和算法设计。
紧接着,与单位矩阵紧密相关的便是逆矩阵 (Inverse Matrix),记作 (A^{-1})。对于任意一个方阵 (A),如果它的逆矩阵存在,那么它们之间将满足一个决定性的条件:(AA^{-1} = A^{-1}A = I)。逆矩阵的引入,为我们提供了一种强大的解析工具来解决经典的线性方程组 (Ax = b)。当 (A^{-1}) 存在时,方程的解可以直接表示为 (x = A^{-1}b)。这在理论分析中显得优雅而直接。然而,在实际的数值计算,尤其是在高性能计算环境中,直接计算逆矩阵往往伴随着浮点数精度限制带来的稳定性和精确度问题。因此,在实践中,我们更倾向于采用更为稳定和高效的优化算法来直接求解 (x),例如各种迭代法或分解法,而不是盲目地求逆。尽管如此,逆矩阵在概念上和理论推导中依然是理解矩阵变换和方程性质不可或缺的工具。
当我们尝试分析方程组 (Ax = b) 解的数量和性质时,一种直观而深刻的视角是将矩阵 (A) 的每一个列向量视为在多维空间中从原点出发的不同“方向”。而向量 (x) 中的每个元素 ((x_i))) 则精确地告诉我们,应该沿着第 (i) 个列向量的方向“移动”多少距离。这种将多个向量按照一定比例叠加起来的操作,正是线性组合 (Linear Combination) 的核心思想。所有这些列向量通过各种线性组合所能“抵达”的所有点的集合,便构成了这组向量的生成子空间 (Span)。因此,判断方程 (Ax = b) 是否有解,本质上就是考察向量 (b) 是否能够通过矩阵 (A) 的列向量进行线性组合而得到,换言之,就是判断 (b) 是否落在了矩阵 (A) 的列向量所张成的生成子空间之内。这个由矩阵 (A) 的列向量所定义的特殊生成子空间,我们称之为 (A) 的列空间 (Column Space),有时也称为值域 (Range)。
在构建生成子空间的过程中,我们必须认识到并非所有的列向量都能独立地为子空间贡献新的维度。当某个向量可以被集合中的其他向量通过线性组合精确地表示出来时,我们就称这个向量与集合中的其他向量是线性相关 (Linearly Dependent) 的。这种情况意味着存在信息冗余,这些冗余向量并不能扩展生成子空间的维度,反而会限制其“宽度”。反之,如果一组向量中的任意一个向量都无法通过其他向量的线性组合来表示,那么这组向量就是线性无关 (Linearly Independent) 的。线性无关性是构建高效、非冗余特征空间的基础。比如,在一个 (2 \times 2) 的矩阵中,如果它的两列向量完全相同,那么即使表面上它有两列,其列空间实际上可能仅仅是一条线,无法覆盖整个二维平面,因为一个列向量是另一个的“重复”,没有带来新的方向。
综合以上分析,我们可以得出结论:为了确保线性方程组 (Ax = b) 对于任意给定的 (b) 都能够拥有唯一确定的解,矩阵 (A) 必须满足两个关键条件。首先,它必须是一个方阵,这意味着其行数 (m) 必须严格等于列数 (n),即输入与输出维度相匹配。其次,也是同样重要的,矩阵 (A) 的所有列向量必须是线性无关的。如果一个方阵的列向量之间存在线性相关性,那么它将被归类为奇异矩阵 (Singular Matrix)。奇异矩阵具有其行列式为零的特性,并且更关键的是,它不具备逆矩阵,这意味着我们无法通过简单的 (A^{-1}b) 来求解方程,其解的性质会变得更加复杂,可能无解或有无穷多解,这在深度学习模型的可逆变换和稳定性分析中具有深远的影响。
1.5 衡量与特性:范数、特殊矩阵与特征分解
当我们深入探索深度学习的数学基石时,自然会遇到一个核心问题:如何准确地“度量”向量和矩阵?以及我们如何剖析它们内在的结构,以揭示其深层性质?正是为了回答这些疑问,线性代数引入了范数(Norm)这一至关重要的概念,同时,一系列在现代AI算法中扮演关键角色的特殊矩阵及其背后的特征分解(Eigen-decomposition)理论也浮出水面。
首先,让我们聚焦于“范数”这个概念。它在数学上被定义为一种函数,能够将向量或矩阵映射为一个非负实数值,其核心作用是为我们提供了一个统一的尺度来衡量它们在空间中的“大小”或“长度”。在实践中,我们最常用的是 (L_p) 范数家族。其中,(L_1) 范数,常被称为曼哈顿距离或稀疏性范数,它的特性在于会促使向量中的许多元素趋向于零,这在需要特征选择或构建稀疏模型时显得尤为关键。而 (L_2) 范数,也就是我们熟悉的欧几里得范数,它量化了从原点到向量末端的欧几里得距离,在深度学习中广泛应用于模型的正则化项,例如在损失函数中添加 (L_2) 范数项可以有效防止过拟合,并且其平方形式在数学推导上更为简洁。此外,还有 (L_\infty) 范数,它专注于捕捉向量中绝对值最大的那个元素。这些不同类型的范数在深度学习的各个环节都扮演着不可或缺的角色,无论是设计损失函数以衡量模型预测与真实值之间的差异,还是通过正则化项控制模型复杂度,抑或是执行梯度裁剪以稳定训练过程,都离不开对向量或矩阵“大小”的精准感知与控制。
接下来,我们不得不重点关注那些在深度学习实践中频繁出现的“特殊矩阵”。这些矩阵之所以被冠以“特殊”之名,正是因为它们拥有一系列独特的结构和数学性质,这些特性不仅能显著提升计算效率,还能极大地简化理论分析。举例来说,对角矩阵(Diagonal Matrix)是一个优雅的存在,它的非零元素仅分布在主对角线上。这意味着对角矩阵的乘法操作,或者求解其逆矩阵,都将变得异常简单,极大地加速了计算。对称矩阵(Symmetric Matrix)则指那些转置后依然保持不变的矩阵(即 (A = A^T)),它们在描述物理系统的对称性、处理协方差矩阵等统计学问题,以及在优化算法中,尤其是在二阶优化方法里,都占据着核心地位。而正交矩阵(Orthogonal Matrix),无疑是其中一颗耀眼的明星,它的列向量(或行向量)都是相互正交的单位向量,更值得一提的是,其逆矩阵恰好是其自身的转置(即 (Q^{-1} = Q^T))。这一性质使得正交变换在执行坐标系的旋转、反射等操作时,能够完美地保持向量的长度和它们之间的夹角不变,这在数据降维、特征空间变换以及神经网络的权重初始化等场景下,都是极其强大的工具。深入理解这些特殊矩阵的内在性质与应用场景,对于我们更高效地设计、实现并优化各类深度学习算法至关重要。
最后,我们来探讨线性代数中最富有洞察力的分析工具之一:特征分解。当我们试图理解一个矩阵所代表的线性变换的“本质”时,特征分解提供了一个极其强大的透视视角。具体来说,对于一个方阵 (A),如果存在一个非零向量 (v) 和一个标量 (\lambda),使得 (Av = \lambda v) 关系成立,那么这个 (\lambda) 就被我们称作矩阵 (A) 的特征值(Eigenvalue),而相应的向量 (v) 则是对应于 (\lambda) 的特征向量(Eigenvector)。特征向量的意义在于,它们指明了在矩阵 (A) 的作用下,方向能够保持不变的那些特殊方向;而特征值则量化了在这些特定方向上,向量被“拉伸”或“压缩”的程度。通过将矩阵 (A) 分解为其特征值和特征向量的组合,我们不仅能够更深刻地洞察矩阵的线性变换特性,还能极大地简化复杂的矩阵运算,并在诸如主成分分析(PCA)这样的经典降维技术中发挥着核心作用,帮助我们提取数据中最主要的特征。需要特别指出的是,并非所有的矩阵都能够进行特征分解,这一方法主要适用于方阵且要求矩阵是可对角化的。当矩阵不满足可对角化的条件时,或者当我们处理的是非方阵时,我们便需要转向更为通用和强大的工具——奇异值分解(Singular Value Decomposition, SVD),它能够适用于任意形状的矩阵,为我们提供了更为广阔和灵活的分析框架。
综上所述,范数、特殊矩阵和特征分解构成了我们衡量、理解和操作高维数据的重要理论基石。它们不仅是纯粹的数学概念,更是深度学习算法设计与优化的核心工具,值得我们深入推敲和掌握。
在深度学习的实践中,我们不仅需要描述数据的结构,还需要对其进行量化衡量,并识别具有特定性质的矩阵。范数提供了衡量向量“大小”的工具,而特殊类型的矩阵和特征分解则揭示了矩阵内在的几何与代数特性,这些都对模型训练和数据分析具有重要意义。
范数 (Norm) 是一个将向量映射到非负值的函数,它直观上衡量了从原点到向量所确定点的“距离”或“长度”。最常见的范数是 (L_p) 范数,定义为 ((\sum_i |x_i|p){1/p})。
当 (p=2) 时,我们得到 (L_2) 范数,又称欧几里得范数 (Euclidean norm),它表示从原点到向量末端的欧几里得距离。在机器学习中,(L_2) 范数非常常见,常常简写为 (|x|)。平方 (L_2) 范数 (|x|^2) 同样被广泛使用,可以直接通过向量的点积 (x^Tx) 计算得到。它在优化算法中常用于衡量模型误差或正则化项。
当 (p=1) 时,我们得到 (L_1) 范数,表示为 (|x|_1 = \sum_i |x_i|)。(L_1) 范数在机器学习问题中,特别是在需要稀疏解(即很多元素为零的向量)时显得尤为重要,因为它能促进模型参数向零收缩。每当向量 (x) 中某个元素从0增加一个微小量 (\epsilon),对应的 (L_1) 范数也会增加 (\epsilon),这种特性使得它对非零元素和零元素之间的差异非常敏感。
另一个在机器学习中常见的范数是 (L_{\infty}) 范数,或称最大范数 (Max Norm),它表示向量中具有最大绝对值的元素。
除了衡量向量,我们有时也需要衡量矩阵的大小。在深度学习中,最常见的矩阵范数是 Frobenius 范数 (Frobenius Norm),其定义为 (|A|F = \sqrt{\sum{i,j} A_{i,j}^2})。
此外,某些具有特定结构的矩阵在深度学习中具有特殊的计算优势或理论意义:
- 对角矩阵 (Diagonal Matrix):只有主对角线上含有非零元素,其余位置均为零。对角矩阵的乘法、求逆等操作的计算代价远低于一般矩阵,因此在可能的情况下,将一般矩阵变换为对角矩阵可以显著简化计算。值得注意的是,对角矩阵不一定是方阵。
- 对称矩阵 (Symmetric Matrix):指转置后与自身相等的矩阵,即 (A = A^T)。对称矩阵在许多数学和物理问题中自然出现,例如协方差矩阵就是对称矩阵。
- 单位向量 (Unit Vector):指具有单位范数(长度为1)的向量,即 (|v| = 1)。单位向量常用于表示方向。
- 正交矩阵 (Orthogonal Matrix):是指其行向量和列向量都是标准正交(即互相正交且长度为1)的方阵。正交矩阵的一个显著特点是其逆矩阵等于其转置,即 (Q^{-1} = Q^T),这使得其求逆计算代价极低,非常适合需要频繁进行逆变换的场景。
特征分解 (Eigendecomposition) 是一种重要的矩阵分解方法,它将一个矩阵分解成一组特征向量和特征值。对于一个方阵 (A),其特征向量 (Eigenvector) (v) 是指与 (A) 相乘后,其方向保持不变,仅被缩放的非零向量,即 (Av = \lambda v)。这里的 (\lambda) 称为对应的特征值 (Eigenvalue)。特征分解的形式通常表示为 (A = V \Lambda V^{-1}),其中 (V) 是由特征向量作为列组成的矩阵,(\Lambda) 是由特征值作为对角线元素的对角矩阵。特征分解揭示了矩阵在特定方向上的伸缩变换特性。
根据特征值的性质,我们可以将矩阵分为:
- 正定矩阵 (Positive Definite):所有特征值均为正数。
- 半正定矩阵 (Positive Semidefinite):所有特征值均为非负数。
- 负定矩阵 (Negative Definite):所有特征值均为负数。
- 半负定矩阵 (Negative Semidefinite):所有