跳到主要内容
4782 字
24 分钟
24 分钟读完

ARTICLE NOTE

Kernel Trick —— 核技巧与常用核函数
浏览 0
热度 0

Kernel Trick —— 核技巧与常用核函数

引言

上一篇文章中,我们推导了 SVM 的完整对偶形式,并留下了一个关键观察:对偶问题的目标函数和决策函数中,样本以内积 xiTxjx_i^T x_j 的形式出现,再无其他显式依赖。这个观察在当时的语境中只是一个数学便利 ——** 内积使得对偶问题比原始问题更易求解**。但正是这个“不起眼”的细节,打开了通往非线性世界的大门。

核技巧(Kernel Trick) 的核心操作简洁到可以用一句话概括:将对偶形式中的所有内积 xiTxjx_i^T x_j 替换为核函数 K(xi,xj)K(x_i, x_j)。替换之后,SVM 便不再受限于线性决策边界——它可以在完全不显式计算高维特征的前提下,等价地在高维(甚至无穷维)特征空间中寻找最大间隔超平面。这是机器学习中少有的“免费午餐”:计算成本几乎不变,表达能力却从线性跃升至任意非线性

本文将从核函数的数学定义出发,理清 Mercer 定理为何是核方法的理论基石 —— 它保证了 “对称正半定核”与“特征空间内积”的等价性,是核技巧合法性的根本来源。随后我们深入分析多项式核RBF(高斯)核的映射本质:前者将数据映射到包含所有有限阶单项式的特征空间,后者则通过泰勒展开揭示了其无穷维特征空间的等价表示。最后,我们将聚焦 RBF 核中 γ\gamma 参数的实战调优——它控制着单个样本的影响力范围,取值不当会直接导致欠拟合或过拟合

Note

读完本文,你将彻底理解“核方法”为何能从 SVM 中独立出来成为一个通用方法论——任何以内积形式表达的算法都可以被“核化”

至此,我们完成了第一阶段:基础监督学习的全部内容——从线性回归的基石出发,历经逻辑回归的判别概率、KNN 的非参数距离、朴素贝叶斯的生成式假设,到 SVM 与核技巧的几何极致。

下一篇文章,我们将进入第二阶段:树模型与集成学习。决策树将率先登场——它放弃了一切“线性边界”和“距离度量”的假设,用最直观的“特征分裂”方式重新定义分类与回归,为后续的随机森林和梯度提升家族奠定根基。


一、核函数

1.1 特征映射

假设我们有一个二维数据集,在原始空间中线性不可分。一个自然的想法是把数据映射到更高维的空间,在高维空间中它们可能变得线性可分

设特征映射为 ϕ:XF\phi: \mathcal{X} \rightarrow \mathcal{F},其中 F\mathcal{F}高维特征空间(甚至是无穷维的)。在特征空间中,线性SVM的对偶问题变为:

maxαi=1Nαi12i=1Nj=1Nαiαjyiyjϕ(xi)Tϕ(xj)\max_{\alpha} \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j \cdot \phi(x_i)^T \phi(x_j)

关键问题是 真的需要显式计算 ϕ(xi)\phi(x_i) 吗? 如果特征空间的维度是 10610^6 甚至无穷大,显式计算特征映射在计算上是不可行的。

1.2 核函数的定义

核函数(Kernel Function)就是一个巧妙的替代方案。它定义为:

K(x,z)=ϕ(x)Tϕ(z)\boxed{K(x, z) = \phi(x)^T \phi(z)}
  • 核函数直接计算两个样本在特征空间中的内积,而不需要我们显式地知道 ϕ\phi 是什么。
  • 核函数可以理解为一种相似性度量 —— K(x,z)K(x, z) 越大,表示 xxzz 在特征空间中越相似

1.3 核函数的三个基本性质

一个函数要想成为合法的核函数,必须满足以下条件:

  1. 对称性K(x,z)=K(z,x)K(x, z) = K(z, x),因为内积是对称的
  2. 连续性:作为相似性度量,应该是平滑的
  3. 正半定性(Positive Semi-Definite) :对于任意 NN 个样本 {x1,...,xN}\{x_1, ..., x_N\}核矩阵(Gram矩阵)Kij=K(xi,xj)K_{ij} = K(x_i, x_j) 必须是正半定的,即所有特征值非负 —— 此性质尤其重要,它保证了优化问题是凸的,从而有唯一的全局最优解

