非线性支持向量机 (Non-linear Support Vector Machines)
1. 为什么需要非线性支持向量机?
1.1 线性支持向量机的局限性回顾
在之前的学习中,我们了解到线性支持向量机(无论是硬间隔还是软间隔)都是为了找到一个超平面来分离不同类别的样本。它非常高效,并且在数据线性可分时能够找到最优的决策边界(最大间隔超平面)。
其核心优化问题,无论是原始形式还是对偶形式,都依赖于数据在原始输入空间中的线性可分性: 原始问题:
对偶问题:
解释:这些问题都是在原始的输入空间 中寻找一个线性决策边界。
1.2 现实世界中的非线性可分数据
然而,在现实世界中,很多数据集并非线性可分。例如:

- 圆形样本(O)和叉叉样本(X)在二维平面上无法用一条直线完美分开。正负类样本在空间中呈环形或交错分布。
- 如果强行用线性 SVM 去分类,模型性能会非常差,甚至无法收敛到有效解(对于硬间隔 SVM)。
非线性支持向量机的提出,正是为了解决这种线性不可分的问题。
2. 映射到高维特征空间
非线性 SVM 的核心思想是: 如果数据在原始输入空间 中是线性不可分的,那么我们尝试将数据点从原始空间 映射到一个更高维的(甚至可能是无限维的)特征空间 。在新的特征空间 中,数据点可能会变得线性可分。
- 原始空间 (Input Space):通常是欧几里得空间 ,例如 所在的二维空间。
- 特征空间 (Feature Space):我们映射到的新空间,通常用 表示。它的维度可能远高于原始空间,甚至可能是无限维。
- 映射函数 :这个函数负责将原始空间中的数据点 转换到特征空间中的新表示 。 对于原始空间中的一个样本 ,经过映射后变成 。
在特征空间 中构建线性分类器: 一旦数据被映射到特征空间 ,我们就假设在这个新的高维空间中,数据点是线性可分的。我们仍然使用线性 SVM 的方法,在新空间中寻找一个线性超平面: 这里的 是特征空间 中的权重向量。
直观理解: 想象一下你有一堆硬币,有些正面朝上,有些反面朝上,它们在桌面上是混合的(线性不可分)。但是如果你把它们都拿起来,正面的放在桌子上方 10 厘米处,反面的放在 0 厘米处,那么在“高度”这个新的维度上,它们就变得线性可分了。这就是从低维空间映射到高维空间的思想。
3. 核技巧
虽然将数据映射到高维空间听起来很有效,但它带来了两个主要问题:
- 计算成本高昂:如果特征空间 的维度非常高,甚至无限维,显式地计算 将变得极其耗时或不可能。
- 具体形式未知:很多时候我们甚至不知道一个合适的映射函数 具体长什么样子。
幸运的是,我们有一个巧妙的解决方案,这就是核技巧 (Kernel Trick)。
3.1 对偶问题中的内积
回顾线性 SVM 的对偶优化问题,你会发现所有涉及输入特征 的地方,都以 内积(点积) 的形式出现:。
如果我们把数据映射到特征空间 ,那么原始问题中的 就会被替换为 。因此,在对偶问题中,所有的内积形式都会变为:
3.2 核函数的定义
核函数 (Kernel Function) 的核心思想是:我们不需要显式地知道映射函数 ,也不需要计算高维的 。我们只需要找到一个函数 ,使得它能够直接计算出在高维特征空间中的内积:
通过这个替换,我们就可以在不对数据进行显式高维映射的情况下,直接在原始空间中计算出高维空间中的内积。这就像是“只在幕后”进行高维映射,而不需要真正地“走到台前”。
非线性 SVM 的对偶问题:
决策函数: 最终的决策函数也会涉及到内积。根据 KKT 条件,最优的权重向量 可以表示为支持向量的线性组合: 那么对于一个新的输入 ,分类决策函数为: 利用核函数: 解释:整个 SVM 的训练和预测过程都巧妙地避开了对 的显式计算。
4. 希尔伯特空间 (Hilbert Space)
4.1 什么是希尔伯特空间?
希尔伯特空间 (Hilbert Space) 是一种在数学中,尤其是泛函分析中使用的抽象概念,它是欧几里得空间的推广。
定义:一个希尔伯特空间是一个完备的内积空间。
- 内积空间 (Inner Product Space):
- 一个向量空间,其中定义了内积操作。内积接受两个向量,返回一个标量。
- 内积满足:对称性、线性、正定性。
- 内积允许我们定义 长度(范数) 和 角度 。例如,向量 的长度 。
- 在有限维空间中,我们常用的点积 就是一种内积。
- 完备性 (Completeness):
- 指的是空间中所有柯西序列(Cauchy sequence)都收敛于该空间内的一个点。
- 完备性保证了我们可以进行极限操作,这在分析和优化算法的收敛性时非常重要。它确保了在空间中进行逼近时,我们不会“跳出”空间。
4.2 希尔伯特空间在 SVM 中的作用
在 SVM 的语境中:
- 我们所说的特征空间 往往是一个希尔伯特空间(或被视为一个希尔伯特空间)。
- 映射函数 将原始输入空间 中的点映射到这个特征空间 中。
- 核函数 实际上就是特征空间 中的内积操作 。
- 通过在希尔伯特空间中进行计算,我们能够利用其丰富的几何性质(如距离和正交性),同时避免显式地处理可能无限维的向量。这种利用内积来规避高维计算的方法被称为 “表征定理 (Representer Theorem)” 的体现,它表明最优解可以表示为数据点的线性组合,而这个线性组合只需要内积。
5. 正定核 (Positive Definite Kernel)
并非所有的对称函数都可以作为核函数。一个函数 要成为一个合法的核函数,它必须满足特定的数学条件,即它必须是正定核 (Positive Definite Kernel)。
5.1 正定核的条件
一个函数 如果满足以下两个条件,则称其为正定核(或 Mercer 核):
-
对称性 (Symmetry): 解释:这是因为内积操作本身就是对称的:。
-
半正定性 (Positive Semi-Definiteness) of the Gram Matrix: 对于任意有限个样本点 和任意非零实数 ,以下条件必须成立: 解释:这个条件等价于说,由 构成的 Gram 矩阵 必须是半正定矩阵。 Gram 矩阵 是一个 的矩阵,其第 行第 列的元素是 。
半正定矩阵的直观意义: 如果一个矩阵 是半正定的,意味着它所对应的二次型 总是非负的。 这个条件是至关重要的,因为它保证了:
- 存在一个隐式的映射 使得 。
- 在特征空间中,任意向量的平方范数(长度的平方)是非负的: 这确保了特征空间是一个合法的欧几里得空间(或更广义的希尔伯特空间),其中可以进行距离和角度的计算。
5.2 Mercer 定理 (Mercer’s Theorem)
Mercer 定理提供了判断一个函数是否为正定核的充要条件: 一个对称函数 是核函数的充要条件是,对于任何有限个样本点,由它生成的 Gram 矩阵都是半正定的。 解释:这个定理非常重要,因为它使得我们无需显式构造 就可以验证一个函数是否可以作为核函数。我们只需要检查它的对称性以及对应的 Gram 矩阵的半正定性。
6. 一个构造示例
我们来详细推导一个具体的例子,展示如何从一个核函数形式找到对应的映射函数 ,并验证它们之间的关系。
设原始输入空间是 ,即 和 。 我们考察核函数 。
步骤 1:展开核函数 使用 展开: 重新排列项,将属于 的部分和属于 的部分组合在一起:
步骤 2:构造映射函数 我们的目标是找到一个 使得 。 观察展开后的形式,它看起来像两个向量的点积。我们可以将它分解为两个向量的对应元素相乘再求和。
一种可能的映射 : 令特征空间是 。 那么: 现在计算它们的点积: 这正是 的展开形式。 所以,这种映射是有效的。
**另一种可能的映射 : 令特征空间是 。 我们可以将中间项 拆开成两个对称项 。 那么: 计算它们的点积: 同样,这也正是 的展开形式。
结论:映射函数 的非唯一性 通过上述例子我们可以看出,对于同一个核函数 ,可能存在多个不同形式的映射函数 将数据映射到不同的特征空间。这再次强调了核技巧的强大之处:我们不需要关心 的具体形式,只要核函数本身是合法的(正定核),SVM 算法就可以正常工作。
7. 构建特征空间 (希尔伯特空间)
在线性支持向量机中,我们寻求的是在原始输入空间 中一个线性分离超平面。然而,当数据在原始空间中线性不可分时,我们提出将数据映射到一个更高维的特征空间 ,在这个新空间中数据可能变得线性可分。这个特征空间 正是我们所说的希尔伯特空间。
7.1 什么是希尔伯特空间?
在之前的报告中,我们简要定义了希尔伯特空间。现在,让我们更细致地理解它:
一个希尔伯特空间 (Hilbert Space) 是一种具有特定性质的向量空间。它是一个完备的内积空间。 我们来拆解这个定义:
- 向量空间 (Vector Space) / 线性空间 (Linear Space):
- 这是最基础的。一个集合如果定义了向量加法和标量乘法两种运算,且这些运算满足一系列公理(如结合律、分配律、零向量、负向量等),那么这个集合就是一个向量空间。
- 这些运算必须是封闭的,即向量相加或向量与标量相乘的结果仍然在这个空间内。
- 内积空间 (Inner Product Space):
- 在向量空间的基础上,如果定义了一个内积 (Inner Product) 运算,那么它就成为了一个内积空间。
- 内积运算通常记作 ,它接受空间中的两个向量 和 ,并返回一个标量。
- 这个内积运算必须满足以下四个核心性质(我们将在稍后详细证明):
- 对称性 (Symmetry): (对于实数空间)。
- 线性性 (Linearity): (标量乘法) 和 (加法)。
- 正定性 (Positive Definiteness):,且 。
- 赋范线性空间 (Normed Linear Space):
- 一旦定义了内积,我们就可以通过内积来定义向量的范数 (Norm) 或“长度”:。
- 一个定义了范数的向量空间就称为赋范线性空间。
- 完备性 (Completeness):
- 这是希尔伯特空间区别于一般内积空间的关键。完备性意味着空间中所有柯西序列 (Cauchy sequence) 都收敛于该空间内的一个点。
- 直观意义:完备性保证了我们可以进行极限操作,使得空间“没有漏洞”,在进行逼近或迭代时,结果不会“跳出”空间。在理论分析和算法收敛性证明中非常重要。
7.2 核函数如何构造这个空间?
在 SVM 中,我们实际上是通过核函数 来隐式地定义和构造这个特征空间 (一个再生核希尔伯特空间,Reproducing Kernel Hilbert Space, RKHS)。
- 定义空间中的元素: 我们首先定义一个由核函数构成的函数集合 。这个集合中的函数 是有限个核函数 的线性组合: 其中, 是实数系数, 是原始输入空间中的样本点(基点), 是一个有限正整数。这个集合 是一个向量空间,因为有限个这样的函数相加或与标量相乘,结果仍然是这种形式的函数。
- 定义内积运算: 对于 中的任意两个函数 和 ,我们定义它们之间的内积为: 解释:这个定义是基于核函数的性质,它是一个巧妙的构造。它将两个函数之间的内积,转化为基点之间核函数值的线性组合。
- 希尔伯特空间 (通过完备化): 通过上述定义,我们得到了一个内积空间 。如果我们将这个空间进行“完备化”(即填充所有柯西序列的极限点),我们就可以得到一个真正的希尔伯特空间 。这个 就是所谓的再生核希尔伯特空间 (RKHS)。
7.3 再生性 (Reproducing Property)
再生核希尔伯特空间有一个非常重要的性质叫做再生性 (Reproducing Property)。 对于任意 ,定义函数 (即核函数以 为第二个参数,第一个参数是变量)。 那么,对于任意 ,有: 我们来证明一下这个性质。设 。 那么: 根据内积的线性性(我们稍后会证明): 根据内积的定义 (这是通过将 视为 形式,其中 只有在索引为 时为 1,其他为 0 的系数,但更直接的证明需要从 映射的角度来理解 ): 由于核函数的对称性 : 这正是函数 在点 处的取值 。 所以,。
再生性意味着,在 RKHS 中,对一个函数 进行求值 ,等价于计算它与核函数 的内积。这使得核函数在 RKHS 中扮演了“求值算子”的角色,也是其“再生”名称的由来。
8. 我们定义的运算是内积吗? (内积的四个条件证明)
为了证明我们定义的运算 确实是内积,我们需要逐一验证其满足四个条件。 设 , , 。
8.1 条件 1:对称性
证明: 由于实数的乘法交换律 () 和核函数的对称性 (),我们有: 由于求和顺序可以交换: 结论:对称性成立。
8.2 条件 2:线性性 (两个子条件)
-
标量乘法: (对于任意实数 ) 证明: 首先,函数 。 那么,将 视为新的系数,根据内积定义: 由于实数乘法结合律: 结论:标量乘法的线性性成立。
-
加法: 证明: 首先,函数 。 我们可以将 视为一个包含 个项的线性组合,其基点是 。为了统一表示,假设我们有一个包含所有这些基点的大集合 ,以及对应的系数 。 或者更直接地,根据内积的定义: 这可以通过定义一个临时函数 然后展开来证明,或者更严格地利用内积的分配律定义。 如果我们将内积定义为:。 那么: 根据内积定义,这是将 视为一个整体的线性组合,再与 进行内积。 (这里隐含使用了内积对第一个参数的线性性,如果直接从定义推导,需要更长的步骤) 结论:加法的线性性成立。
8.3 条件 3:正定性
证明: 我们知道,一个函数 如果是正定核,那么由任意有限点集 构成的 Gram 矩阵 () 必须是半正定矩阵。 设向量 。那么 正好是二次型 。 由于 是半正定的,因此 。所以 成立。
现在证明 :
- () 如果 : 如果 (即对于所有 都有 ),那么通过再生性: 。
- () 如果 : 我们想证明这蕴含了 。 由于 ,那么由内积性质,这等价于 。 根据再生性:。 通过柯西-施瓦茨不等式 (Cauchy-Schwarz inequality):。 如果 ,那么 必须为 0。所以 是零函数。 结论:正定性成立。
总结:由于我们定义的运算满足内积的四个核心性质,因此它是一个内积。这证明了我们构造的函数集合 是一个内积空间。
8. 正定核函数的充分必要条件 (Mercer 定理)
在之前的内容中,我们简要提到了 Mercer 定理。
定义:设 是定义在 上的一个对称函数。
- Mercer 定理 (充分必要条件): 是一个正定核函数(即存在一个希尔伯特空间 和一个映射 使得 ),当且仅当,对于任意有限个样本点 ,由 构成的 Gram 矩阵 是半正定矩阵。
8.1 证明(必要性):如果 是核函数,则 Gram 矩阵是半正定的
假设: 是一个核函数。这意味着存在一个映射 (其中 是一个希尔伯特空间)使得 。
目标:证明对于任意有限的样本点集 和任意实数 ,以下二次型非负:
证明步骤:
- 将 替换为其在特征空间中的内积形式:
- 利用内积的线性性(对第二个参数的线性性,例如 和 ):
- 利用内积的对称性:。 解释:这里我们将求和项视为一个整体的向量 。那么整个表达式就是 。
- 根据内积的正定性定义,任何向量与自身的内积都必须是非负的(即范数的平方): 结论:因此,如果 是一个核函数,那么由它构成的 Gram 矩阵必然是半正定的。这证明了 Mercer 定理的必要性。
8.2 证明(充分性):如果 Gram 矩阵是半正定的,则 是核函数
这部分证明涉及更高级的数学(如泛函分析和谱理论),但其核心思想是:如果 Gram 矩阵总是半正定的,那么我们可以构造出一个希尔伯特空间 和一个映射 使得 。 这个构造通常就是我们前面讨论的再生核希尔伯特空间 (RKHS) 的构造,其中 可以被定义为 本身在 RKHS 中的表示。
解释:这个“充分性”保证了只要我们能验证一个函数的 Gram 矩阵是半正定的,我们就可以放心地把它用作 SVM 的核函数,而无需显式地去找到那个高维映射 。这大大简化了核函数的选择和使用。
9. 常见的核函数类型 (Common Kernel Functions)
核函数是连接原始输入空间和高维特征空间的关键,它允许我们在不显式进行高维映射的情况下,完成分类或回归任务。不同的核函数对应着不同的隐式特征映射,因此它们能够捕捉数据中不同类型的非线性关系。
9.1 多项式核函数 (Polynomial Kernel)
多项式核函数通过计算输入特征的多项式组合来创建新的特征。它能够捕捉到数据中的多项式关系。
9.1.1 定义与参数
多项式核函数的标准形式为: 其中:
- 是原始输入空间中的特征向量。
- 是原始空间中的点积。
- (degree):多项式的次数,一个正整数。它决定了特征空间中多项式项的最高次数。
- (gamma):核函数的系数,一个正实数。它控制了高阶项对内积的贡献。
- (coef0):一个常数项(也称为截距或偏移量)。
9.1.2 隐式映射的直观理解与示例
为了理解多项式核如何进行隐式映射,我们以一个简单的例子进行推导。 设 和 。我们取 ,即核函数为 。
步骤 1:展开核函数 将点积 代入: 继续展开: 重新排列项,将属于 和属于 的部分分开组合:
步骤 2:构造映射函数 观察展开后的形式,它正是两个向量 和 的点积。 我们可以定义映射函数 为: 那么, 恰好等于我们展开的 。
解释:
- 通过多项式核,原始的二维特征 被映射到了一个六维的特征空间,包含了二次项(如 )、一次项(如 )和常数项 (1)。
- 参数 实际上控制了线性项和高阶项的相对权重。
- 参数 确保了映射后的特征空间包含常数项,并且当 时,映射后的特征值通常不会太小,有助于数值稳定性。
- 参数 直接决定了映射后的特征空间维度。随着 的增大,特征空间的维度会急剧增加。
9.1.3 优点与缺点
- 优点:
- 能够处理非线性数据,通过增加维度来寻找线性决策边界。
- 在文本分类(词频特征)等领域有时表现良好。
- 缺点:
- 参数选择敏感:、 和 的选择对模型性能影响很大。特别是 越大,维度越高,越容易过拟合。
- 计算复杂度:对于高维输入,多项式核的计算可能会比较慢。
- 数值稳定性:当输入特征值较大时,高次幂可能导致数值溢出。
9.2 高斯核函数 (Gaussian Kernel / Radial Basis Function, RBF Kernel)
高斯核函数是最常用的核函数之一,因为它能够将原始数据映射到无限维的特征空间,并且具有非常好的非线性建模能力。
9.2.1 定义与参数
高斯核函数的标准形式为: 其中:
- 是原始输入空间中的特征向量。
- 是两个向量之间的欧氏距离的平方(L2 范数的平方)。
- (gamma):核函数的带宽参数(或称为核宽、尺度参数),一个正实数。它决定了核函数的影响范围或“宽度”。
9.2.2 隐式映射的直观理解与特性
高斯核函数的隐式映射是无限维的,因此无法像多项式核那样简单地列出 的所有维度。但我们可以从其相似度度量的角度来理解其直观意义。
- 相似度度量:高斯核函数衡量的是两个样本 和 之间的相似度。
- 当 和 非常接近时, 接近 0,则 接近 。这意味着它们非常相似。
- 当 和 距离很远时, 很大,则 接近 0。这意味着它们不相似。
- 局部性:高斯核具有很强的局部性 (Locality)。它的值随着距离的增加而指数级衰减。这意味着只有距离较近的样本才会对彼此的分类产生显著影响,而距离远的样本影响甚微。
- 参数 的作用:
- 很大: 衰减得非常快。这意味着只有距离极近的样本才会被认为是相似的,模型将变得非常“局部化”或“细致”。这可能导致过拟合,因为模型会为每个训练样本拟合一个非常小的区域,决策边界会变得非常复杂和不平滑。
- 很小: 衰减得非常慢。这意味着即使距离较远的样本也会被认为是相似的,模型将变得非常“全局化”或“粗糙”。这可能导致欠拟合,因为模型无法捕捉到数据的局部细节。
9.2.3 优点与缺点
- 优点:
- 通用性强:高斯核是“通用核函数”(Universal Kernel),理论上它可以映射到任意维度的特征空间,并能够拟合任何复杂的决策边界(只要参数合适且有足够的数据)。
- 参数较少:相比多项式核,它只有一个关键参数 需要调节,简化了参数选择。
- 性能优异:在许多实际应用中,高斯核表现出色,是 SVM 中最常用的核函数。
- 缺点:
- 对参数 敏感:尽管参数少,但 的选择对模型性能至关重要,通常需要通过交叉验证进行优化。
- 无限维度挑战:虽然是隐式计算,但无限维度意味着所有数据点都会成为支持向量(在严格意义上),可能导致在预测时计算量增大(因为需要计算新样本与所有支持向量的核函数值)。
- 解释性差:由于映射到无限维,很难直观地解释决策边界。
9.3 Sigmoid 核函数 (Sigmoid Kernel)
Sigmoid 核函数来源于神经网络中的 Sigmoid 激活函数,但它在 SVM 中不如多项式核和高斯核常用。
9.3.1 定义与参数
Sigmoid 核函数的标准形式为: 其中:
- 是双曲正切函数,其输出范围是 。
- 是可调参数,与多项式核中的含义类似。
9.3.2 局限性
- 不总是正定核:Sigmoid 核函数只有在特定的参数 和 取值下才能满足正定核的条件。这意味着它可能不总是一个有效的核函数,从而导致优化问题不收敛。
- 由于其不稳定的性质,在 SVM 实践中通常不推荐使用 Sigmoid 核函数。
10. 字符串核函数 (String Kernels)
到目前为止,我们讨论的核函数主要适用于欧几里得空间(数值向量) 中的数据。然而,在很多领域,我们的数据是非数值的,例如文本数据(单词序列)、DNA 序列、蛋白质序列等。这些数据无法直接表示为向量并使用点积。
字符串核函数正是为处理这类离散序列数据而设计的。它的核心思想是:衡量两个字符串的相似度,基于它们共享的子序列 (Subsequences)。
10.1 基本思想:共享子序列的计数
- 核心理念:将字符串隐式地映射到一个特征空间,这个特征空间的维度对应于所有可能的(或特定长度的)子序列。特征向量的每个维度代表一个特定子序列在字符串中出现的次数或某种加权统计。
- 核函数作用:通过计算这个高维特征空间中的内积,来量化两个字符串的相似度。
10.2 举例:子序列核 (Subsequence Kernel)
子序列核是最典型的字符串核函数之一。
10.2.1 定义概念
给定两个字符串 和 。一个长度为 的子序列,是从一个字符串中按照原有顺序选择 个字符得到的序列,这些字符在原字符串中可以不连续。
例如:字符串 “cat” 的长度为 2 的子序列有 “ca”, “ct”, “at”。
一个简单的子序列核函数可以定义为:所有长度为 的公共子序列的数量。
更复杂的子序列核函数会引入加权机制: 或者更常见地,考虑子序列的 “不连续性惩罚” : 这里 是一个衰减因子, 是子序列中第 个字符在原字符串中的索引。惩罚项 衡量了子序列中字符之间的“跳跃”距离(gap)。
10.2.2 示例:计算子序列核
假设我们有一个简单的子序列核,它计算两个字符串共享的所有长度为 2 的子序列的计数,且不考虑跳跃惩罚。 考虑字符串 和 。
- 的长度为 2 的子序列:
- “ca” (索引 0, 1)
- “ct” (索引 0, 2)
- “at” (索引 1, 2)
- 的长度为 2 的子序列:
- “cu” (索引 0, 1)
- “ct” (索引 0, 2)
- “ut” (索引 1, 2)
- 公共子序列: 唯一的公共子序列是 “ct”。
- 核函数值: (因为只有一个公共的长度为 2 的子序列)。 如果我们的核函数考虑长度为 1 的子序列,那么 “c”, “a”, “t” 和 “c”, “u”, “t” 共享 “c” 和 “t”,核函数值会更高。
10.2.3 字符串核的隐式映射
对于一个字符串 ,其隐式映射 是一个非常高维的向量,其中每个维度对应一个特定的子序列 。该维度的值通常是子序列 在字符串 中出现的加权计数。 其中 可以是 在 中出现的所有方式的 衰减和。 然后 。
10.3 字符串核的挑战与应用
- 计算复杂性:所有可能的子序列的数量是指数级的,尤其对于长字符串。因此,直接计算或显式存储 是不可能的。字符串核函数的设计需要巧妙的算法(例如使用动态规划)来高效地计算 。
- 参数选择:除了 SVM 本身的 参数,字符串核函数通常还有长度参数 和衰减参数 等,这些参数的选择也至关重要。
- 应用领域:
- 文本分类:衡量文档或句子之间的相似性,例如垃圾邮件检测、情感分析。
- 生物信息学:分析 DNA 序列、蛋白质序列之间的相似性,例如基因功能预测、蛋白质结构分类。
- 自然语言处理:词性标注、命名实体识别等。