zoukankan      html  css  js  c++  java
  • 机器学习统计学习

    统计学习

    前言:机器学习比较重要的几部分:线性模型、统计学习、深度学习,线性部分包括SVM、压缩感知、稀疏编码,都是控制整个模型的稀疏性去做线性函数,偏 Discriminative 判别模型;统计学习主要通过统计方法对数据建模找到极大似然,偏 Generative 生成方法;深度学习就是 neural model,偏非线性。

    机器学习中的统计多是基于对事件的不确定性度量关于,是主观的,而不是客观地基于频次。

    EM算法 ( 期望最大算法,Expectation Maximum )

    参考:EM-最大期望算法

    隐含变量

    给定训练数据 (D={(x^{(1)},y^{(1)}),...,(x^{(N)},y^{(N)})}),一般想学习到的情况是 (x^{(i)})(y^{(i)}) 之间的函数关系,但是在统计学习里想学习到的是 (P(y^{(i)}|x^{(i)})),在二分类问题里就是 (P(0|x^{(i)}))(P(1|x^{(i)})=1-P(0|x^{(i)}))

    一般假设数据服从某种分布,根据给定数据估计分布函数的参数求极大似然值(L(mu,sigma)=prod_{i=1}^N P(x^{(i)}|mu,sigma)=sum_{i=1}^N logP(x^{(i)}|mu,sigma))

    隐含变量和概率分布的关系

    变量 (X) 每一个维度都相互独立

    [P(X)=P(x_1,x_2,...,x_n)=prod_{j=1}^n P(x_j) ]

    (X) 和某隐含变量 (Z) 相关

    [P(X)=sum_ZP(X,Z)边缘概率\=sum_ZP(X|Z)P(Z) ]

    • 已知 (Z)(X) 有某种隐含关系,(P(X|Z)) 是可以求出来的
    • (P(Z)) 可假设 (Z) 服从某种先验分布

    举例

    掷硬币,(X={0,1}),认为掷硬币的结果可能和高度相关,(Z) 为掷硬币的高度,抛掷高度、角度等都是假象的可能和结果有关的变量,我们假想这些因素来刻画数据的肌理,就是所谓 Generative Model。

    假设三枚硬币 (A,B,C),掷出正面的概率分别为 (pi,p,q),想象生成过程比较复杂,掷出 (A) ,若结果为 1 ,就掷 (B),若结果为 0 ,就掷 (C),每次先掷 (A),由 (A) 的结果决定掷 (B) 还是 (C),记下 (B,C) 的结果,生成 (Y=(y^{(1)},y^{(2)},...,y^{(N)})),如何预测 (y^{(i)})

    1. 有参模型,( heta=(pi,p,q))

    2. (P(y| heta)=sum_ZP(y,Z| heta)),引入一个隐含变量 (Z),控制事件 (y),表示 (A) 硬币的结果,(Z=1) 表示掷的硬币 (B)(Z=0) 表示掷的硬币 (C)

      • (P(y| heta)=sum_ZP(y|Z, heta)P(Z| heta))

      • (P(Z| heta)=P(Z|(pi,p,q))=pi),因为 (P(Z=1| heta)=pi)(P(Z=0| heta)=1-pi)

      • (sum_ZP(y|Z, heta)=P(y|Z=1, heta)+P(y|Z=0, heta))

        • (P(y|Z=1, heta)=p^y(1-p)^{1-y})

          (P(y|Z=0, heta)=q^y(1-q)^{1-y})

    3. 拆开

      [z=1quad P(y| heta)=pi p^y(1-p)^{1-y}\z=0 quad P(y| heta)=(1-pi)q^y(1-q)^{1-y}\Rightarrow P(y| heta)=pi p^y(1-p)^{1-y}+(1-pi)q^y(1-q)^{1-y} ]

    4. 似然值为

      [P(Y| heta)=prod_{i=1}^NP(y^{(i)}| heta)=\prod_{i=1}^Npi p^{y^{(i)}}(1-p)^{1-y^{(i)}}+(1-pi)q^{y^{(i)}}(1-q)^{1-y^{(i)}}\=sum_{i=1}^N log P(y^{(i)}| heta) ]

    5. (pi,p,q)。只知道 (y^{(i)}),如何估计 (pi,p,q)

      • (P(y| heta)=pi p^y(1-p)^{1-y}+(1-pi)q^y(1-q)^{1-y})混合模型(p^y(1-p)^{1-y}) 是硬币 (B) 掷出来的伯努利分布,(q^y(1-q)^{1-y}) 是硬币 (C) 结果的伯努利分布。(pi)(1-pi) 就像两个事情的权重,就是两事件的混合模型 (多模态混合,(alpha_1P_1,...,alpha_nP_n)(sum_ialpha_i=1))。

      • (p=frac{num (B正面)}{N})(q=frac{num (C正面)}{N})(pi=frac{num (B)}{N})

      • E.step

        [mu=frac{pi p^y(1-p)^{1-y}}{pi p^y(1-p)^{1-y}+(1-pi)q^y(1-q)^{1-y}} ]

        • 给出掷出结果是硬币 (B) 掷出的概率
      • M.step:

        [pi = frac{1}{N}sum_{j=1}^{N} mu_j ]

        • 对每一次掷出结果是硬币 (B) 掷出的概率求均值,得出整体来说是硬币 (B) 掷出的概率

        [p=frac{sum_{j=1}^N mu_j y^{(j)}}{sum_{j=1}^N mu_j} ]

        • (y^{(j)}=1) 正面,(y^{(j)}=0) 反面

        [q=frac{sum_{j=1}^N (1-mu_j) y^{(j)}}{sum_{j=1}^N (1-mu_j)} ]

        • (pi,p,q) 进行最大化估计
    6. ( heta_0=(pi_0,p_0,q_0)) 互相迭代至 (pi,p,q) 不再变化,结果就是对 (pi,p,q) 最好的估计

    琴生不等式

    1. (f) 是凸函数,对任意变量 (x):

      [E(f(x))ge f(E(x)) ]

    2. (f) 是凹函数,对任意变量 (x):

      [E(f(x))le f(E(x)) ]

    8.png

    琴生不等式在EM的应用

    求极大似然值

    [L( heta)=sum_{i=1}^m logP(x| heta)=sum_{i=1}^mlogsum_zP(x,z| heta) ]

    • (z) 隐含变量

    展开

    [sum_i logP(x^{(i)}| heta)=sum_ilog sum_{z^{(i)}}P(x^{(i)},z^{(i)}| heta)\=sum_ilogsum_{z^{(i)}}Q_i(z^{(i)})frac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{(i)})}\ ge sum_isum_{z^{(i)}}Q_i(z^{(i)})logfrac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{(i)})} ]

    • (E(g(x))=sum_x g(x)P(x))
    • (Q_i(z^{(i)})) 表示 (z^{(i)}) 的概率分布 (P(z^{(i)}))
    • (sum_{z^{(i)}}Q_i(z^{i})frac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{i})}) 可看成函数 (g(z^{(i)})=frac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{i})}) 数学期望
    • (log) 提出来,因为 (log) 是凹函数,根据琴生不等式 (log(E(x))ge E(log(x)))

    要提高极大似然值,就优化下界使最大化。函数 (sum_isum_{z^{(i)}}Q_i(z^{(i)})logfrac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{(i)})}) 记作 (E(f(z^{(i)}))),要使得该期望最大化,需满足 (f(z^{(1)})=f(z^{(2)})=...=f(z^{(n)})),即

    [frac{P(x^{(i)},z^{(i)}| heta)}{Q_i(z^{(i)})}=c Leftrightarrow Q_i(z^{(i)}) varpropto P(x^{(i)},z^{(i)}| heta) ]

    因为 (sum_zQ_i(z^{(i)})=1),则

    [Q_i(z^{(i)}) = frac{P(x^{(i)},z^{(i)}| heta)}{sum_z P(x^{(i)},z^{(i)}| heta)}=frac{P(x^{(i)},z^{(i)}| heta)}{P(x^{(i)}| heta)}=P(z^{(i)}|x^{(i)}, heta) ]

    EM 算法公式表述

    **迭代至收敛 **{

    (E-step) ,for each (i),set

    (Q_i(z^{(i)}):=P(z^{(i)}|x^{(i)}, heta))

    (M-step) ,set

    $ heta:= arg max_{ heta}sum_isum_{z{(i)}}Q_i(z{(i)})logfrac{p(x{(i)},z{(i)}| heta)}{Q_i(z^{(i)})}$
    }

    • EM 算法常用于估计参数隐变量
    • EM 算法通过引入隐含变量,使用 MLE (极大似然估计) 进行迭代求解参数。
    • E-step 通过已有数据和现有模型估计隐含参数
    • M-step 假设隐含参数已知的情况下,最大化似然函数从而获取新的参数值

    高斯混合模型 ( Gaussian Mixed Model, GMM)

    高斯分布 ( 正态分布 ) 函数:(X sim N(mu,sigma^2))

    高斯混合模型就是多个高斯分布函数的线性组合,通常用于处理同一集合数据分布类型不同的情况。

    高斯混合模型能够平滑地近似任意形状的密度分布。

    二维混合模型

    假设第一个高斯分布参数为 (mu_1,sigma_1),第二个高斯分布参数为 (mu_2,sigma_2),混合两个高斯分布的模型满足

    [P(x| heta)P(x|mu_1,mu_2,delta_1,delta_2,pi)\=pi N(mu_1,delta_1)+(1-pi)N(mu_2,delta_2) ]

    给定数据为 (D={x^{(1)},x^{(2)},...,x^{(N)}})

    参数的极大似然值

    [L( heta)=arg maxP(D| heta)\=arg max prod_{i=0}^N P(x^{(i)}| heta)\=arg max sum_{i=1}^N log P(x^{(i)}| heta) ]

    如何求 (P(x^{(i)}| heta))

    [P(x| heta)=sum_zP(x,z| heta)\=sum_z P(x|z, heta)P(z| heta) (由联合概率变为条件概率和其先验分布)\ =sum P(x|z=0, heta)P(z=0| heta)+P(x|z=1, heta)P(z=1| heta)\=pi N(mu_1,delta_1)+(1-pi)N(mu_2,delta_2) ]

    对观察数据 (x^{(j)}) 推测属于哪个高斯分布函数,概率为

    [w^{(j)}=frac{pi cdot P(x^{(j)}|mu_1,delta_1)}{pi cdot P(x^{(j)}|mu_1,delta_1)+(1-pi) cdot P(x^{(j)}|mu_2,delta_2)} ]

    • 这步是 (E-step),估计参数

    [pi=frac{sum_{j=1}^N w^{(j)}}{N}\mu_1=frac{sum_{j=1}^N w^{(j)}x^{(j)}}{sum_{j=1}^Nw^{(j)}}\mu_2=frac{sum_{j=1}^N (1-w^{(j)})x^{(j)}}{sum_{j=1}^N(1-w^{(j)})}\delta_1^2=frac{w^{(j)}(x^{(j)}-mu_1)^2}{sum_{j=1}^Nw^{(j)}}\delta_2^2=frac{(1-w^{(j)})(x^{(j)}-mu_2)^2}{sum_{j=1}^N(1-w^{(j)})} ]

    • 这是 (M-step),代入参数估计值

    多维混合模型

    [p(x)=sum_{k=1}^Kpi_kN(x|mu_k,delta_k) ]

    • (N(x|mu_k,delta_k)) 称为混合模型中第 (k) 个分量
    • (pi_k) 是混合系数,是每个分量的权重,是每个分量被选中的概率
    • (sum_{k=1}^Kpi_k=1 (0 le pi_k le 1))

    隐马尔可夫模型

    马尔可夫链 ( Markov chain ),又称离散时间马尔可夫链,因俄国数学家安德烈. 马尔可夫得名,为状态空间中从一个状态到另一个状态转换的 "无记忆" 随机过程,下一状态的概率分布只能由当前状态决定。

    隐马尔可夫模型 ( Hidden Markov Model ),有隐含变量控制的马尔科夫链,状态并不是直接可见的,但受状态影响的某些变量则是可见的。每一个状态在可能输出的符号上都有一概率分布。因此输出符号的序列能够透露出状态序列的一些信息。

    9.png

    举例

    假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天做了什么。你的朋友仅仅对三种活动感兴趣:公园散步,购物以及清理房间。他选择做什么事情只凭天气。你对于他所住的地方的天气情况并不了解,但是你知道总的趋势。在他告诉你每天所做的事情基础上,你想要猜测他所在地的天气情况。

    你认为天气的运行就像一个马尔可夫链。其有两个状态“雨”和“晴”,但是你无法直接观察它们,也就是说,它们对于你是隐藏的。每天,你的朋友有一定的概率进行下列活动:“散步(W)”、“购物(S)”、“清理(C)”。因为你朋友告诉你他的活动,所以这些活动就是你的观察数据。这整个系统就是一个隐马尔可夫模型(HMM)。

    假设朋友告诉你一连串活动 CSSSCWWSCW 问下一次朋友做什么活动的概率最大。

    对于复杂系统需要学习合适参数使得参数能最大拟合给定数据,这就是一个如何训练隐马尔可夫链的问题。

    记状态转移矩阵 A ,描述的是天气运行的状态转移概率

    [A=left[egin{matrix}0.8&0.4\0.2&0.6end{matrix} ight]=a_{q_t,q_{t+1}}quad q_t in{Sunny,Rainy} ]

    • 描述的是当前状态为 "雨" 或 "晴" 时,下一状态为 "雨" 或 "晴"的概率
    • (q_t) 是隐含变量,无法观测到

    记生成矩阵 B,描述的是天气状态与活动之间的生成概率

    [B=left[egin{matrix}0.1&0.5\0.2&0.3\0.7&0.2end{matrix} ight]=b_{q_t,y_t}quad q_t in{Sunny,Rainy},y_tin{Clean,Walk,Shop} ]

    • (y_t) 是实际观察到的数据,根据 (q_t) 生成

    记初始状态,即初始天气状态的概率

    [P(Sunny)=piquad P(Rainy)=1-pi ]

    则给定的条件用公式描述为

    [P(y| heta)=P(y|A,B,pi) ]

    则计算某一时刻的状态,即联合概率 (P(q^{(i)},y^{(i)})=P(y^{(i)}|q^{(i)})P(q^{(i)}))

    [P(Q,Y)=P(q^{(0)})prod_{t=0}^{T} P(q^{(t+1)}|q^{(t)})prod_{t=0}^{T}P(y^{(t)}|q^{(t)})\=pi prod_{t=0}^{T}a_{q^{(t)},q^{(t+1)}}prod_{t=0}^{T}b_{q^{(t)},y^{(t)}} ]

    [P(y)=sum_QP(Q,Y)=sum_{q^{(0)}}sum_{q^{(1)}}...sum_{q^{(T)}}pi prod_{t=0}^{T}a_{q^{(t)},q^{(t+1)}}prod_{t=0}^{T}b_{q^{(t)},y^{(t)}} ]

    前向后向算法

    把隐马尔可夫链分为两个部分,前边部分为 (q^{(t)}) 前包括 (q^{(t)}) ,后边部分为 (q^{(t+1)})(q^{(T)})

    对隐含状态的估计 (P(q^{(t)}|y)=frac{P(y|q^{(t)})P(q^{(t)})}{P(y)}=frac{P(y^{(0)},y^{(1)},...,y^{(t)}|q^{(t)})P(q^{(t)})P(y^{(t+1)}...y^{(T)}|q^{(t)})}{P(y)})

    构造 (alpha, eta) 函数

    [alpha(q^{(t)})=P(y^{(0)},y^{(1)},...,y^{(t)},q^{(t)}) ]

    [eta(q^{(t)})=P(y^{(t+1)}...y^{(T)}|q^{(t)}) ]

    [P(q^{(t)}|y)=frac{alpha(q^{(t)})eta(q^{(t)})}{P(y)} ]

    因为

    [alpha(q^{(t+1)})=P(y^{(0)},y^{(1)},...,y^{(t)},y^{(t+1)},q^{(t+1)})\=P(y^{(0)},y^{(1)},...,y^{(t+1)}|q^{(t+1)})P(q^{(t+1)})\=P(y^{(0)},y^{(1)},...,y^{(t)}|q^{(t+1)})P(y^{(t+1)}|q^{(t+1)})P(q^{(t+1)})\=sum_{q^{t}}P(y^{(0)},y^{(1)},...,y^{(t)},q^{(t)}|q^{(t+1)})P(y^{(t+1)}|q^{(t+1)})P(q^{(t+1)})\发现P(q^{(t+1)})可写成联合概率形式\=sum_{q^{t}}P(y^{(0)},y^{(1)},...,y^{(t)},q^{(t)},q^{(t+1)})P(y^{(t+1)}|q^{(t+1)})\P(y^{(t+1)}|q^{(t+1)})就是b_{q+1,y+1}\=sum_{q^{t}}P(y^{(0)},y^{(1)},...,y^{(t)},q^{(t+1)}|q^{(t)})P(q^{(t)})b_{q+1,y+1}\=sum_{q^{t}}P(y^{(0)},y^{(1)},...,y^{(t)}|q^{(t)})P(q^{(t+1)}|q^{(t)})P(y^{(t+1)}|q^{(t+1)})\=sum_{q^{t}}P(y^{(0)},y^{(1)},...,y^{(t)},q^{(t)})P(q^{(t+1)}|q^{(t)})b_{q+1,y+1}\=sum_{q^{t}}alpha(q^{(t)})a_{q^t,q^{t+1}}b_{q+1,y+1} ]

    每一时刻的 (alpha) 值都是前一时刻 (alpha) 值的累加乘所有可能的状态转移概率与生成概率。

    其他两个问题参考

    机器学习算法之隐马尔可夫模型

    主题模型

    Dirichlet 分布

  • 相关阅读:
    用成员函数指针作为Callback
    在ubuntu上编译gcc会到的问题及解决方法
    异步
    棋牌游戏服务器架构: 详细设计(二) 应用层设计
    elementUI eltable添加序号列
    vue 父子组件的相互调用
    所谓编程的哲学艺术
    亲爱的百度,您带着bug翩翩走来……呃
    std::vector<point>对距离固定点的距离排序
    升级ubuntu11出现grub错误
  • 原文地址:https://www.cnblogs.com/ColleenHe/p/11657115.html
Copyright © 2011-2022 走看看