二、Mercer定理

2.1 直观含义

Mercer定理(1909年,由James Mercer提出)是核方法的理论基石。

核心思想是如果一个对称连续的核函数 KK 能保证对任意有限样本集形成的Gram矩阵都是正半定的,那么就一定存在一个特征映射 ϕ\phi,使得 K(x,z)=ϕ(x)Tϕ(z)K(x, z) = \phi(x)^T \phi(z)

也就是说Mercer定理保证了“核函数”与“特征空间中的内积”是等价的

2.2 数学表述

更严格地,Mercer定理可以表述为:

X\mathcal{X} 是紧集,K:X×XRK: \mathcal{X} \times \mathcal{X} \rightarrow \mathbb{R} 是一个连续、对称、正定的核函数。则存在一组正交特征函数 {ψj}j=1\{\psi_j\}_{j=1}^{\infty}非负特征值 {λj}j=1\{\lambda_j\}_{j=1}^{\infty},使得:

K(x,z)=j=1λjψj(x)ψj(z)K(x, z) = \sum_{j=1}^{\infty} \lambda_j \psi_j(x) \psi_j(z)

其中级数在 X×X\mathcal{X} \times \mathcal{X}绝对且一致收敛

这个展开式意味着,核函数可以分解为无穷多个特征函数的加权和,而每个特征函数 ψj\psi_j 可以看作是特征映射的一个坐标

2.3 重要意义

Mercer定理为核方法提供了三个关键保证:

  1. 存在性保证:任何一个满足条件的核函数,都对应着某个(可能是无穷维的)特征空间
  2. 凸性保证:核矩阵的正半定性保证了SVM的目标函数是凸的优化问题有唯一解
  3. 计算可行性:我们可以在原始空间中计算核函数值,而无需涉足高维特征空间

总而言之,Mercer定理告诉我们“可以这么做”,核技巧告诉我们“怎么高效地做”。


三、核技巧

3.1 从对偶形式看核技巧

回顾软间隔SVM的对偶问题:

maxαi=1Nαi12i=1Nj=1NαiαjyiyjxiTxj内积\max_{\alpha} \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j \cdot \underbrace{x_i^T x_j}_{\text{内积}}s.t.i=1Nαiyi=0,0αiC\text{s.t.} \quad \sum_{i=1}^{N} \alpha_i y_i = 0, \quad 0 \leq \alpha_i \leq C

核技巧的核心操作即为把对偶问题中的内积 xiTxjx_i^T x_j 替换为核函数 K(xi,xj)K(x_i, x_j)

maxαi=1Nαi12i=1Nj=1NαiαjyiyjK(xi,xj)\boxed{\max_{\alpha} \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j \cdot K(x_i, x_j)}

这样一替换,线性SVM就变成了非线性SVM

3.2 预测时的核技巧

训练完成后,对于新样本 xx'决策函数为:

f(x)=sign(i=1NαiyiK(xi,x)+b)f(x') = \text{sign}\left( \sum_{i=1}^{N} \alpha_i y_i K(x_i, x') + b \right)

