第8讲 贝叶斯决策与概率模型 8.1 模式识别 模式 Pattern
模式(认知心理学):由若干元素或成分按一定关系形成的某种刺激结构。 模式(机器学习):人们在一定条件环境下,根据一定需要对自然事物的一种抽象的分类概念。模式集合记为 Ω = { ω 1 , ⋯ , ω C } \Omega=\{\omega_1,\cdots, \omega_C\} Ω = { ω 1 , ⋯ , ω C } 。 样本/对象 (sample, object) :自然界的具体事物,具有一定的类别特性,是抽象模式的具体体现。样本的观测量记为 x = [ x 1 , ⋯ , x N ] T \boldsymbol{x}=[x_1,\cdots, x_N]^T x = [ x 1 , ⋯ , x N ] T 。
模式识别:寻求样本观测量与类别属性的联系 g ( x ) = ω i g(\boldsymbol{x})=\omega_i g ( x ) = ω i 。
特征 Feature:
认知心理学层面:特征是构成模式的元素或成分,以及关系。 机器学习层面:对被识别对象经观察、测量或计算产生的要素。 特征空间:预处理之后分类识别依赖的数据空间。两个概念:特征提取器和模式分类器。
8.2 特征提取与变换 特征变换:降维。
x ∈ R p → z = f ( x ) → z ∈ R k , k < p \boldsymbol{x}\in \mathbb{R}^p \to \boldsymbol{z}=f(\boldsymbol{x}) \to \boldsymbol{z}\in \mathbb{R}^k,\quad k<p x ∈ R p → z = f ( x ) → z ∈ R k , k < p 机器学习中的维度灾难:在给定精度下,准确地对某些变量的函数进行估计,所需样本量会随着样本维数的增加而呈指数形式增长。
Quote
如果训练集可以达到理论上的无限个,那么就不存在维度灾难,我们可以用无限个维度去得到一个完美的分类器。训练集样本越少,越应该用少量的特征,如果 N N N 个训练样本足够覆盖一个一维的特征空间(区间大小为一个单位),那么需要 N 2 N^2 N 2 个样本去覆盖一个同样密度的二维的特征空间,需要 N 3 N^3 N 3 个样本去覆盖三维的特征空间。换句话说,就是训练样本多少需要随着维度指数增长。
过拟合:维度增加时,有限的样本空间会越来越稀疏。因此模型出现在训练集上表现良好,但对新数据缺乏泛化能力的现象。
特征降维的意义:克服维数灾难;获取本质特征;节省存储空间;去除无用噪声;实现数据可视化。
由原始特征产生出对分类识别最有效、数目最少的特征,需要保证:同类样本的不变性(Invariant),异类样本的鉴别性(Discriminative),对噪声的鲁棒性(Robust)。
特征降维常见方法:特征选择,特征变换。
8.2.1 PCA 主成分分析 PCA (Principal Component Analysis):Principal component analysis - Wikipedia 。
输入数据: n n n 个 p p p 维的样本 x i ∈ R p \boldsymbol{x}_i\in \mathbb{R}^p x i ∈ R p , i = 1 , ⋯ , n i=1,\cdots,n i = 1 , ⋯ , n 。
目标:寻找最优(方差保留)的 k k k 个投影方向并进行特征变换降维。
(1)计算样本点 x 1 , ⋯ x n \boldsymbol{x}_1,\cdots\boldsymbol{x}_n x 1 , ⋯ x n 的均值和协方差 μ , Σ \boldsymbol{\mu},\boldsymbol{\Sigma} μ , Σ 。
μ = 1 n ∑ i = 1 n x i Σ = E [ ( x − μ ) ( x − μ ) T ] = 1 n ∑ i = 1 n ( x i − μ ) ( x i − μ ) T \boldsymbol{\mu}=\frac{1}{n}\sum_{i=1}^n\boldsymbol{x}_i \\ \boldsymbol{\Sigma}=\mathbb{E}[(\boldsymbol{x}-\boldsymbol{\mu})(\boldsymbol{x}-\boldsymbol{\mu})^T] =\frac{1}{n}\sum_{i=1}^n(\boldsymbol{x}_i-\boldsymbol{\mu})(\boldsymbol{x}_i-\boldsymbol{\mu})^T μ = n 1 i = 1 ∑ n x i Σ = E [( x − μ ) ( x − μ ) T ] = n 1 i = 1 ∑ n ( x i − μ ) ( x i − μ ) T 上面求协方差时使用了 去中心化 x i = x i − μ \boldsymbol{x}_i=\boldsymbol{x}_i-\boldsymbol{\mu} x i = x i − μ ,也即变为零均值 。如果是 无偏估计 ,则 散度矩阵/样本协方差矩阵 变为 Σ = 1 n − 1 ∑ i = 1 n ( x i − μ ) ( x i − μ ) T \boldsymbol{\Sigma}=\dfrac{1}{n-1}\displaystyle\sum_{i=1}^n(\boldsymbol{x}_i-\boldsymbol{\mu})(\boldsymbol{x}_i-\boldsymbol{\mu})^T Σ = n − 1 1 i = 1 ∑ n ( x i − μ ) ( x i − μ ) T 。但实际上,该系数并不会对后面求特征向量造成影响,只是特征值进行了缩放。
关于前面的系数是 1/n 还是 1/(n-1) ,区分不同的场景:最大似然估计的数学推导出来前面是 1/n,这是符合最大似然估计优化原理的理论推导结果。但是在实际用的时候,发现就是这个理论推导的估计有问题,所以重新定义了样本协方差矩阵,前面是 1/(n-1)。简化理解,就是 1/n 是理论推导,1/(n-1) 是实际使用。
(2)对协方差矩阵 Σ \boldsymbol{\Sigma} Σ 进行特征值分解。
(3)选取前 k k k 个特征值最大的特征向量 v 1 , ⋯ , v k \boldsymbol{v}_1,\cdots,\boldsymbol{v}_k v 1 , ⋯ , v k 。
(4)将样本点投影到由 v 1 , ⋯ , v k \boldsymbol{v}_1,\cdots,\boldsymbol{v}_k v 1 , ⋯ , v k 张成的子空间(各个列向量需要归一化 )上,得到降维后的样本点 z i = V T ( x i − μ ) \boldsymbol{z}_i=\boldsymbol{V}^T(\boldsymbol{x}_i-\boldsymbol{\mu}) z i = V T ( x i − μ ) 。
(5)重建: k k k 维投影子空间内的某个向量 z \boldsymbol{z} z ,可以重构原始空间的向量 x ~ = V z + μ \tilde{\boldsymbol{x}}=\boldsymbol{V}\boldsymbol{z}+\boldsymbol{\mu} x ~ = V z + μ 。
应用案例:基于 PCA 变换的人脸识别。
PCA 的几何意义:样本 x i , ⋯ x n \boldsymbol{x}_i,\cdots\boldsymbol{x}_n x i , ⋯ x n 在 p p p 维空间中形成一个椭球形云团,散度矩阵/协方差矩阵的特征向量即为椭球状云团的主轴。PCA 提取云团散度最大的主轴方向进行特征降维。
PCA 的优缺点分析:
优点:采用样本协方差矩阵的特征向量作为变换的基向量,与样本的统计特性完全匹配。PCA 在 最小均方误差准则 下是最佳变换。 缺点:变换矩阵随样本数据而异,无快速算法(散度最大不一定最利于区分样本类别)。 t-SNE (t-distributed stochastic neighbor embedding)
高维空间: 以数据点在 x i x_i x i 为中心的高斯分布中所占概率密度为标准选择近邻:
p j ∣ i = exp ( − ∥ x i − x j ∥ 2 / 2 σ i 2 ) ∑ k ≠ i exp ( − ∥ x i − x k ∥ 2 / 2 σ i 2 ) p i j = p i ∣ j + p j ∣ i 2 N p_{j|i} = \frac{\exp\left(-\|x_i - x_j\|^2 / 2\sigma_i^2\right)}{\displaystyle\sum_{k \neq i} \exp\left(-\|x_i - x_k\|^2 / 2\sigma_i^2\right)} \\ p_{ij} = \frac{p_{i|j} + p_{j|i}}{2N} p j ∣ i = k = i ∑ exp ( − ∥ x i − x k ∥ 2 /2 σ i 2 ) exp ( − ∥ x i − x j ∥ 2 /2 σ i 2 ) p ij = 2 N p i ∣ j + p j ∣ i 低维空间: 以 t 分布替代高斯分布表达距离:
q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 q_{ij} = \frac{\left(1 + \|y_i - y_j\|^2\right)^{-1}}{\displaystyle\sum_{k \neq l} \left(1 + \|y_k - y_l\|^2\right)^{-1}} q ij = k = l ∑ ( 1 + ∥ y k − y l ∥ 2 ) − 1 ( 1 + ∥ y i − y j ∥ 2 ) − 1 优化目标:高维空间和低维空间的概率分布之间距离——KL 散度 (Kullback-Leibler divergences):
C = ∑ i K L ( P i ∥ Q i ) = ∑ i ∑ j p i j log p i j q i j C = \sum_i KL(P_i \| Q_i) = \sum_i \sum_j p_{ij} \log \frac{p_{ij}}{q_{ij}} C = i ∑ K L ( P i ∥ Q i ) = i ∑ j ∑ p ij log q ij p ij 推导 C C C 对于 y i y_i y i 的梯度为:
∂ C ∂ y i = 4 ∑ j ( p i j − q i j ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 \frac{\partial C}{\partial y_i} = 4 \sum_j (p_{ij} - q_{ij})(y_i - y_j)\left(1 + \| y_i - y_j \|^2\right)^{-1} ∂ y i ∂ C = 4 j ∑ ( p ij − q ij ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 利用梯度下降求解 x i x_i x i 的低维映射 y i y_i y i 。
8.3 Bayes Decision 8.3.1 数学基础 条件概率和联合概率:
假设 A 和 B 是一个样本空间中的两个事件,在假定 B 发生的条件下,A 发生的条件概率为:
P ( A ∣ B ) = P ( A , B ) P ( B ) P(A|B) = \frac{P(A,B)}{P(B)} P ( A ∣ B ) = P ( B ) P ( A , B ) 事件 A 和事件 B 的联合概率为:
P ( A , B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A,B) = P(A|B)P(B) = P(B|A)P(A) P ( A , B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) 假设 A 1 A_1 A 1 和 A 2 A_2 A 2 是互斥的两个事件,且 A 1 ∪ A 2 = S A_1 \cup A_2 = S A 1 ∪ A 2 = S ,事件 B B B 发生的概率(边际概率)为 全概率公式 :
P ( B ) = P ( B ∣ A 1 ) P ( A 1 ) + P ( B ∣ A 2 ) P ( A 2 ) P(B) = P(B|A_1)P(A_1) + P(B|A_2)P(A_2) P ( B ) = P ( B ∣ A 1 ) P ( A 1 ) + P ( B ∣ A 2 ) P ( A 2 ) 两事件的贝叶斯定理为:
P ( A i ∣ B ) = P ( A i ) P ( B ∣ A i ) P ( A 1 ) P ( B ∣ A 1 ) + P ( A 2 ) P ( B ∣ A 2 ) , i = 1 , 2 P(A_i|B) = \frac{P(A_i)P(B|A_i)}{P(A_1)P(B|A_1) + P(A_2)P(B|A_2)}, \quad i = 1, 2 P ( A i ∣ B ) = P ( A 1 ) P ( B ∣ A 1 ) + P ( A 2 ) P ( B ∣ A 2 ) P ( A i ) P ( B ∣ A i ) , i = 1 , 2 n 事件的贝叶斯定理为:
P ( A i ∣ B ) = P ( A i ) P ( B ∣ A i ) ∑ j = 1 n P ( A j ) P ( B ∣ A j ) P(A_i|B) = \frac{P(A_i)P(B|A_i)}{\displaystyle\sum_{j=1}^{n} P(A_j)P(B|A_j)} P ( A i ∣ B ) = j = 1 ∑ n P ( A j ) P ( B ∣ A j ) P ( A i ) P ( B ∣ A i ) 两事件的贝叶斯定理为:
P ( A i ∣ B ) = P ( A i ) P ( B ∣ A i ) P ( B ) , i = 1 , 2 P(A_i|B) = \frac{P(A_i)P(B|A_i)}{P(B)}, \quad i = 1, 2 P ( A i ∣ B ) = P ( B ) P ( A i ) P ( B ∣ A i ) , i = 1 , 2 模式识别中的贝叶斯定理表示:
P ( ω i ∣ x ) = P ( ω i ) P ( x ∣ ω i ) P ( x ) , i = 1 , 2 P(\omega_i|x) = \frac{P(\omega_i)P(x|\omega_i)}{P(x)}, \quad i = 1, 2 P ( ω i ∣ x ) = P ( x ) P ( ω i ) P ( x ∣ ω i ) , i = 1 , 2 通过观测 x x x 将先验概率 P ( ω i ) P(\omega_i) P ( ω i ) 转化为后验概率 P ( ω i ∣ x ) P(\omega_i|x) P ( ω i ∣ x ) ,其中 P ( x ) P(x) P ( x ) 是边际概率, P ( x ∣ ω i ) P(x|\omega_i) P ( x ∣ ω i ) 是似然函数。
贝叶斯定理的核心是“执果索引 ”,后验概率 = 先验概率 × 似然函数 / 边际概率。
贝叶斯决策 Bayes Decision :在所有相关概率已知的条件下,考虑如何利用已知概率,以最小化误判损失函数 为目标来选取最优的类别标记。贝叶斯决策是概率框架下实施决策的基本方法。
8.3.2 正态分布下的贝叶斯决策 假设 类条件概率密度函数 为正态分布:
x ∣ ω i ∼ N ( μ i , Σ i ) p ( x ∣ ω i ) = 1 ( 2 π ) d / 2 ∣ Σ i ∣ exp { − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) } \boldsymbol{x}|\omega_i \sim \mathcal{N}(\boldsymbol{\mu}_i, \boldsymbol{\Sigma}_i) \\ p(\boldsymbol{x}|\omega_i) = \frac{1}{(2\pi)^{d/2}\sqrt{|\boldsymbol{\Sigma}_i|}} \exp \left\{ -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}_i^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i) \right\} x ∣ ω i ∼ N ( μ i , Σ i ) p ( x ∣ ω i ) = ( 2 π ) d /2 ∣ Σ i ∣ 1 exp { − 2 1 ( x − μ i ) T Σ i − 1 ( x − μ i ) } 其中 μ i \boldsymbol{\mu}_i μ i 是类别 ω i \omega_i ω i 的均值向量, Σ i \boldsymbol{\Sigma}_i Σ i 是类别 ω i \omega_i ω i 的协方差矩阵。
判别函数定义为:
G i ( x ) = p ( x ∣ ω i ) p ( ω i ) G_i(\boldsymbol{x}) = p(\boldsymbol{x}|\omega_i)p(\omega_i) G i ( x ) = p ( x ∣ ω i ) p ( ω i ) 取对数后判别函数为:
g i ( x ) = − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) − d 2 ln ( 2 π ) − 1 2 ln ∣ Σ i ∣ + ln p ( ω i ) g_i(\boldsymbol{x}) = -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}_i^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i) - \frac{d}{2} \ln(2\pi) - \frac{1}{2} \ln|\boldsymbol{\Sigma}_i| + \ln p(\omega_i) g i ( x ) = − 2 1 ( x − μ i ) T Σ i − 1 ( x − μ i ) − 2 d ln ( 2 π ) − 2 1 ln ∣ Σ i ∣ + ln p ( ω i ) 找到所有 g i ( x ) g_i(\boldsymbol{x}) g i ( x ) 的最大值,则判别为类别 ω i \omega_i ω i 。两个类之间的分类判别边界为 g i ( x ) = g j ( x ) g_i(\boldsymbol{x}) = g_j(\boldsymbol{x}) g i ( x ) = g j ( x ) 。
对于常见的 二分类问题 ,分类判别边界为 g 1 ( x ) − g 2 ( x ) = 0 g_1(\boldsymbol{x})-g_2(\boldsymbol{x})=0 g 1 ( x ) − g 2 ( x ) = 0 ,即:
g 1 ( x ) − g 2 ( x ) > 0 ⟹ x ∈ ω 1 g 1 ( x ) − g 2 ( x ) < 0 ⟹ x ∈ ω 2 g_1(\boldsymbol{x})-g_2(\boldsymbol{x}) >0 \implies \boldsymbol{x} \in \omega_1 \\ g_1(\boldsymbol{x})-g_2(\boldsymbol{x}) <0 \implies \boldsymbol{x} \in \omega_2 g 1 ( x ) − g 2 ( x ) > 0 ⟹ x ∈ ω 1 g 1 ( x ) − g 2 ( x ) < 0 ⟹ x ∈ ω 2 假设 各类先验概率相等 p ( ω i ) = 1 c , i = 1 , ⋯ c p(\omega_i)=\dfrac{1}{c},\;i=1,\cdots c p ( ω i ) = c 1 , i = 1 , ⋯ c ,协方差矩阵的三种情况:
Σ i = σ 2 I \boldsymbol{\Sigma}_i = \sigma^2 \boldsymbol{I} Σ i = σ 2 I 最小欧氏距离分类器。协方差矩阵为单位阵的倍数。 Σ i = Σ \boldsymbol{\Sigma}_i = \boldsymbol{\Sigma} Σ i = Σ 最小马氏距离分类器。所有类别的协方差矩阵相等。 Σ i ≠ Σ j , i ≠ j \boldsymbol{\Sigma}_i \neq \boldsymbol{\Sigma}_j,\;i \neq j Σ i = Σ j , i = j ,二次判别函数。各个类的协方差矩阵各不相同。 下面对这几种情况具体讨论
协方差矩阵相等且为对角阵 假设 样本的特征向量的各个分量独立且具有相同的方差 σ 2 \sigma^2 σ 2 ,则协方差矩阵为 Σ i = σ 2 I , i = 1 , ⋯ c \boldsymbol{\Sigma}_i = \sigma^2 \boldsymbol{I},\;i=1,\cdots c Σ i = σ 2 I , i = 1 , ⋯ c 。
此时,有 ∥ Σ i ∥ = σ 2 d , Σ i − 1 = 1 σ 2 I , i − 1 , ⋯ c \| \boldsymbol{\Sigma}_i \|=\sigma^{2d},\; \boldsymbol{\Sigma}_i^{-1}=\dfrac{1}{\sigma^2}\boldsymbol{I},\;i-1,\cdots c ∥ Σ i ∥ = σ 2 d , Σ i − 1 = σ 2 1 I , i − 1 , ⋯ c 。
(1)条件: Σ i = σ 2 I , p ( ω i ) = 1 c , i = 1 , ⋯ c \boldsymbol{\Sigma}_i = \sigma^2 \boldsymbol{I},\;p(\omega_i)=\dfrac{1}{c},\;i=1,\cdots c Σ i = σ 2 I , p ( ω i ) = c 1 , i = 1 , ⋯ c 即各类先验概率都相等时,为 最小欧氏距离分类器 。
我们 忽略所有与类别无关的常数项 ,只剩下带协方差矩阵的那一项,得到判别函数:
g i ( x ) = − ∥ x − μ i ∥ 2 2 σ 2 g_i(\boldsymbol{x}) = -\frac{\|\boldsymbol{x} - \boldsymbol{\mu}_i\|^2}{2\sigma^2} g i ( x ) = − 2 σ 2 ∥ x − μ i ∥ 2 其中,欧氏距离的平方: ∥ x − μ i ∥ 2 = ( x − μ i ) T ( x − μ i ) = ∑ j = 1 d ( x j − μ i j ) 2 \|\boldsymbol{x} - \boldsymbol{\mu}_i\|^2 = (\boldsymbol{x} - \boldsymbol{\mu}_i)^T(\boldsymbol{x} - \boldsymbol{\mu}_i)=\displaystyle\sum_{j=1}^d (x_j - \mu_{ij})^2 ∥ x − μ i ∥ 2 = ( x − μ i ) T ( x − μ i ) = j = 1 ∑ d ( x j − μ ij ) 2 。
判决规则:每个样本 以它到 每类样本均值 的 欧式距离平方的最小值 确定其分类,即:
i = arg min j = 1 , ⋯ , c ∥ x − μ j ∥ 2 ⟹ x ∈ ω i i = \argmin_{j=1,\cdots,c} \|\boldsymbol{x} - \boldsymbol{\mu}_j\|^2 \implies \boldsymbol{x} \in \omega_i i = j = 1 , ⋯ , c arg min ∥ x − μ j ∥ 2 ⟹ x ∈ ω i 各类 d d d 维球状分布,判决超平面 垂直于 连接两类中心(类别均值向量)的连线。
可看作模板匹配:每个类有一个典型样本(即均值向量),称为模板;而待分类样本 x \boldsymbol{x} x 只需按欧氏距离计算与哪个模板最相似(欧氏距离最短)即可作决定。
(2)条件: Σ i = σ 2 I , p ( ω i ) ≠ p ( ω j ) \boldsymbol{\Sigma}_i = \sigma^2 \boldsymbol{I},\;p(\omega_i)\neq p(\omega_j) Σ i = σ 2 I , p ( ω i ) = p ( ω j ) 即 各类的先验概率未知,为 线性分类器 。
忽略与类别无关的常数项,得到判别函数——线性判别函数 LDF (Linear Discriminant Function):
g i ( x ) = − ∥ x − μ i ∥ 2 2 σ 2 + ln p ( ω i ) = − 1 2 σ 2 ( x T x − 2 μ i T x + μ i T μ i ) + ln p ( ω i ) ⇒ w i T x + b i w i = 1 σ 2 μ i , b i = − 1 2 σ 2 μ i T μ i + ln p ( ω i ) g_i(\boldsymbol{x}) = -\frac{\|\boldsymbol{x} - \boldsymbol{\mu}_i\|^2}{2\sigma^2} + \ln p(\omega_i) \\ = -\frac{1}{2\sigma^2} \left(\cancel{\color{red}{\boldsymbol{x}^T\boldsymbol{x}}} - 2\boldsymbol{\mu}_i^T \boldsymbol{x} + \boldsymbol{\mu}_i^T\boldsymbol{\mu}_i \right) + \ln p(\omega_i) \\ \Rightarrow \boxed{\boldsymbol{w}_i^T \boldsymbol{x} + b_i} \\ \boldsymbol{w}_i = \frac{1}{\sigma^2} \boldsymbol{\mu}_i, \quad b_i = -\frac{1}{2\sigma^2} \boldsymbol{\mu}_i^T\boldsymbol{\mu}_i + \ln p(\omega_i) g i ( x ) = − 2 σ 2 ∥ x − μ i ∥ 2 + ln p ( ω i ) = − 2 σ 2 1 ( x T x − 2 μ i T x + μ i T μ i ) + ln p ( ω i ) ⇒ w i T x + b i w i = σ 2 1 μ i , b i = − 2 σ 2 1 μ i T μ i + ln p ( ω i ) 判别函数为线性函数,决策面为超平面,决策面向先验概率小的类偏移。
协方差矩阵相等 假设 各类协方差矩阵相等,但不再是前面特殊的对角阵形式,即: Σ i = Σ , i = 1 , ⋯ c \boldsymbol{\Sigma}_i = \boldsymbol{\Sigma},\;i=1,\cdots c Σ i = Σ , i = 1 , ⋯ c 。
(3) 条件: Σ i = Σ , p ( ω i ) = 1 c , i = 1 , ⋯ c \boldsymbol{\Sigma}_i = \boldsymbol{\Sigma},\;p(\omega_i)=\dfrac{1}{c},\;i=1,\cdots c Σ i = Σ , p ( ω i ) = c 1 , i = 1 , ⋯ c 即各类先验概率都相等时,为 最小马氏距离分类器 。
马氏距离(Mahalanobis distance) d M ( x , μ i ) = ( x − μ i ) T Σ i − 1 ( x − μ i ) d_M(\boldsymbol{x},\boldsymbol{\mu}_i) = \sqrt{(\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}_i^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i)} d M ( x , μ i ) = ( x − μ i ) T Σ i − 1 ( x − μ i ) 。
判别函数为样本 x \boldsymbol{x} x 到类均值 μ i \boldsymbol{\mu}_i μ i 的马氏距离的平方 化简为:
g i ( x ) = − 1 2 d M 2 = − 1 2 ( x − μ i ) T Σ − 1 ( x − μ i ) g_i(\boldsymbol{x}) =-\frac{1}{2}d_M^2 = -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i) g i ( x ) = − 2 1 d M 2 = − 2 1 ( x − μ i ) T Σ − 1 ( x − μ i ) 几何上,具有同样概率密度函数的点的轨迹是同样大小和形状的超椭球面,中心由类均值 μ i \boldsymbol{\mu}_i μ i 决定。
各类 d d d 维椭球状分布,判决超平面通过两类中心的中点,但未必垂直于连接两类中心的连线。
(4)条件: Σ i = Σ , p ( ω i ) ≠ p ( ω j ) \boldsymbol{\Sigma}_i = \boldsymbol{\Sigma},\;p(\omega_i)\neq p(\omega_j) Σ i = Σ , p ( ω i ) = p ( ω j ) 即各类的先验概率未知,仍然为 线性分类器 。
g i ( x ) = − 1 2 ( x − μ i ) T Σ − 1 ( x − μ i ) + ln p ( ω i ) = − 1 2 ( x T Σ − 1 x − 2 μ i T Σ − 1 x + μ i T Σ − 1 μ i ) Σ − 1 + ln p ( ω i ) = w i T x + b i w i = Σ − 1 μ i , b i = − 1 2 μ i T Σ − 1 μ i + ln p ( ω i ) g_i(\boldsymbol{x}) = -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i) + \ln p(\omega_i) \\ =-\frac{1}{2}\left(\cancel{\color{red}{\boldsymbol{x}^T\boldsymbol{\Sigma}^{-1}\boldsymbol{x}}} - 2\boldsymbol{\mu}_i^T \boldsymbol{\Sigma}^{-1} \boldsymbol{x} + \boldsymbol{\mu}_i^T\boldsymbol{\Sigma}^{-1}\boldsymbol{\mu}_i \right) \boldsymbol{\Sigma}^{-1} + \ln p(\omega_i) \\ =\boxed{\boldsymbol{w}_i^T \boldsymbol{x} + b_i} \\ \boldsymbol{w}_i = \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_i, \quad b_i = -\frac{1}{2} \boldsymbol{\mu}_i^T \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu}_i + \ln p(\omega_i) g i ( x ) = − 2 1 ( x − μ i ) T Σ − 1 ( x − μ i ) + ln p ( ω i ) = − 2 1 ( x T Σ − 1 x − 2 μ i T Σ − 1 x + μ i T Σ − 1 μ i ) Σ − 1 + ln p ( ω i ) = w i T x + b i w i = Σ − 1 μ i , b i = − 2 1 μ i T Σ − 1 μ i + ln p ( ω i ) 判别函数为线性函数,决策面为超平面,决策面向先验概率小的类偏移。
协方差矩阵不相等 最一般的情况。
(5)当 Σ i ≠ Σ j , i ≠ j \boldsymbol{\Sigma}_i \neq \boldsymbol{\Sigma}_j,\;i \neq j Σ i = Σ j , i = j 各个类的协方差矩阵都不相同。
忽略与判别函数无关的常数项,得到判别函数——二次判别函数 QDF (Quadratic Discriminant Function)
g i ( x ) = − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) + ln p ( ω i ) − 1 2 ln ∣ Σ i ∣ = x T W i x + w i T x + b i W i = − 1 2 Σ i − 1 , w i = Σ i − 1 μ i , b i = − 1 2 μ i T Σ i − 1 μ i + ln p ( ω i ) − 1 2 ln ∣ Σ i ∣ g_i(x)=-\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_i)^T \boldsymbol{\Sigma}_i^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_i) + \ln p(\omega_i) - \frac{1}{2}\ln|\boldsymbol{\Sigma}_i| \\ =\boxed{\boldsymbol{x}^T\boldsymbol{W}_i\boldsymbol{x} + \boldsymbol{w}_i^T\boldsymbol{x} + b_i} \\ \boldsymbol{W}_i = -\frac{1}{2} \boldsymbol{\Sigma}_i^{-1}, \quad \boldsymbol{w}_i = \boldsymbol{\Sigma}_i^{-1} \boldsymbol{\mu}_i, \quad b_i = -\frac{1}{2} \boldsymbol{\mu}_i^T \boldsymbol{\Sigma}_i^{-1} \boldsymbol{\mu}_i + \ln p(\omega_i) - \frac{1}{2}\ln|\boldsymbol{\Sigma}_i| g i ( x ) = − 2 1 ( x − μ i ) T Σ i − 1 ( x − μ i ) + ln p ( ω i ) − 2 1 ln ∣ Σ i ∣ = x T W i x + w i T x + b i W i = − 2 1 Σ i − 1 , w i = Σ i − 1 μ i , b i = − 2 1 μ i T Σ i − 1 μ i + ln p ( ω i ) − 2 1 ln ∣ Σ i ∣ 判别函数是关于 x \boldsymbol{x} x 的二次型,决策面为二次超曲面,可能是超球面、超椭球面、超抛物面、超双曲线或超平面。
上述部分内容参考 贝叶斯决策理论 和 模式识别(贝叶斯决策) 。
8.4 参数估计方法 频率学派和贝叶斯学派:
相同点:最大似然函数 在频率学派和贝叶斯学派都具有重要的作用,其思想是认为已观测数据的概率分布是最大概率,最大概率对应的模型就是需要找的模型,“存在即合理”。 不同点:频率学派认为模型是一成不变的,即 模型参数是常数 ,常使用的参数估计方法为 极大似然估计 MLE ;贝叶斯学派认为模型是一直在变的,当获取新的信息后,模型也相应的在改变,即 模型参数是变量 ,用概率去描述模型参数的不确定性,常使用的参数估计方法为 最大后验概率估计 MAP 。 8.4.1 MLE 最大似然估计 MLE (Maximum Likelihood Estimation):已知随机变量属于某种概率分布的前提下,利用随机变量的观测值,估计出分布的一些参数值。即:“模型已定,参数未知”。
关键假设:样本值是 独立同分布 的。
最大似然估计:
l ( θ ) ≡ ln p ( D ∣ θ ) = ∑ i = 1 n ln p ( x i ∣ θ ) θ ^ = arg max θ l ( θ ) l(\theta) \equiv \ln p(D|\theta) = \sum_{i=1}^{n} \ln p(x_i|\theta) \\ \hat{\theta} = \arg \max_{\theta} l(\theta) l ( θ ) ≡ ln p ( D ∣ θ ) = i = 1 ∑ n ln p ( x i ∣ θ ) θ ^ = arg θ max l ( θ ) 其中 θ \theta θ 是模型参数,为标量或向量,具体取决于模型。 D D D 是观测数据, x i x_i x i 是第 i i i 个观测样本。
高斯分布假设的最大似然估计:
μ ^ = θ ^ 1 = 1 n ∑ k = 1 n x k Σ ^ = θ ^ 2 = 1 n ∑ k = 1 n ( x k − μ ^ ) ( x k − μ ^ ) T \hat{\boldsymbol{\mu}} = \hat{\boldsymbol{\theta}}_1 = \frac{1}{n} \sum_{k=1}^{n} \boldsymbol{x}_k \\ \hat{\boldsymbol{\Sigma}} = \hat{\boldsymbol{\theta}}_2 = \frac{1}{n} \sum_{k=1}^{n} (\boldsymbol{x}_k - \hat{\boldsymbol{\mu}})(\boldsymbol{x}_k - \hat{\boldsymbol{\mu}})^T μ ^ = θ ^ 1 = n 1 k = 1 ∑ n x k Σ ^ = θ ^ 2 = n 1 k = 1 ∑ n ( x k − μ ^ ) ( x k − μ ^ ) T 无偏估计样本 的 协方差矩阵:
C = 1 n − 1 ∑ k = 1 n ( x k − μ ^ ) ( x k − μ ^ ) T C = \frac{1}{n-1} \sum_{k=1}^{n} (x_k - \hat{\mu})(x_k - \hat{\mu})^T C = n − 1 1 k = 1 ∑ n ( x k − μ ^ ) ( x k − μ ^ ) T 8.4.2 MAP 最大后验估计 MAP (Maximum A Posteriori Estimation):给定模型形式和参数的先验分布,根据数据,找到在数据和先验下最可能的参数。
在给定数据样本的情况下,最大化模型参数的后验概率。根据已知样本,来通过调整模型参数使得模型能够产生该数据样本的概率最大,只不过对于模型参数有了一个先验假设,即模型参数可能满足某种分布,不再一味地依赖数据。参考自 极大似然估计与最大后验概率估计 - 知乎 。
最大后验概率估计可以从最大似然估计推导出来。
最大后验的实质就是对参数的每一个可能的取值,都进行极大似然估计,并根据这个取值可能性的大小,设置极大似然估计的权重,然后选择其中最大的一个,作为最大后验估计的结果。参考自 最大后验(Maximum a Posteriori,MAP)概率估计详解_最大后验概率-CSDN博客 。
最大后验估计:
l ( θ ) = ln p ( D ∣ θ ) = ∑ i = 1 n ln p ( x i ∣ θ ) θ ^ = arg max θ l ( θ ) + ln p ( θ ) l(\theta) = \ln p(D|\theta) = \sum_{i=1}^{n} \ln p(\boldsymbol{x}_i|\theta) \\ \hat{\theta} = \arg \max_{\theta} l(\theta) + \ln p(\theta) l ( θ ) = ln p ( D ∣ θ ) = i = 1 ∑ n ln p ( x i ∣ θ ) θ ^ = arg θ max l ( θ ) + ln p ( θ ) 高斯分布假设的最大后验估计(均值未知):
μ n = Σ 0 ( 1 n Σ + Σ 0 ) − 1 ( 1 n ∑ k = 1 n x k ) + 1 n Σ ( 1 n Σ + Σ 0 ) − 1 μ 0 Σ n = Σ 0 ( 1 n Σ + Σ 0 ) − 1 1 n Σ \boldsymbol{\mu}_n = \boldsymbol{\Sigma}_0 \left( \frac{1}{n} \boldsymbol{\Sigma} + \boldsymbol{\Sigma}_0 \right)^{-1} \left( \frac{1}{n} \sum_{k=1}^{n} \boldsymbol{x}_k \right) + \frac{1}{n} \boldsymbol{\Sigma} \left( \frac{1}{n} \boldsymbol{\Sigma} + \boldsymbol{\Sigma}_0 \right)^{-1} \boldsymbol{\mu}_0 \\ \boldsymbol{\Sigma}_n = \boldsymbol{\Sigma}_0 \left( \frac{1}{n} \boldsymbol{\Sigma} + \boldsymbol{\Sigma}_0 \right)^{-1} \frac{1}{n} \boldsymbol{\Sigma} μ n = Σ 0 ( n 1 Σ + Σ 0 ) − 1 ( n 1 k = 1 ∑ n x k ) + n 1 Σ ( n 1 Σ + Σ 0 ) − 1 μ 0 Σ n = Σ 0 ( n 1 Σ + Σ 0 ) − 1 n 1 Σ 其中 μ 0 \boldsymbol{\mu}_0 μ 0 是先验均值向量, Σ 0 \boldsymbol{\Sigma}_0 Σ 0 是先验协方差矩阵, Σ \boldsymbol{\Sigma} Σ 是样本协方差矩阵。计算得出的 μ n , Σ n \boldsymbol{\mu}_n,\;\boldsymbol{\Sigma}_n μ n , Σ n 分别是后验均值向量和后验协方差矩阵。
8.4.3 GMM 混合高斯模型 GMM (Gaussian Mixture Model)
混合高斯模型比高斯模型具有更强的描述能力,但其需要的参数也成倍增加,实际中通常对节点方差矩阵结构进行约束:
p ( x ∣ ω ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) , ∑ k = 1 K π k = 1 p(\boldsymbol{x}|\omega) = \sum_{k=1}^{K} \pi_k \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k), \quad \sum_{k=1}^{K} \pi_k = 1 p ( x ∣ ω ) = k = 1 ∑ K π k N ( x ∣ μ k , Σ k ) , k = 1 ∑ K π k = 1 混合分布的概率密度估计问题:
所有样本都来自于 K K K 种类别,且 K K K 已知,样本类别未被标记。每种类别的先验概率 p ( ω i ) p(\omega_i) p ( ω i ) 未知,类条件概率的数学形式已知 p ( x ∣ ω i , θ i ) p(\boldsymbol{x}|\omega_i,\boldsymbol{\theta}_i) p ( x ∣ ω i , θ i ) 但参数 θ i \boldsymbol{\theta}_i θ i 未知。
p ( x ∣ θ ) = ∑ i = 1 K p ( x ∣ ω i , θ i ) p ( ω i ) = ∑ i = 1 K π i N ( x ∣ μ i , Σ i ) p(\boldsymbol{x}|\boldsymbol{\theta}) = \sum_{i=1}^{K} p(\boldsymbol{x}|\omega_i,\boldsymbol{\theta}_i)p(\omega_i) = \sum_{i=1}^{K} \pi_i \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_i, \boldsymbol{\Sigma}_i) p ( x ∣ θ ) = i = 1 ∑ K p ( x ∣ ω i , θ i ) p ( ω i ) = i = 1 ∑ K π i N ( x ∣ μ i , Σ i ) 混合高斯分布一共有 K K K 个分布,并且对于每个观察到的 x \boldsymbol{x} x ,如果我们同时还知道它属于 1 ∼ K 1\sim K 1 ∼ K 中的哪一种分布,则我们可以根据 最大似然估计 求出每个参数。观察数据 x \boldsymbol{x} x 属于哪个高斯分布是未知的,这时需要采用 EM 算法。
EM 算法 应用于 混合高斯模型参数估计
期望最大值 EM 算法 :
给定一些观察数据 x \boldsymbol{x} x ,假设 x \boldsymbol{x} x 符合如下混合高斯分布: p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) p(x)=\displaystyle\sum_{k=1}^{K} \pi_k \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) p ( x ) = k = 1 ∑ K π k N ( x ∣ μ k , Σ k ) 。求混合高斯分布的参数 θ = { π k , μ k , Σ k } \boldsymbol{\theta}=\{\pi_k,\boldsymbol{\mu}_k,\boldsymbol{\Sigma}_k\} θ = { π k , μ k , Σ k } 的最大似然估计。
(1)初始化 K K K 个高斯分布参数 μ k , Σ k \boldsymbol{\mu}_k, \boldsymbol{\Sigma_k} μ k , Σ k ,初始化 π k \pi_k π k 并保证 ∑ k = 1 K π k = 1 \displaystyle\sum_{k=1}^{K} \pi_k = 1 k = 1 ∑ K π k = 1
(2)依据目前的高斯分布参数,对样本 x \boldsymbol{x} x 的类别隐藏变量 z n k z_{nk} z nk 求 期望 ,则 γ ( z n k ) \gamma(z_{nk}) γ ( z nk ) 表示第 n n n 个样本 x n \boldsymbol{x}_n x n 属于第 k k k 类的概率:
γ ( z n k ) = π k N ( x n ∣ μ k , Σ k ) ∑ j = 1 K π j N ( x n ∣ μ j , Σ j ) \gamma(z_{nk}) = \frac{\pi_k \mathcal{N}(\boldsymbol{x}_n|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)}{\displaystyle\sum_{j=1}^{K} \pi_j \mathcal{N}(\boldsymbol{x}_n|\boldsymbol{\mu}_j, \boldsymbol{\Sigma}_j)} γ ( z nk ) = j = 1 ∑ K π j N ( x n ∣ μ j , Σ j ) π k N ( x n ∣ μ k , Σ k ) (3)对高斯分布参数 求最大似然估计:
μ k new = 1 N k ∑ n = 1 N γ ( z n k ) x n Σ k new = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k new ) ( x n − μ k new ) T π k new = N k N , N k = ∑ n = 1 N γ ( z n k ) \boldsymbol{\mu}_k^{\text{new}} = \frac{1}{N_k} \sum_{n=1}^{N} \gamma(z_{nk}) \boldsymbol{x}_n \\ \boldsymbol{\Sigma}_k^{\text{new}} = \frac{1}{N_k} \sum_{n=1}^{N} \gamma(z_{nk})(\boldsymbol{x}_n - \boldsymbol{\mu}_k^{\text{new}})(\boldsymbol{x}_n - \boldsymbol{\mu}_k^{\text{new}})^T \\ \pi_k^{\text{new}} = \frac{N_k}{N} ,\quad N_k = \sum_{n=1}^{N} \gamma(z_{nk}) μ k new = N k 1 n = 1 ∑ N γ ( z nk ) x n Σ k new = N k 1 n = 1 ∑ N γ ( z nk ) ( x n − μ k new ) ( x n − μ k new ) T π k new = N N k , N k = n = 1 ∑ N γ ( z nk ) (4)迭代计算第2、3步,直到满足参数收敛条件或停止条件。
8.4.4 HMM 隐含马尔可夫模型 HMM (Hidden Markov Model)
数学基础 (复习随机过程时间到😂)
假设 Q = ( q 1 , q 2 , ⋯ , q T ) Q = (q_1, q_2, \cdots, q_T) Q = ( q 1 , q 2 , ⋯ , q T ) 是一取值于有限集合 S = { s 1 , s 2 , ⋯ , s N } S = \{s_1, s_2, \cdots, s_N\} S = { s 1 , s 2 , ⋯ , s N } 的随机变量序列,满足:
P ( q t + 1 = s k ∣ q 1 , q 2 , ⋯ , q t ) = P ( q t + 1 = s k ∣ q t ) P(q_{t+1} = s_k | q_1, q_2, \cdots, q_t) = P(q_{t+1} = s_k | q_t) P ( q t + 1 = s k ∣ q 1 , q 2 , ⋯ , q t ) = P ( q t + 1 = s k ∣ q t ) 则称序列 Q Q Q 具有 Markov 性,为 Markov 链。
若进一步满足 P ( q t + 1 = s k ∣ q t ) = P ( q 2 = s k ∣ q 1 ) P(q_{t+1} = s_k | q_t) = P(q_2 = s_k | q_1) P ( q t + 1 = s k ∣ q t ) = P ( q 2 = s k ∣ q 1 ) ,则称序列 Q Q Q 是齐次 Markov 链。
齐次 Markov 链可以用状态转移概率矩阵 A \boldsymbol{A} A 和初始概率 π \boldsymbol{\pi} π 唯一确定表示:
A = { a i j } a i j = p ( q t + 1 = s j ∣ q t = s i ) , a i j ⩾ 0 , ∑ j = 1 N a i j = 1 , ∀ i π i = P ( q 1 = s i ) , ∑ i = 1 N π i = 1 \boldsymbol{A} = \{a_{ij}\} \\ a_{ij} = p(q_{t+1} = s_j | q_t = s_i), \quad a_{ij} \geqslant 0, \quad \sum_{j=1}^{N} a_{ij} = 1, \forall i \\ \pi_i = P(q_1 = s_i), \quad \sum_{i=1}^{N} \pi_i = 1 A = { a ij } a ij = p ( q t + 1 = s j ∣ q t = s i ) , a ij ⩾ 0 , j = 1 ∑ N a ij = 1 , ∀ i π i = P ( q 1 = s i ) , i = 1 ∑ N π i = 1 隐含马尔可夫模型 HMM 是一个双重随机过程:
状态序列:是马尔可夫链,用转移概率描述。 观测序列:是一般随机过程,每一状态对应一个可以观察的事件,用观测概率描述。
状态集 S = { s 1 , s 2 , ⋯ , s N } S=\{s_1,s_2,\cdots,s_N\} S = { s 1 , s 2 , ⋯ , s N } ,即有 N N N 个不同状态。
观测符号集 V = { v 1 , v 2 , ⋯ , v M } V=\{v_1,v_2,\cdots,v_M\} V = { v 1 , v 2 , ⋯ , v M } ,即有 M M M 种不同的观测符号。
观测集 O = { o 1 , o 2 , ⋯ , o T } , o i ∈ V O=\{o_1,o_2,\cdots,o_T\},o_i\in V O = { o 1 , o 2 , ⋯ , o T } , o i ∈ V 。
状态转移概率矩阵 A ∈ R N × N \boldsymbol{A}\in\mathbb{R}^{N\times N} A ∈ R N × N ,其中 a i j a_{ij} a ij 表示从第 i i i 个状态 s i s_i s i 转移到第 j j j 个状态 s j s_j s j 的概率。
观测概率矩阵 B ∈ R N × M \boldsymbol{B}\in\mathbb{R}^{N\times M} B ∈ R N × M ,其中 b i j b_{ij} b ij 表示在第 i i i 个状态 s i s_i s i 下,观测到第 j j j 个符号 v j v_j v j 的概率。
初始状态概率向量 π ∈ R 1 × N \boldsymbol{\pi}\in\mathbb{R}^{1\times N} π ∈ R 1 × N ,初始状态下位于第 i i i 个状态 s i s_i s i 的概率为 π i \pi_i π i 。
在齐次马尔科夫条件下,某一时刻 t t t 的状态向量为 π A t \boldsymbol{\pi}\boldsymbol{A}^t π A t 。
HMM 的基本元素:用三元组 λ = ( π , A , B ) \lambda = (\boldsymbol{\pi},\boldsymbol{A},\boldsymbol{B}) λ = ( π , A , B ) 来描述:
A = [ a 11 a 12 ⋯ a 1 N a 21 a 22 ⋯ a 2 N ⋮ ⋮ ⋱ ⋮ a N 1 a N 2 ⋯ a N N ] , B = [ b 11 b 12 ⋯ b 1 M b 21 b 22 ⋯ b 2 M ⋮ ⋮ ⋱ ⋮ b N 1 b N 2 ⋯ b N M ] , π = [ π 1 , ⋯ , π N ] \boldsymbol{A} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1N} \\ a_{21} & a_{22} & \cdots & a_{2N} \\ \vdots & \vdots & \ddots & \vdots \\ a_{N1} & a_{N2} & \cdots & a_{NN} \end{bmatrix} ,\; \boldsymbol{B} = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1M} \\ b_{21} & b_{22} & \cdots & b_{2M} \\ \vdots & \vdots & \ddots & \vdots \\ b_{N1} & b_{N2} & \cdots & b_{NM} \end{bmatrix} ,\; \boldsymbol{\pi} = [\pi_1, \cdots, \pi_N] A = a 11 a 21 ⋮ a N 1 a 12 a 22 ⋮ a N 2 ⋯ ⋯ ⋱ ⋯ a 1 N a 2 N ⋮ a NN , B = b 11 b 21 ⋮ b N 1 b 12 b 22 ⋮ b N 2 ⋯ ⋯ ⋱ ⋯ b 1 M b 2 M ⋮ b NM , π = [ π 1 , ⋯ , π N ] Note
注意 π \boldsymbol{\pi} π 是 行向量 !矩阵 A , B \boldsymbol{A},\,\boldsymbol{B} A , B 均满足 行和为1 。
HMM 的基本假设:
马尔可夫性: P ( q t + 1 ∣ q t , ⋯ , q 1 ) = P ( q t + 1 ∣ q t ) P(q_{t+1} | q_t, \cdots, q_1) = P(q_{t+1} | q_t) P ( q t + 1 ∣ q t , ⋯ , q 1 ) = P ( q t + 1 ∣ q t ) 。 齐次性,状态转移概率与具体时刻无关: P ( q t + 1 ∣ q t ) = P ( q τ + 1 ∣ q τ ) P(q_{t+1} | q_t ) = P(q_{\tau+1} | q_{\tau }) P ( q t + 1 ∣ q t ) = P ( q τ + 1 ∣ q τ ) ,对任意 t , τ t,\tau t , τ 成立。 观测序列独立性: P ( O 1 , ⋯ , O T ∣ q 1 , ⋯ , q T ) = ∏ t = 1 T P ( O t ∣ q t ) P(O_1, \cdots, O_T | q_1, \cdots, q_T) = \prod_{t=1}^{T} P(O_t | q_t) P ( O 1 , ⋯ , O T ∣ q 1 , ⋯ , q T ) = ∏ t = 1 T P ( O t ∣ q t ) 。 HMM 的3个基本问题:
评估 问题: 如何根据给定 O = { O 1 , O 2 , ⋯ , O T } O = \{O_1, O_2, \cdots, O_T\} O = { O 1 , O 2 , ⋯ , O T } 和 λ \lambda λ 计算 P ( O ∣ λ ) P(O|\lambda) P ( O ∣ λ ) ? 即:模型参数 λ \lambda λ 已知,评估观测序列 O O O 出现的概率。 解码 问题: 如何根据给定的 O , λ O,\,\lambda O , λ 计算最优路径 Q ∗ Q^* Q ∗ ? 即:模型参数 λ \lambda λ 和观测序列 O O O 已知,预测最可能出现的状态序列 Q ∗ Q^* Q ∗ 。 学习 问题: 如何根据观测序列样本集合 O train O_{\text{train}} O train 进行模型 λ \lambda λ 的参数估计? 即:给定观测序列的集合,训练模型参数,使得 P ( O train ∣ λ ) P(O_{\text{train}}|\lambda) P ( O train ∣ λ ) 最大化。 评估观测序列的概率 如何根据给定 O = { O 1 , O 2 , ⋯ , O T } O = \{O_1, O_2, \cdots, O_T\} O = { O 1 , O 2 , ⋯ , O T } 和 λ \lambda λ 计算 P ( O ∣ λ ) P(O|\lambda) P ( O ∣ λ ) ?如何根据给定 O = { O 1 , O 2 , ⋯ , O T } O = \{O_1, O_2, \cdots, O_T\} O = { O 1 , O 2 , ⋯ , O T } 和 λ \lambda λ 计算 P ( O ∣ λ ) P(O|\lambda) P ( O ∣ λ ) ?
即:模型参数 λ \lambda λ 已知,评估观测序列 O O O 出现的概率。
(1)直接计算方法
直接计算可能的状态序列及相应观测值概率。
P ( O ∣ λ ) = ∑ Q P ( O , Q ∣ λ ) = ∑ Q P ( O ∣ Q , λ ) P ( Q ∣ λ ) P(O|\lambda) = \displaystyle\sum_{Q} P(O,Q|\lambda) = \displaystyle\sum_{Q} P(O|Q,\lambda)P(Q|\lambda) P ( O ∣ λ ) = Q ∑ P ( O , Q ∣ λ ) = Q ∑ P ( O ∣ Q , λ ) P ( Q ∣ λ )
P ( O ∣ Q , λ ) = ∏ t = 1 T P ( O t ∣ q t , λ ) = b q 1 ( O 1 ) ⋯ b q T ( O T ) P(O|Q,\lambda) = \displaystyle\prod_{t=1}^{T} P(O_t|q_t, \lambda) = b_{q_1}(O_1) \cdots b_{q_T}(O_T) P ( O ∣ Q , λ ) = t = 1 ∏ T P ( O t ∣ q t , λ ) = b q 1 ( O 1 ) ⋯ b q T ( O T )
P ( Q ∣ λ ) = π q 1 a q 1 q 2 ⋯ a q T − 1 q T P(Q|\lambda) = \pi_{q_1} a_{q_1q_2} \cdots a_{q_{T-1}q_T} P ( Q ∣ λ ) = π q 1 a q 1 q 2 ⋯ a q T − 1 q T
P ( O , Q ∣ λ ) = P ( O ∣ Q , λ ) P ( Q ∣ λ ) P(O,Q|\lambda) = P(O|Q,\lambda)P(Q|\lambda) P ( O , Q ∣ λ ) = P ( O ∣ Q , λ ) P ( Q ∣ λ )
P ( O ∣ λ ) = ∑ Q P ( O ∣ Q , λ ) P ( Q ∣ λ ) = ∑ q 1 , ⋯ , q T π q 1 b q 1 ( O 1 ) a q 1 q 2 b q 2 ( O 2 ) ⋯ a q T − 1 q T b q T ( O T ) P(O|\lambda) = \displaystyle\sum_{Q} P(O|Q,\lambda)P(Q|\lambda) = \displaystyle\sum_{q_1,\cdots,q_T} \pi_{q_1} b_{q_1}(O_1) a_{q_1q_2} b_{q_2}(O_2) \cdots a_{q_{T-1}q_T} b_{q_T}(O_T) P ( O ∣ λ ) = Q ∑ P ( O ∣ Q , λ ) P ( Q ∣ λ ) = q 1 , ⋯ , q T ∑ π q 1 b q 1 ( O 1 ) a q 1 q 2 b q 2 ( O 2 ) ⋯ a q T − 1 q T b q T ( O T )
计算复杂度为 O ( T N T ) O(TN^T) O ( T N T ) 。
(2)前向计算法
定义 前向变量 :α t ( i ) = P ( O 1 , ⋯ O t , q t = s i ∣ λ ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T \alpha_t(i) = P(O_1, \cdots O_t, q_t = s_i | \lambda) ,\; 1\leqslant i \leqslant N,\,1 \leqslant t \leqslant T α t ( i ) = P ( O 1 , ⋯ O t , q t = s i ∣ λ ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T 。表示 t t t 时刻由第 i i i 个状态 s i s_i s i 生成观测 O t O_t O t 且前时刻序列为 O 1 , ⋯ , O t − 1 O_1, \cdots, O_{t-1} O 1 , ⋯ , O t − 1 的概率。这里 α ∈ R N \boldsymbol{\alpha}\in\mathbb{R}^{N} α ∈ R N 是一个列向量,它的下表 t t t 代表时刻,括号里的 i i i 代表元素的位置索引。
我认为更规范更合理的表达方式是 α ( t ) ∈ R N \boldsymbol{\alpha}^{(t)}\in\mathbb{R}^{N} α ( t ) ∈ R N ,每一个前向变量表示为 α i ( t ) ∈ R \alpha^{(t)}_i \in \mathbb{R} α i ( t ) ∈ R 。
同理 α j ( t + 1 ) = P ( O 1 , ⋯ O t + 1 , q t + 1 = s j ∣ λ ) \alpha^{(t+1)}_j = P(O_1, \cdots O_{t+1}, q_{t+1} = s_j | \lambda) α j ( t + 1 ) = P ( O 1 , ⋯ O t + 1 , q t + 1 = s j ∣ λ ) 表示 t + 1 t+1 t + 1 时刻由第 j j j 个状态 s j s_j s j 生成观测 O t + 1 O_{t+1} O t + 1 且前时刻序列为 O 1 , ⋯ , O t O_1, \cdots, O_t O 1 , ⋯ , O t 的概率。
α j ( t + 1 ) = ∑ i = 1 N P ( O 1 , ⋯ O t , q t = s i ∣ λ ) ⋅ P ( q t + 1 = s j ∣ q t = s i , λ ) ⋅ P ( O t + 1 ∣ q t + 1 = s j , λ ) = [ ∑ i = 1 N α i ( t ) a i j ] b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 \alpha^{(t+1)}_j = \sum_{i=1}^{N} \boxed{\color{blue}P(O_1, \cdots O_t, q_t = s_i | \lambda)} \cdot \boxed{\color{red}P(q_{t+1} = s_j | q_t = s_i, \lambda)} \cdot \boxed{\color{green}P(O_{t+1} | q_{t+1} = s_j, \lambda)} \\ =\left[ \sum_{i=1}^{N} {\color{blue}\alpha^{(t)}_i} {\color{red}a_{ij}} \right] {\color{green}b_j(O_{t+1})},\;1 \leqslant j \leqslant N,\;1 \leqslant t \leqslant T-1 α j ( t + 1 ) = i = 1 ∑ N P ( O 1 , ⋯ O t , q t = s i ∣ λ ) ⋅ P ( q t + 1 = s j ∣ q t = s i , λ ) ⋅ P ( O t + 1 ∣ q t + 1 = s j , λ ) = [ i = 1 ∑ N α i ( t ) a ij ] b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 上式中,蓝色部分 即为前向变量 α i ( t ) \alpha^{(t)}_i α i ( t ) ,红色部分 为状态转移概率 a i j a_{ij} a ij (利用到齐次马尔可夫性质 ),绿色部分 为序列下一个观测值的观测概率 b j ( O t + 1 ) b_j(O_{t+1}) b j ( O t + 1 ) (利用到观测序列的独立性 ),也即观测概率矩阵 B \boldsymbol{B} B 中第 j j j 行、状态 O t + 1 O_{t+1} O t + 1 对应的那一列的元素。
具体算法步骤:
(Ⅰ) 初始化 : α i ( 1 ) = π i b i ( O 1 ) , 1 ⩽ i ⩽ N \alpha^{(1)}_i = \pi_i b_i(O_1) ,\; 1 \leqslant i \leqslant N α i ( 1 ) = π i b i ( O 1 ) , 1 ⩽ i ⩽ N ,表示在 t = 1 t=1 t = 1 时刻由第 i i i 个状态生成观测 O 1 O_1 O 1 的概率。这样计算出的向量 α ( 1 ) \boldsymbol{\alpha}^{(1)} α ( 1 ) ,相当于初态 π \boldsymbol{\pi} π 和 B ( O 1 ) \boldsymbol{B}(O_1) B ( O 1 ) 列向量进行 逐元素相乘 α ( 1 ) = ( π T ⊙ B [ : , O 1 ] ) \boldsymbol{\alpha}^{(1)} =\left( \boldsymbol{\pi}^T \odot \boldsymbol{B}[:,O_1] \right) α ( 1 ) = ( π T ⊙ B [ : , O 1 ] ) 。
(Ⅱ) 递归 :对于 t = 1 , ⋯ , T − 1 t=1, \cdots, T-1 t = 1 , ⋯ , T − 1 ,计算:
α j ( t + 1 ) = [ ∑ i = 1 N α i ( t ) a i j ] b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 \alpha^{(t+1)}_j = \left[ \sum_{i=1}^{N} \alpha^{(t)}_i a_{ij} \right] b_j(O_{t+1}), \quad 1 \leqslant j \leqslant N,\; 1 \leqslant t \leqslant T-1 α j ( t + 1 ) = [ i = 1 ∑ N α i ( t ) a ij ] b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 上式中,中括号内部分 [ ∑ i = 1 N α i ( t ) a i j ] \left[ \displaystyle\sum_{i=1}^{N} \alpha^{(t)}_i a_{ij} \right] [ i = 1 ∑ N α i ( t ) a ij ] 将计算结果汇总起来后可以发现,实际上是做了这样一个矩阵相乘操作 A T α ( t ) \boldsymbol{A}^T\boldsymbol{\alpha}^{(t)} A T α ( t ) ,仍然返回一个列向量 ∈ R N \in\mathbb{R}^N ∈ R N 。然后再与 B \boldsymbol{B} B 中第 j j j 行、状态 O t + 1 O_{t+1} O t + 1 对应的那一列的元素进行逐元素相乘,因此迭代过程实际上是进行了如下运算:
α ( t + 1 ) = ( A T α ( t ) ) ⊙ B [ : , O t + 1 ] \boldsymbol{\alpha}^{(t+1)} = \left(\boldsymbol{A}^T\boldsymbol{\alpha}^{(t)} \right) \odot \boldsymbol{B}[:, O_{t+1}] α ( t + 1 ) = ( A T α ( t ) ) ⊙ B [ : , O t + 1 ] (Ⅲ) 终止 :计算观测序列的总概率 P ( O ∣ λ ) = ∑ i = 1 N α i ( T ) P(O|\lambda) = \displaystyle\sum_{i=1}^{N} \alpha^{(T)}_i P ( O ∣ λ ) = i = 1 ∑ N α i ( T ) ,即为前向向量 α ( T ) \boldsymbol{\alpha}^{(T)} α ( T ) 所有元素之和 。
(3)后向计算法
类似于前向计算法,我们还将后向向量写成 β ( t ) \boldsymbol{\beta}^{(t)} β ( t ) 的形式,与课件中不同。
定义 后向变量 :β i ( t ) = P ( O t + 1 , ⋯ , O T ∣ q t = s i , λ ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T \beta^{(t)}_i = P(O_{t+1}, \cdots, O_T | q_t = s_i, \lambda) ,\; 1\leqslant i \leqslant N,\,1 \leqslant t \leqslant T β i ( t ) = P ( O t + 1 , ⋯ , O T ∣ q t = s i , λ ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T 。表示 t t t 时刻由第 i i i 个状态 s i s_i s i 生成观测序列 O t + 1 , ⋯ , O T O_{t+1}, \cdots, O_T O t + 1 , ⋯ , O T 的概率。
同理有 β j ( t + 1 ) = P ( O t + 2 , ⋯ , O T ∣ q t + 1 = s j , λ ) , 1 ⩽ t ⩽ T − 1 \beta^{(t+1)}_j = P(O_{t+2}, \cdots, O_T | q_{t+1} = s_j, \lambda), 1\leqslant t \leqslant T-1 β j ( t + 1 ) = P ( O t + 2 , ⋯ , O T ∣ q t + 1 = s j , λ ) , 1 ⩽ t ⩽ T − 1 表示 t + 1 t+1 t + 1 时刻由第 j j j 个状态 s j s_j s j 生成观测序列 O t + 2 , ⋯ , O T O_{t+2}, \cdots, O_T O t + 2 , ⋯ , O T 的概率。
β i ( t ) = ∑ j = 1 N P ( O t + 2 , ⋯ O T ∣ q t + 1 = s j , λ ) ⋅ P ( q t + 1 = s j ∣ q t = s i , λ ) ⋅ P ( O t + 1 ∣ q t + 1 = s j , λ ) = ∑ j = 1 N β j ( t + 1 ) a i j b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 \beta^{(t)}_i = \sum_{j=1}^{N} \boxed{\color{blue}P(O_{t+2}, \cdots O_T| q_{t+1} = s_j, \lambda)} \cdot \boxed{\color{red}P(q_{t+1} = s_j | q_t = s_i, \lambda)} \cdot \boxed{\color{green}P(O_{t+1} | q_{t+1} = s_j, \lambda)} \\ = \sum_{j=1}^{N} {\color{blue}\beta^{(t+1)}_j} {\color{red}a_{ij}} {\color{green}b_j(O_{t+1})},\;1 \leqslant j \leqslant N,\;1 \leqslant t \leqslant T-1 β i ( t ) = j = 1 ∑ N P ( O t + 2 , ⋯ O T ∣ q t + 1 = s j , λ ) ⋅ P ( q t + 1 = s j ∣ q t = s i , λ ) ⋅ P ( O t + 1 ∣ q t + 1 = s j , λ ) = j = 1 ∑ N β j ( t + 1 ) a ij b j ( O t + 1 ) , 1 ⩽ j ⩽ N , 1 ⩽ t ⩽ T − 1 上式中,蓝色部分 即为后向变量 β j ( t + 1 ) \beta^{(t+1)}_j β j ( t + 1 ) ,红色部分 为状态转移概率 a i j a_{ij} a ij (利用到齐次马尔可夫性质 ),绿色部分 为序列下一个观测值的观测概率 b j ( O t + 1 ) b_j(O_{t+1}) b j ( O t + 1 ) (利用到观测序列的独立性 ),也即观测概率矩阵 B \boldsymbol{B} B 中第 j j j 行、状态 O t + 1 O_{t+1} O t + 1 对应的那一列的元素。
具体算法步骤:
(Ⅰ) 初始化 : β ( T ) = 1 N × 1 \boldsymbol{\beta}^{(T)}=\boldsymbol{1}^{N\times 1} β ( T ) = 1 N × 1 ,初值全部为 1 1 1 。
(Ⅱ) 递归 : β i ( t ) = ∑ j = 1 N β j ( t + 1 ) a i j b j ( O t + 1 ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T − 1 \beta^{(t)}_i = \displaystyle\sum_{j=1}^{N}\beta^{(t+1)}_j a_{ij} b_j(O_{t+1}), \quad 1 \leqslant i \leqslant N,\; 1 \leqslant t \leqslant T-1 β i ( t ) = j = 1 ∑ N β j ( t + 1 ) a ij b j ( O t + 1 ) , 1 ⩽ i ⩽ N , 1 ⩽ t ⩽ T − 1 。相当于做矩阵运算:
β ( t ) = A ( β ( t + 1 ) ⊙ B [ : , O t + 1 ] ) \boldsymbol{\beta}^{(t)}=\boldsymbol{A}\left(\boldsymbol{\beta}^{(t+1)}\odot \boldsymbol{B}[:,O_{t+1}]\right) β ( t ) = A ( β ( t + 1 ) ⊙ B [ : , O t + 1 ] ) (Ⅲ) 终止 : P ( O ∣ λ ) = ∑ i = 1 N π i b i ( O 1 ) β i ( 1 ) P(O|\lambda) = \displaystyle\sum_{i=1}^{N} \pi_i b_i(O_1) \beta^{(1)}_i P ( O ∣ λ ) = i = 1 ∑ N π i b i ( O 1 ) β i ( 1 ) ,相当于做了逐元素相乘 + 内积运算:
P ( O ∣ λ ) = π T ( β ( 1 ) ⊙ B [ : , O 1 ] ) P(O|\lambda) = \boldsymbol{\pi}^T \left( \boldsymbol{\beta}^{(1)} \odot \boldsymbol{B}[:,O_1] \right) P ( O ∣ λ ) = π T ( β ( 1 ) ⊙ B [ : , O 1 ] ) 上面的矩阵运算简化形式经过编写 MATLAB 程序验证是正确的。
解码最佳状态序列 如何根据给定的 O , λ O,\,\lambda O , λ 计算最优路径 Q ∗ Q^* Q ∗ ?
即:模型参数 λ \lambda λ 和观测序列 O O O 已知,预测最可能出现的状态序列 Q ∗ Q^* Q ∗ 。
联合似然概率最大化:每一时刻状态序列出现相应观测值的可能达到最大
max q 1 , q 2 , ⋯ , q T P ( q 1 , q 2 , ⋯ , q T , O 1 , O 2 , ⋯ , O T ∣ λ ) \max_{q_1, q_2, \cdots, q_T} P(q_1, q_2, \cdots, q_T, O_1, O_2, \cdots, O_T | \lambda) q 1 , q 2 , ⋯ , q T max P ( q 1 , q 2 , ⋯ , q T , O 1 , O 2 , ⋯ , O T ∣ λ ) 我们使用 Viterbi 算法 :动态规划
思想:记录 t t t 时刻出现状态 i i i 的最大可能路径及其对应概率,称为 最大局部概率 :
δ i ( t ) = max q 1 , q 2 , ⋯ , q t − 1 P ( q 1 , q 2 , ⋯ , q t = i , O 1 , O 2 , ⋯ , O t ∣ λ ) \delta^{(t)}_i = \max_{q_1, q_2, \cdots, q_{t-1}} P(q_1, q_2, \cdots, q_t = i, O_1, O_2, \cdots, O_t | \lambda) δ i ( t ) = q 1 , q 2 , ⋯ , q t − 1 max P ( q 1 , q 2 , ⋯ , q t = i , O 1 , O 2 , ⋯ , O t ∣ λ ) 记 φ j ( t ) \varphi^{(t)}_j φ j ( t ) 代表 t t t 时刻为第 j j j 个状态时,对应前一时刻 t − 1 t-1 t − 1 的状态,与 O t O_t O t 无关。
具体算法步骤:
(Ⅰ) 初始化 : δ i ( 1 ) = π i b i ( O 1 ) , φ i ( 1 ) = 0 , 1 ⩽ i ⩽ N \delta^{(1)}_i=\pi_i b_i(O_1),\;\varphi^{(1)}_i=0,\; 1\leqslant i \leqslant N δ i ( 1 ) = π i b i ( O 1 ) , φ i ( 1 ) = 0 , 1 ⩽ i ⩽ N 。
其中第一步 相当于 做逐元素相乘操作 δ ( 1 ) = ( π T ⊙ B [ : , O 1 ] ) \boldsymbol{\delta}^{(1)} =\left( \boldsymbol{\pi}^T \odot \boldsymbol{B}[:,O_1] \right) δ ( 1 ) = ( π T ⊙ B [ : , O 1 ] ) 以及 φ ( 1 ) = 0 N × 1 \boldsymbol{\varphi}^{(1)}=\boldsymbol{0}^{N\times 1} φ ( 1 ) = 0 N × 1 。
初始时刻,路径尚未开始,节点局部概率 为 初始时刻在状态 i i i 发射观测符号 O 1 O_1 O 1 的概率。
(Ⅱ) 递归 :对于 t = 2 , 3 , ⋯ , T t=2,3,\cdots,T t = 2 , 3 , ⋯ , T ,计算:
δ j ( t ) = max 1 ≤ i ≤ N [ δ i ( t − 1 ) a i j ] b j ( O t ) , 1 ⩽ j ⩽ N φ j ( t ) = arg max 1 ≤ i ≤ N [ δ i ( t − 1 ) a i j ] , 1 ⩽ j ⩽ N \delta^{(t)}_j = \max_{1\leq i \leq N} \left[ \delta^{(t-1)}_i a_{ij} \right] b_j(O_t) ,\; 1\leqslant j \leqslant N \\ \varphi^{(t)}_j = \argmax_{1\leq i \leq N} \left[ \delta^{(t-1)}_i a_{ij} \right] ,\; 1\leqslant j \leqslant N δ j ( t ) = 1 ≤ i ≤ N max [ δ i ( t − 1 ) a ij ] b j ( O t ) , 1 ⩽ j ⩽ N φ j ( t ) = 1 ≤ i ≤ N arg max [ δ i ( t − 1 ) a ij ] , 1 ⩽ j ⩽ N 其中第一步 相当于向量与矩阵逐元素相乘 δ ( t − 1 ) A \boldsymbol{\delta}^{(t-1)}\boldsymbol{A} δ ( t − 1 ) A (把矩阵看作多个列向量,分别与同一个列向量主元素相乘,组成一个新的矩阵),然后 每一列 取最大值得到一个行向量 max ( δ ( t − 1 ) A ) ∈ R 1 × N \max\left( \boldsymbol{\delta}^{(t-1)}\boldsymbol{A} \right) \in\mathbb{R}^{1\times N} max ( δ ( t − 1 ) A ) ∈ R 1 × N ,取转置 变为列向量 之后再和 B [ : , O t ] ∈ R N \boldsymbol{B}[:,O_t] \in\mathbb{R}^N B [ : , O t ] ∈ R N 列向量 做逐元素相乘,得到 δ ( t ) \boldsymbol{\delta}^{(t)} δ ( t ) 。因此简化为矩阵运算形式:
δ ( t ) = ( max δ ( t − 1 ) A ) T ⊙ B [ : , O t ] \boldsymbol{\delta}^{(t)} = \left( \max \boldsymbol{\delta}^{(t-1)}\boldsymbol{A} \right)^T \odot \boldsymbol{B}[:, O_t] δ ( t ) = ( max δ ( t − 1 ) A ) T ⊙ B [ : , O t ] 而 φ ( t ) \boldsymbol{\varphi}^{(t)} φ ( t ) 就是在寻找矩阵 δ ( t − 1 ) A \boldsymbol{\delta}^{(t-1)}\boldsymbol{A} δ ( t − 1 ) A 中每一列最大值时,那个最大值在其 列向量 中的索引。
转移概率 a i j a_{ij} a ij 与上一步的最大局部概率 δ i ( t − 1 ) \delta^{(t-1)}_i δ i ( t − 1 ) 相乘,记录其中最大的一个。
如果最优路径在 t t t 时刻到达节点 j j j ,则从起始时刻到达到该节点的最优路径对应 δ i ( t − 1 ) \delta^{(t-1)}_i δ i ( t − 1 ) 和 a i j a_{ij} a ij 乘积的最小值,并包含从 1 1 1 到 t − 1 t-1 t − 1 的到达节点 i i i 的最优路径。
(Ⅲ) 终止 : P ∗ = max 1 ≤ i ≤ N δ i ( T ) , q T ∗ = arg max 1 ≤ i ≤ N δ i ( T ) P^*=\displaystyle\max_{1\leq i \leq N} \delta^{(T)}_i ,\; q^*_T = \displaystyle\argmax_{1\leq i \leq N} \delta^{(T)}_i P ∗ = 1 ≤ i ≤ N max δ i ( T ) , q T ∗ = 1 ≤ i ≤ N arg max δ i ( T ) ,得到 t = T t=T t = T 时刻的最大局部概率 P ∗ P^* P ∗ 及其对应状态 q T ∗ q^*_T q T ∗ 。
(Ⅳ) 回溯 :从 q T ∗ q^*_T q T ∗ 开始, q t ∗ = φ t + 1 ( q t + 1 ∗ ) , t = T − 1 , T − 2 , ⋯ 1 q^*_t=\boldsymbol{\varphi}_{t+1}(q^*_{t+1}),\;t=T-1,T-2,\cdots 1 q t ∗ = φ t + 1 ( q t + 1 ∗ ) , t = T − 1 , T − 2 , ⋯ 1 向前回溯,得到最优路径 Q ∗ = ( q 1 ∗ , ⋯ , q T ∗ ) Q^* = (q^*_1, \cdots, q^*_T) Q ∗ = ( q 1 ∗ , ⋯ , q T ∗ ) 。
δ i ( T ) \delta^{(T)}_i δ i ( T ) 对应最大值 即为 全局最优路径 Q ∗ Q^* Q ∗ 出现的概率,即为联合似然概率最大值。 q T ∗ q^*_T q T ∗ 为最优路径在 T T T 时刻状态,结合 φ \boldsymbol{\varphi} φ 从 T − 1 T-1 T − 1 时刻反向推演到 1 1 1 时刻可以获取最优路径。
学习模型参数问题 如何根据观测序列样本集合 O train O_{\text{train}} O train 进行模型 λ = ( π , A , B ) \lambda=(\boldsymbol{\pi},\boldsymbol{A},\boldsymbol{B}) λ = ( π , A , B ) 的参数估计?
即:给定观测序列的集合,训练模型参数 λ \lambda λ ,使得 P ( O train ∣ λ ) P(O_{\text{train}}|\lambda) P ( O train ∣ λ ) 最大化。
Baum-Welch 算法是一种 EM 算法,是一种从不完全数据(样本特征序列与隐含状态序列的对齐关系未知)求解模型参数的最大似然估计方法:
(Ⅰ)初始化 HMM 参数 λ 0 \lambda_0 λ 0 ;
(Ⅱ) E 步(Expectation):利用给定的 HMM 参数求样本特征序列的状态对齐结果;
(Ⅲ) M 步(Maximization):根据上一步的状态对齐结果,利用最大似然估计更新 HMM 参数 λ \lambda λ ;
(Ⅳ) 重复 E 步、M 步,直到算法收敛: log P ( O ∣ λ t + 1 ) − log P ( O ∣ λ t ) < threshold \log P(O|\lambda_{t+1}) - \log P(O|\lambda_t) < \text{threshold} log P ( O ∣ λ t + 1 ) − log P ( O ∣ λ t ) < threshold 。
给定模型 λ \lambda λ 和观测序列 O O O 的条件下:
首先利用前面定义过的 前向变量和后向变量:
α t ( i ) = P ( O 1 , ⋯ , O t , q t = s i ∣ λ ) \alpha_t(i) = P(O_1, \cdots, O_t, q_t = s_i | \lambda) α t ( i ) = P ( O 1 , ⋯ , O t , q t = s i ∣ λ )
β t ( i ) = P ( O t + 1 , O t + 2 ⋯ O T ∣ q t = s i , λ ) \beta_t(i) = P(O_{t+1}, O_{t+2} \cdots O_T | q_t = s_i, \lambda) β t ( i ) = P ( O t + 1 , O t + 2 ⋯ O T ∣ q t = s i , λ )
定义从状态 i i i 到 j j j 的转移概率:
ξ t ( i , j ) = P ( q t = i , q t + 1 = j ∣ O , λ ) = α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) \xi_t(i,j) = P(q_t = i, q_{t+1} = j | O, \lambda) \\ = \frac{\alpha_t(i) a_{ij} b_j(O_{t+1}) \beta_{t+1}(j)} {\displaystyle\sum_{i=1}^{N} \displaystyle\sum_{j=1}^{N} \alpha_t(i) a_{ij} b_j(O_{t+1})\beta_{t+1}(j)} ξ t ( i , j ) = P ( q t = i , q t + 1 = j ∣ O , λ ) = i = 1 ∑ N j = 1 ∑ N α t ( i ) a ij b j ( O t + 1 ) β t + 1 ( j ) α t ( i ) a ij b j ( O t + 1 ) β t + 1 ( j ) γ t ( i ) = ∑ j = 1 N ξ t ( i , j ) = P ( q t = i ∣ O , λ ) \gamma_t(i) = \displaystyle\sum_{j=1}^{N} \xi_t(i,j) = P(q_t = i | O, \lambda) γ t ( i ) = j = 1 ∑ N ξ t ( i , j ) = P ( q t = i ∣ O , λ ) 表示 t t t 时刻处于状态 s i s_i s i 的概率。
∑ t = 1 T − 1 γ t ( i ) \displaystyle\sum_{t=1}^{T-1} \gamma_t(i) t = 1 ∑ T − 1 γ t ( i ) 表示整个过程中从状态 s i s_i s i 转出的次数的预期。
∑ t = 1 T − 1 ξ t ( i , j ) \displaystyle\sum_{t=1}^{T-1} \xi_t(i,j) t = 1 ∑ T − 1 ξ t ( i , j ) 表示整个过程中从状态 s i s_i s i 跳转至状态 s j s_j s j 的次数的预期。
则 模型参数的重估公式 为:
a ^ i j = expected count of transitions from i to j expected count of stays at i = ∑ t ξ t ( i , j ) ∑ t ∑ j ξ t ( i , j ) b ^ j ( k ) = expected number of times in state j and observing k expected number of times in state j = ∑ t , O t = k γ t ( j ) ∑ t γ t ( j ) \hat{a}_{ij} = \frac{\text{expected count of transitions from } i \text{ to } j}{\text{expected count of stays at } i} = \frac{\displaystyle\sum_t \xi_t(i,j)}{\displaystyle\sum_t \displaystyle\sum_j \xi_t(i,j)} \\ \hat{b}_j(k) = \frac{\text{expected number of times in state } j \text{ and observing } k}{\text{expected number of times in state } j} = \frac{\displaystyle\sum_{t, O_t = k} \gamma_t(j)}{\displaystyle\sum_t \gamma_t(j)} a ^ ij = expected count of stays at i expected count of transitions from i to j = t ∑ j ∑ ξ t ( i , j ) t ∑ ξ t ( i , j ) b ^ j ( k ) = expected number of times in state j expected number of times in state j and observing k = t ∑ γ t ( j ) t , O t = k ∑ γ t ( j ) π ^ i = γ 1 ( i ) \hat{\pi}_i=\gamma_1(i) π ^ i = γ 1 ( i ) ,表示 t = 1 t=1 t = 1 时刻处于第 i i i 个状态 s i s_i s i 的概率。
直观理解:利用从状态 i i i 转移到状态 j j j 的频次作为 a i j a_{ij} a ij 的估计值;利用从状态 j j j 产生观测 k k k 的频次作为 b j k b_{jk} b jk 的估计值。
HMM 的应用:
基于 GMM-HMM 的语音识别。
手写文字识别。
2D/3D Talking Head.
8.5 系统及性能评测 8.5.1 模式识别系统 模式识别系统的结构:
输入 → 传感器 → 分割器 → 特征提取器 → 分类器 → 后处理器 → 输出
(1)传感器
例如:摄像机、麦克风阵列传感器。
因素:带宽、灵敏度、失真、信噪比、延迟等等。
(2)分割器
例如:传感器的感兴趣基元文本切割、脑电波的时长等等。关注部分与整体关系。
(3)特征提取器
类内一致性:来自同一类别的不同样本特征值相近。
类间差异性:来自不同类别的样本特征值有很大差异,如表征能力、鉴别性、特征维度。
例如:基于深度神经网络的特征表征学习。
(4)分类器
根据特征提取器提取的特征向量给被测试对象(样本)赋予类别标记。
例如:贝叶斯决策(最小欧式/马氏距离分类器)、HMM。例如:SVM、感知器模型、Logistic 回归。
(5)后处理器
根据上下文信息对分类进行调整。
模式识别系统实例:人脸认证/识别
数据准备:利用摄像头采集图像;从网络等开放媒体搜集数据;人工标注数据;划分训练集、验证集和测试集。 特征提取:基于深度网络的特征表征学习,包括深度神经网络设计、损失函数设计等。 分类器选取与训练:可以选择基于深度网络的分类决策、Bayes 决策、Logistic 回归、Fisher 线性判别、SVM 等。 分类决策:可以选择基于深度网络的分类决策。 系统部署。 8.5.2 系统性能评价 错误率(error rate) 与 准确率(accuracy):
错误率 为 分类错误的样本占样本总数的比例。假设 N N N 个样本中有 a a a 个样本分类错误,则 E = a / N E=a/N E = a / N 。准确率 为 1减去错误率,即为: 1 − a / N 1-a/N 1 − a / N 。
误差(error):
学习器的实际预测输出 与 样本的真实输出之间的差异。分为:训练误差/经验误差(empirical error)、测试误差/泛化误差(generalization error)。
分类结果的混淆矩阵:
召回率 Recall 、精确率 Precision :
Recall = T P T P + F N , Precision = T P T P + F P \text{Recall} = \frac{TP}{TP + FN}, \quad \text{Precision} = \frac{TP}{TP + FP} Recall = TP + FN TP , Precision = TP + FP TP 召回率是“实际为正例的样本中,有多少被预测为正例”,精确率是“预测为正例的样本中,实际有多少是真的正例”。
希望召回率高相当于是“宁可错杀,不可放过”,希望精确率高相当于是“宁可漏判,不可错杀”。召回率衡量了发出去的样本中有多少被“召回”了,精度则描述了预测时有多“精准”。
recision 和 recall 是不可兼得的。想要 recall 高,就要多预测,没那么自信的也预测为正样本,才能尽可能覆盖更多的原始正样本;而想要 precision 高,就要少预测,有十足把握才预测正样本,这样才能更精确。对于火灾这类问题而言,预测错的代价不高,而漏预测的代价很高,因此需要强调 recall,方法是降低预测正样本的阈值,使模型更倾向于预测正样本。
真阳性率 TPR (True Positive Rate)、假阳性率 FPR (False Positive Rate):
TPR = T P T P + F N , FPR = F P T N + F P \text{TPR} = \frac{TP}{TP + FN}, \quad \text{FPR} = \frac{FP}{TN + FP} TPR = TP + FN TP , FPR = TN + FP FP ROC 曲线 :
ROC (Receiver Operator Characteristic) 曲线,称为受试者工作特征曲线或接收者操作特性曲线,是以假阳性率 FPR 为横坐标,以真阳性率 TPR 为纵坐标,绘制的曲线。
AUC 曲线 (Area Under Curve) 是 ROC 曲线下的面积 ,表示分类器的性能。AUC 的值范围在 0 到 1 之间,值越大表示分类器性能越好。AUC 用于衡量模型对正类和负类的区分能力,即:从所有正类和负类中随机选一个,模型将正类排在前面的概率。特点:与具体阈值无关;适合二分类问题。
思考一下什么样的 ROC 曲线代表高性能的模式识别系统?答:ROC 曲线越接近 左上角 越好,因为 FPR 越小越好, TPR 越大越好。
PR 曲线 :
PR (Precision-Recall) 曲线,是以召回率 recall 为横坐标,精度 precision 为纵坐标,绘制的曲线。
AP 曲线 (Average Precision) 是 PR 曲线下的面积 。AP 用于衡量模型在不同 recall 水平下的平均准确率,即:所有召回水平下,精度的加权平均(更关注排序前段的准确性)。多用于目标检测(如 COCO)或信息检索,常和 mAP (mean AP) 配合使用(多个类别取平均)。
单词测试使用固定的阈值,计算出 recall 和 precision。多次测试使用不同的阈值,得到多组 precision 和 recall 值,就能绘制出 PR 曲线。
F-score :
F1-score 是精度和召回率的调和平均数,综合考虑了精度和召回率的平衡。公式为:
F 1 = 2 ⋅ P R P + R = 2 ⋅ T P 2 T P + F P + F N F β = ( 1 + β 2 ) ⋅ P R ( β 2 ) P + R F_1 = 2 \cdot \frac{PR}{P+R} = 2 \cdot \frac{TP}{2TP + FP + FN} \\ F_\beta = (1+\beta^2) \cdot \frac{PR}{(\beta^2) P + R} F 1 = 2 ⋅ P + R PR = 2 ⋅ 2 TP + FP + FN TP F β = ( 1 + β 2 ) ⋅ ( β 2 ) P + R PR F-score 最理想的数值是趋近于1,此时 precision 和 recall 都很高,接近于1。
交叉验证 Cross Validation:
交叉验证是用来验证分类器的性能一种统计分析方法,将原始数据(dataset)进行分组,一部分做为训练集(training set),另一部分做为验证集(validation set)。 K-折交叉验证(K-fold Cross Validation):将原始数据分成 K K K 组(一般是均分),将每个子集数据分别做一次验证集,其余的 K − 1 K-1 K − 1 组子集数据作为训练集,这样得到 K K K 个模型。把这 K K K 个模型在最终验证集的分类准确率的平均数,作为分类器的性能指标。 留一法(Leave-One-Out):每个样本单独作为验证集,其余的 N − 1 N-1 N − 1 个样本作为训练集。 过拟合/欠拟合、生成式模型/鉴别式模型,前面已经讨论过,可见 第3讲 - Machine Learning 。
2025-06-15 23:38:33 2025-06-13 00:35:18 GitHub