zoukankan      html  css  js  c++  java
  • 哈尔滨工业大学计算机学院-模式识别-课程总结(二)-概率密度函数的参数估计

    1. 概率密度函数的参数估计

    • 前文讲到了利用贝叶斯决策理论构建贝叶斯分类器,初学者难免会有疑问,既然已经可以通过构建贝叶斯分类器的方法处理分类问题,那为什么还要学习本章节内容?
    • 事实上,贝叶斯分类器的缺可以通过计算先验概率与类条件概率来设计最优分类器。但是对于大多数实际问题,我们往往无法知道这两个概率的具体信息,其中先验概率往往比较容易计算,类条件概率很难获取。如何计算类条件概率,便是本章要进行讲述的内容,
    • 这里举一个例子,解释为什么先验概率比较容易获取。如果100万个人中有60万男40万女,可以粗略认为男性类别的先验概率为60%。
    • 标题中概率密度函数,指的就是类条件概率的概率密度函数。对于此函数的估计有两种方法,本章介绍参数估计方法,不介绍非参数估计方法。在授课过程中,老师只是着重强调了非参数估计方法中的近邻分类器,由于该分类器比较简单,便不做展开。 读者只需要了解如下内容即可:
      • 非参数化方法不需要对类条件概率密度的分布形式做出假设,而是直接利用训练样本集合对概率密度函数做出估计,也就是省略概率估计,直接计算后验概率,即设计判别函数。能够处理任意概率分布,不必假设形式。K近邻法就是直接估计每个类别的后验概率。

    2. 最大似然估计

    • 最大似然估计把待估计的参数看作是确定性的量,只是取值未知,最佳估计就是使得产生已观测到样本(即训练样本)的概率为最大的那个。
    • 基于独立同分布假设,样本集合(D)出现的概率为:

    [p ( D | mathbf { heta } ) = p left( mathbf { x } _ { 1 } , mathbf { x } _ { 2 } , cdots , mathbf { x } _ { n } | mathbf { heta } ight) = prod _ { i = 1 } ^ { n } p left( mathbf { x } _ { i } | mathbf { heta } ight) ]

    • 对数似然函数将乘法变成加法,可以避免出现累乘的概率值越来越小的情况:

    [l ( mathbf { heta } ) = ln p ( D | mathbf { heta } ) = sum _ { i = 1 } ^ { n } ln p left( mathbf { x } _ { i } | mathbf { heta } ight) ]

    • 就对数似然函数而言,最大似然估计便是寻找一个最优参数,使得似然函数(l( heta))值最大:

    [hat { mathbf { heta } } = arg max l ( mathbf { heta } )​ ]

    • 当概率密度函数为正态分布形式时,高斯分布(也就是正态分布)参数的最大似然估计结果为:

    [hat { mathbf { mu } } = frac { 1 } { n } sum _ { i = 1 } ^ { n } mathbf { x } _ { i } ]

    [mathbf { Sigma } = frac { 1 } { n } sum _ { i = 1 } ^ { n } left( mathbf { x } _ { i } - hat { mathbf { mu } } ight) left( mathbf { x } _ { i } - hat { mathbf { mu } } ight) ^ { t } ]

    多变量高斯分布的参数为均值向量和协方差矩阵,均值向量的维度即多变量的个数。只要确定了均值向量与协方差矩阵,高斯分布的函数形式也就确定了。

    2.1 高斯混合模型GMM

    • GMM采用混合密度模型的思想:一个复杂的概率密度分布函数可以由多个简单的密度函数混合构成:

    [p ( mathbf { x } | mathbf { heta } ) = sum _ { i = 1 } ^ { M } a _ { i } p _ { i } ( mathbf { x } | mathbf { heta } _ { i } ) , quad sum _ { i = 1 } ^ { M } a _ { i } = 1 ]

    (M)是简单密度函数的个数,(a_i)可以看作是第(i)个简单密度函数的先验概率。

    • 因此,GMM的形式化数学公式如下所示:

    [p ( mathbf { x } ) = sum _ { i = 1 } ^ { M } a _ { i } N left( mathbf { x } ; mathbf { u } _ { i } , mathbf { Sigma } _ { i } ight) ]

    在应用GMM做多个类别分类问题时(one vs rest),每个GMM与每个类别对应(注意区分,是GMM的个数与类别个数相对应,而不是GMM中的简单高斯模型个数),该函数可以看作是该模型所对应类别的判别函数。

    • GMM的所有参数为:

    [mathbf { heta } = left( a _ { 1 } , a _ { 2 } , cdots , a _ { M } , oldsymbol { mu } _ { 1 } , mathbf { Sigma } _ { 1 } , cdots , oldsymbol { mu } _ { M } , mathbf { Sigma } _ { M } ight) ]

    • 高斯混合模型采用EM算法进行训练,具体学习过程在实验三中介绍。

    2.2 期望最大化算法EM

    • EM算法的应用可以分为两个方面:
      1.训练样本中某些特征丢失情况下,分布参数的最大似然估计。
      2.对某些复杂分布模型假设,最大似然估计很难得到解析解时的迭代算法。

    • 样本集:令(X)是观察到的样本数据集合,(Y)是丢失的数据集合,完整的样本集合(D = X U Y)

    (Y)指的是丢失的某些维度的特征,举例如下:在高斯混合模型中,可以认为每个高斯模型的先验概率参数(a),就是丢失的特征。

    • 似然函数:在给定参数( heta)时,似然函数可以看作(Y)的函数:

    [l ( mathbf { heta } ) = l ( mathbf { heta } | D ) = l ( mathbf { heta } | mathbf { X } , mathbf { Y } ) = ln p ( mathbf { X } , mathbf { Y } | mathbf { heta } ) ]

    • 由于(Y)未知,因此我们需要寻找到一个在(Y)的所有可能情况下,平均意义下的似然然函数最大值:
      E步:(egin{aligned} Q ( mathbf { heta } | mathbf { heta } ^ { i - 1 } ) & = E _ { mathbf { Y } } ( l ( mathbf { heta } | mathbf { X } , mathbf { Y } ) | mathbf { X } , mathbf { heta } ^ { i - 1 } ) \ & = E _ { mathbf { Y } } ( ln p ( mathbf { X } , mathbf { Y } | mathbf { heta } ) | mathbf { X } , mathbf { heta } ^ { i - 1 } ) end{aligned})
      M步: (mathbf { heta } ^ { i } = arg max _ { mathbf { heta } } mathcal { Q } ( mathbf { heta } | mathbf { heta } ^ { i - 1 } ))
    • EM算法通过计算未知特征平均意义下的似然函数最大值,得到最优参数。

    EM算法具有收敛性,此处最优只能保证收敛于局部最优,不一定是全局最优。

    3. 贝叶斯估计

    • 贝叶斯估计把待估计的参数看成是符合某种先验概率分布的随机矢量。
    • 对样本D进行观测的过程,就是把先验概率密度转化为后验概率密度,这样就利用样本信息修正了对参数的初始估计值。
    • 利用训练样本集合估计出参数矢量的分布,而在识别时需要考虑所有可能参数产生待识别样本的平均值,也可以是积分形式。
    • 优点是在小样本集条件下的保持较高估计准确率。
    • 贝叶斯估计的识别过程是类条件概率密度的计算:

    [p ( mathbf { x } | D ) = int p ( mathbf { x } , mathbf { heta } | D ) d mathbf { heta } = int p ( mathbf { x } | mathbf { heta } ) p ( mathbf { heta } | D ) d mathbf { heta } ]

    • 学习过程是参数后验概率密度的估计:

    [p ( mathbf { heta } | D ) = frac { p ( D | oldsymbol { heta } ) p ( oldsymbol { heta } ) } { int p ( D | mathbf { heta } ) p ( mathbf { heta } ) d mathbf { heta } } = frac { prod _ { i = 1 } ^ { n } p left( mathbf { x } _ { i } | mathbf { heta } ight) p ( mathbf { heta } ) } { int prod _ { i = 1 } ^ { n } p left( mathbf { x } _ { i } | mathbf { heta } ight) p ( mathbf { heta } ) d mathbf { heta } } ]

  • 相关阅读:
    ionic框架
    第3课
    第7课
    第6课
    第5课
    第4课
    第3课
    第2课
    第2课
    第1课
  • 原文地址:https://www.cnblogs.com/szxspark/p/9926397.html
Copyright © 2011-2022 走看看