同样,我们只需要计算核函数,而不需要显式计算 ϕ(x)\phi(x')

3.3 核技巧的通用性

核技巧并不仅限于SVM。任何可以用内积形式表达的算法都可以被“核化” ——包括主成分分析(Kernel PCA)、岭回归(Kernel Ridge Regression)、Fisher判别分析等。


四、常用核函数及其映射本质

4.1 线性核(Linear Kernel)

K(x,z)=xTz\boxed{K(x, z) = x^T z}

线性核实际上就是不做任何映射ϕ(x)=x\phi(x) = x。它对应的是原始空间中的线性模型,是核方法的特例。

适用场景:数据本身线性可分,或特征维度已经很高(如文本分类中的词袋模型)。

明白了,你希望我把“清晰的解释”直接融进你原有的笔记内容里,而不是另起炉灶单独举例。下面是我替你优化后的 4.2 节,保留了你的所有公式,但在关键位置(特别是展开式和映射的对应关系)增加了逐项拆解大白话批注,帮你彻底捅破这层窗户纸。


4.2 多项式核(Polynomial Kernel)

K(x,z)=(xTz+c)d\boxed{K(x, z) = (x^T z + c)^d}

其中 dd 是多项式的次数c0c \geq 0常数项(通常取1)。

映射本质:多项式核对应的特征映射 ϕ(x)\phi(x) 包含了所有次数不超过 dd 的单项式

示例理解

以二维输入 x=(x1,x2)x = (x_1, x_2)d=2d=2c=1c=1 为例 —— K(x,z)=(x1z1+x2z2+1)2K(x, z) = (x_1 z_1 + x_2 z_2 + 1)^2

展开后:K(x,z)=1+2x1z1+2x2z2+x12z12+2x1x2z1z2+x22z22K(x, z) = 1 + 2x_1 z_1 + 2x_2 z_2 + x_1^2 z_1^2 + 2x_1 x_2 z_1 z_2 + x_2^2 z_2^2

把展开式和高维点积 ϕ(x)Tϕ(z)\phi(x)^T \phi(z) 逐项对照一下:高维空间里的点积就是两组六维向量对应位置相乘再相加。我们把 ϕ(x)\phi(x)ϕ(z)\phi(z) 写出来,算一下它们的点积:

ϕ(x)Tϕ(z)=11+(2x1)(2z1)+(2x2)(2z2)+(x12)(z12)+(2x1x2)(2z1z2)+(x22)(z22)\phi(x)^T \phi(z) = 1 \cdot 1 + (\sqrt{2}x_1) \cdot (\sqrt{2}z_1) + (\sqrt{2}x_2) \cdot (\sqrt{2}z_2) + (x_1^2) \cdot (z_1^2) + (\sqrt{2}x_1 x_2) \cdot (\sqrt{2}z_1 z_2) + (x_2^2) \cdot (z_2^2)

对应的特征映射为(忽略常数系数):ϕ(x)=(1,2x1,2x2,x12,2x1x2,x22)\phi(x) = (1, \sqrt{2}x_1, \sqrt{2}x_2, x_1^2, \sqrt{2}x_1 x_2, x_2^2)

观察到,二维数据被映射到了六维特征空间!在原始空间中,我们只需要计算 (xTz+1)2(x^T z + 1)^2 这个标量值,就等价于在六维空间中计算内积

好的,我把你的 4.3 节在保留原有公式和结论的基础上,进行了三层丰富

  • 第一层:先给你一个直觉上的“相似度”理解(解决“这公式到底在干嘛”的困惑)。
  • 第二层:在泰勒展开处增加了**“逐项对照配凑”**的细节,而不是直接蹦出特征映射。
  • 第三层:增加了 “参数 γ 的实战指南”,让你知道调参时脑子里该想什么。

你可以直接用下面这个增强版替换你笔记中的 4.3 节:


4.3 RBF(高斯)核

K(x,z)=exp(γxz2)\boxed{K(x, z) = \exp\left(-\gamma \|x - z\|^2\right)}

其中 γ>0\gamma > 0 控制核函数的宽度。等价形式为 K(x,z)=exp(xz22σ2)K(x, z) = \exp\left(-\frac{\|x - z\|^2}{2\sigma^2}\right),其中 γ=12σ2\gamma = \frac{1}{2\sigma^2}

RBF核是最常用的核函数,因为它只有一个参数性能优异

直觉理解 —— 在 RBF 核的视角下,两个样本的相似度只取决于它们欧氏距离的平方

  • xxzz 完全重合时,xz2=0\|x - z\|^2 = 0K(x,z)=e0=1K(x, z) = e^0 = 1极度相似)。
  • xxzz 距离无限远时,xz2\|x - z\|^2 \to \inftyK(x,z)0K(x, z) \to 0几乎不相似)。

所以,RBF 核本质上是一个“局部相似度”度量器 —— 它只在样本点附近产生显著影响,距离一拉远,影响就指数级衰减了。

无穷维特征空间的数学推导 —— RBF核的特征映射是无穷维的

我们不直接去造那个无穷长的向量,而是通过泰勒展开来“证明”它的等价性。

第一步:拆解平方项(把范数变成内积)

由范数性质 xz2=x2+z22xTz\|x - z\|^2 = \|x\|^2 + \|z\|^2 - 2x^T z,代入原式得:

K(x,z)=eγx2γz2+2γxTz=eγx2eγz2e2γxTzK(x, z) = e^{-\gamma \|x\|^2 - \gamma \|z\|^2 + 2\gamma x^T z} = e^{-\gamma \|x\|^2} \cdot e^{-\gamma \|z\|^2} \cdot e^{2\gamma x^T z}

第二步:对关键部分进行泰勒展开(核心配凑)

回忆高数中的指数泰勒展开公式:et=1+t+t22!+=n=0tnn!e^t = 1 + t + \frac{t^2}{2!} + \dots = \sum_{n=0}^{\infty} \frac{t^n}{n!}。把 t=2γxTzt = 2\gamma x^T z 代进去:

e2γxTz=n=0(2γ)nn!(xTz)ne^{2\gamma x^T z} = \sum_{n=0}^{\infty} \frac{(2\gamma)^n}{n!} (x^T z)^n

代回上式,得到:

K(x,z)=n=0(2γ)nn![eγx2eγz2(xTz)n]K(x, z) = \sum_{n=0}^{\infty} \frac{(2\gamma)^n}{n!} \left[ e^{-\gamma \|x\|^2} \cdot e^{-\gamma \|z\|^2} \cdot (x^T z)^n \right]

第三步:配凑出“无穷维内积”的形式

把这一整串式子写成 xx 的某部分” 与 “zz 的某部分” 相乘再求和 的形式。

以最简单的 1 维输入(xxzz 是标量)为例,(xTz)n=xnzn(x^T z)^n = x^n z^n。于是括号内变为 eγx2eγz2xnzne^{-\gamma \|x\|^2} \cdot e^{-\gamma \|z\|^2} \cdot x^n z^n

把它拆成“只含 xx 的因子”乘以“只含 zz 的因子”

((2γ)nn!eγx2xn)((2γ)nn!eγz2zn)\left( \sqrt{\frac{(2\gamma)^n}{n!}} \cdot e^{-\gamma \|x\|^2} \cdot x^n \right) \cdot \left( \sqrt{\frac{(2\gamma)^n}{n!}} \cdot e^{-\gamma \|z\|^2} \cdot z^n \right)

第四步:无穷维特征映射 ϕ(x)\phi(x)

观察上式,nn00 取到 \infty每一个 nn 对应向量的一个维度。因此可以定义如下无穷维向量

ϕ(x)=eγx2(1,2γ1!x,(2γ)22!x2,(2γ)33!x3,)\phi(x) = e^{-\gamma \|x\|^2} \left( 1, \sqrt{\frac{2\gamma}{1!}}x, \sqrt{\frac{(2\gamma)^2}{2!}}x^2, \sqrt{\frac{(2\gamma)^3}{3!}}x^3, \dots \right)

ϕ(x)\phi(x)ϕ(z)\phi(z)点积(对应项相乘再累加),正好还原回上一步的无穷级数求和,即 ϕ(x)Tϕ(z)=K(x,z)\phi(x)^T \phi(z) = K(x, z)

结论 —— RBF核是无穷多个多项式核的加权和

数学上体现在第二步的展开式中——(xTz)n(x^T z)^n 就是次数为 nn 的多项式核,加权系数是 (2γ)nn!\frac{(2\gamma)^n}{n!}。这意味着:

  • 线性核只有 1 阶特征。
  • 多项式核只有有限 dd 阶特征。
  • RBF核则同时拥有 0 阶、1 阶、2 阶……直到无穷阶 的全部特征。

所以,RBF 核可以在无穷维空间中计算内积,而我们只需要在原始空间中计算一个指数函数。这就是核技巧的威力所在——我们用极其廉价的计算,换来了理论上无限复杂的特征空间,唯一的代价就是需要小心调整 γ\gamma 防止过拟合。

适用场景绝大多数非线性问题,是SVM的默认选择。

代码实现

def rbf_kernel(x, z, gamma=1.0):
"""RBF(高斯)核函数"""
return np.exp(-gamma * np.linalg.norm(x - z) ** 2)
x = np.array([1, 2])
z = np.array([3, 4])
print(f"RBF核 (gamma=1.0): {rbf_kernel(x, z, gamma=1.0):.4f}")
# 输出: exp(-1 * ((1-3)^2 + (2-4)^2)) = exp(-8) ≈ 0.0003

4.4 Sigmoid核

K(x,z)=tanh(γxTz+r)K(x, z) = \tanh(\gamma x^T z + r)

其中 γ>0\gamma > 0rr 是偏移量。

Sigmoid核源自神经网络,但对于某些参数取值,它不满足Mercer条件(即不是正半定的)。尽管如此,它在实践中仍然可能表现良好。

适用场景:特定问题中可作为神经网络的替代


五、RBF核中超参数的影响

5.1 gamma 的几何含义

在RBF核 K(x,z)=exp(γxz2)K(x, z) = \exp(-\gamma \|x - z\|^2) 中,γ\gamma 控制着单个训练样本的影响力范围

  • 较小的 γ\gamma :影响力范围 —— 即使距离较远的样本也会相互影响,决策边界平滑
  • 较大的 γ\gamma :影响力范围 —— 只有非常接近的样本才会相互影响,决策边界复杂

γ\gamma 可以被理解为 RBF核的“半径”的倒数

5.2 gamma 对过拟合/欠拟合的影响

scikit-learn 官方文档用验证曲线清晰地展示了 γ\gamma 的影响:

γ\gamma 取值训练集表现验证集表现诊断
非常小(如 10610^{-6}欠拟合 —— 模型过于平滑,无法捕捉数据模式
中等(如 10310110^{-3} \sim 10^{-1}良好 —— 模型复杂度适中
非常大(如 1010极高(接近100%)过拟合 —— 每个样本只影响自己,决策边界极度扭曲
  • γ\gamma 非常小时:RBF核几乎对所有样本对都给出接近1的值;模型相当于一个非常平滑的模型,类似于线性模型无法捕捉数据的复杂结构 → 欠拟合
  • γ\gamma 非常大时:只有几乎完全相同的样本才会互相影响;每个支持向量只管辖自己周围极小的一片区域,决策边界变得极度曲折完美拟合每一个训练点 → 过拟合
  • γ\gamma 取中间值时:样本的影响力范围适中;决策边界既能捕捉数据的主要模式,又不会被噪声过度影响,验证集表现最佳

5.3 与参数 C 的协同作用

γ\gammaCC 共同控制着RBF-SVM的复杂度:

  • γ\gamma 控制着特征空间的“曲率” —— 决定模型能拟合多复杂的决策边界
  • CC 控制着对误分类的容忍度 —— 决定模型是否愿意为了拟合个别点而牺牲平滑性

在实践中,γ\gammaCC 通常需要在对数空间中通过网格搜索进行调优(如 103,102,...,10310^{-3}, 10^{-2}, ..., 10^3)。

代码实现

from sklearn.svm import SVC
from sklearn.model_selection import validation_curve
from sklearn.datasets import load_digits
import numpy as np
import matplotlib.pyplot as plt
# 加载数据(二分类:1 vs 2)
X, y = load_digits(return_X_y=True)
mask = np.isin(y, [1, 2])
X, y = X[mask], y[mask]
# 验证曲线:观察gamma的影响
param_range = np.logspace(-6, -1, 5)
train_scores, test_scores = validation_curve(
SVC(kernel='rbf', C=1.0),
X, y,
param_name='gamma',
param_range=param_range,
cv=5,
scoring='accuracy'
)
# 绘制结果
train_mean = np.mean(train_scores, axis=1)
test_mean = np.mean(test_scores, axis=1)
plt.semilogx(param_range, train_mean, label='Training score', marker='o')
plt.semilogx(param_range, test_mean, label='Validation score', marker='o')
plt.xlabel('gamma')
plt.ylabel('Accuracy')
plt.legend()
plt.title('Validation Curve for SVM with RBF Kernel')
plt.show()
# 观察:gamma极小时两者都低(欠拟合),gamma适中时两者都高,
# gamma过大时训练高但验证低(过拟合)

六、核函数的组合与构造

6.1 核函数的代数运算

如果 K1K_1K2K_2 是合法的核函数,那么以下组合也是合法的核函数:

  1. 加法K(x,z)=K1(x,z)+K2(x,z)K(x, z) = K_1(x, z) + K_2(x, z)
  2. 数乘K(x,z)=cK1(x,z)K(x, z) = c \cdot K_1(x, z),其中 c0c \geq 0
  3. 乘法K(x,z)=K1(x,z)K2(x,z)K(x, z) = K_1(x, z) \cdot K_2(x, z)
  4. 多项式K(x,z)=p(K1(x,z))K(x, z) = p(K_1(x, z)),其中 pp 是正系数多项式
  5. 指数K(x,z)=exp(K1(x,z))K(x, z) = \exp(K_1(x, z))

这些性质允许我们根据问题的特点定制核函数

6.2 选择核函数的方法

场景推荐核函数原因
特征维度远大于样本数线性核数据在高维空间中通常已经线性可分
特征数适中,样本数适中RBF核通用性强,只有一个超参数
特征数很少,需要复杂交互多项式核可以显式控制特征交互的次数
神经网络类比Sigmoid核等价于单隐层神经网络

实际建议当不确定时,先用RBF核。它是最通用、最稳健的选择。


总结
概念核心内容
核函数K(x,z)=ϕ(x)Tϕ(z)K(x,z) = \phi(x)^T\phi(z)在原始空间中计算高维特征空间的内积
Mercer定理对称连续的PSD核函数一定对应某个(可能无穷维的)特征映射
核技巧将对偶问题中的内积替换为核函数,将线性算法扩展为非线性
多项式核K=(xTz+c)dK=(x^Tz+c)^d,映射到包含所有 ≤ d阶单项式的特征空间
RBF核K=exp(γxz2)K=\exp(-\gamma\|x-z\|^2),映射到无穷维特征空间
gamma参数控制单个样本的影响力范围:小→欠拟合,中→良好,大→过拟合

核心要点回顾

  1. 核函数的本质:核函数 K(x,z)K(x,z) 是在原始空间中计算高维(甚至无穷维)特征空间的内积。它让我们既享受了高维映射的好处,又避免了高维计算的代价。
  2. Mercer定理:保证了“核函数”与“特征空间内积”的等价性。任何满足对称性、连续性和正半定性的核函数,都对应着某个特征映射
  3. 核技巧:将SVM对偶问题中的内积 xiTxjx_i^T x_j 替换为核函数 K(xi,xj)K(x_i, x_j),一句话将线性SVM变成了非线性SVM。这种技巧可以推广到任何以内积形式表达的算法
  4. 多项式核的映射:将 dd 维输入映射到包含所有次数不超过 dd 的单项式的特征空间。维度从 pp 暴涨到 (p+dd)\binom{p+d}{d}
  5. RBF核的无穷维映射:通过泰勒展开可知,RBF核等价于无穷多个多项式核的加权和,对应的特征空间是无穷维的。这是核技巧的体现——在原始空间中算一个指数函数,就等价于在无穷维空间中算内积。
  6. gamma参数控制RBF核的宽度γ\gamma 太小 → 欠拟合(模型过于平滑),γ\gamma 太大 → 过拟合(每个样本只影响自己)。通常需要在对数空间中进行网格搜索调优。
分享:

学习路径

按顺序完成这组文章,循序渐进地掌握主题

学习进度6 / 15
  1. 1Linear Regression —— 线性回归
  2. 2Logistic Regression —— 逻辑回归与Softmax多分类
  3. 3K-Nearest Neighbor (KNN) —— K-近邻
  4. 4Naive Bayes —— 朴素贝叶斯
  5. 5Support Vector Machine (SVM) —— 支持向量机
  6. 6Kernel Trick —— 核技巧与常用核函数
  7. 7Decision Tree —— 决策树
  8. 8Bagging & Random Forest —— 随机森林
  9. 9Adaptive Boosting (AdaBoost) —— 自适应提升
  10. 10Gradient Boosting Machine (GBM) —— 梯度提升机与加法模型
  11. 11XGBoost & LightGBM —— 梯度提升框架
  12. 12Principal Component Analysis (PCA) —— 主成分分析
  13. 13K-Means Clustering —— 聚类算法
  14. 14Expectation-Maximization Algorithm —— EM算法
  15. 15Hidden Markov Model (HMM) —— 隐马尔可夫模型