Jiahong 的个人博客

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

ML——EM算法

期望最大化(Exception Maximization Algorithm)EM算法


不同教材的不同形式

李航统计学习方法

算法步骤
  • 输入: 观测变量数据Y

  • 输出: 模型(参数 \(\theta\))

  • E步: 计算 \(Q(\theta, \theta^{i})\)
    $$
    \begin{align}
    Q(\theta, \theta^{i}) &= \mathbb{E}_{Z}[logP(Y,Z|\theta)|Y,\theta^{i}] \\
    &= \mathbb{E}_{Z\sim P(Z|Y,\theta^{i})}[logP(Y,Z|\theta)] \\
    &= \sum_{Z} P(Z|Y,\theta^{i})logP(Y,Z|\theta) \\
    &= \sum_{Z} logP(Y,Z|\theta)P(Z|Y,\theta^{i})
    \end{align}
    $$

  • M步: 求使得 \(Q(\theta, \theta^{i})\) 极大化的参数 \(\theta=\theta^{i+1}\)
    $$\theta^{i+1} = \mathop{\arg\max}_{\theta}Q(\theta, \theta^{i})$$

  • 重复E步和M步,直到收敛

  • 理解: \(Q(\theta, \theta^{i})\) 可以理解为 \(Q(\theta|\theta^{i})\),表示在参数 \(\theta^{i}\) 已知的情况下,对数似然函数关于隐变量后验分布的期望函数,函数的参数为 \(\theta\)

隐变量的期望还是分布?

参考博客:https://www.jianshu.com/p/c3ff1ae5cb66

仅考虑隐变量的期望
  • 应用场景为k-means聚类,但是k-means聚类E步求的是最可能的 \(Z\) 值(概率最大的 \(Z\) 值),而不是 \(Z\) 的期望
步骤 具体细节
E步 基于 \(\theta^{i}\) 推断隐变量 \(Z\) 的期望,记为 \(Z^{i}\)
M步 基于已观测变量 \(Y\) 和 \(Z^{i}\) 对参数 \(\theta\) 做极大似然估计,得到 \(\theta^{i+1}\) $$\theta^{i+1}=\mathop{\arg\max}_{\theta}P(Y,Z^{i}\mid\theta)$$
考虑隐变量的分布
  • 应用场景为GMM模型聚类
步骤 具体细节
E步 基于 \(\theta^{i}\) 推断隐变量 \(Z\) 的后验分布 \(P(Z\mid Y,\theta^{i})\)
E步M步均可 基于隐变量的后验分布 \(P(Z\mid Y,\theta^{i})\)
计算对数似然函数 \(logP(Y,Z\mid\theta)\) 关于隐变量 \(Z\) 的后验分布 \(P(Z\mid Y,\theta^{i})\) 的期望 \(Q(\theta,\theta^{i})\)
$$Q(\theta,\theta^{i}) = \mathbb{E}_{P(Z\mid Y,\theta^{i})}logP(Y,Z\mid \theta)$$
M步 基于期望函数 \(Q(\theta, \theta^{i})\),对参数 \(\theta\) 求极值(极大似然估计),得到$$\theta^{i+1}=\mathop{\arg\max}_{\theta}Q(\theta, \theta^{i})=\mathop{\arg\max}_{\theta}\mathbb{E}_{P(Z\mid Y,\theta^{i})}logP(Y,Z\mid \theta)$$
推导
  • 已知数据是观测数据Y,像极大似然法一样,使得似然函数最大化即可,这里为了方便计算使用对数似然

  • 我们的终极目标与极大似然法一样,求一个使得似然函数最大(可能是极大)的参数$$\theta^{\star}=\mathop{\arg\max}_{\theta}L(\theta)$$
    其中
    $$
    \begin{align}
    L(\theta)&=logP(Y|\theta)\\
    &=log\sum_{Z}P(Y,Z|\theta)\\
    &=log\left(\sum_{Z}P(Y|Z,\theta)P(Z|\theta)\right)
    \end{align}
    $$

  • 显然,上述似然函数比较难以求解,非凸,且涉及和(积分或加法)的对数等操作,难以展开(可能还有其他的原因)

  • 所以我们使用EM算法迭代不断逼近原始似然函数的最优解 \(\theta^{\star}\) (注意:我们只能得到局部最优,但是一般来说局部最优也够用了)

  • 可用Jensen不等式得到 \(L(\theta)\) 的下界来作为优化目标不断迭代
    $$
    \begin{align}
    L(\theta)&=log\left(\sum_{Z}P(Y|Z,\theta)P(Z|\theta)\right)\\
    &=log\left(\sum_{Z}P(Z|Y,\theta^{i})\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{i})}\right)\\
    &\geq \sum_{Z}P(Z|Y,\theta^{i})log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{i})}\\
    &=B(\theta,\theta^{i})
    \end{align}
    $$

  • 由于此时 \(B(\theta, \theta^{i})\) 是 \(L(\theta)\) 的下界(\(B(\theta, \theta^{i})\) 是固定 \(\theta^{i}\) 时关于 \(\theta\) 的凸函数且容易求导,可以求极大值),所以使得前者增大的参数 \(\theta\) 也能使得后者增大,为了使得后者尽可能的增大,我们对前者取极大值

    • 下面的推导基于事实: 消去与 \(\theta\) 无关的项,极大值点(\(\theta^{i+1}\))不变

$$
\begin{align}
\theta^{i+1} &= \mathop{\arg\max}_{\theta}B(\theta,\theta^{i})\\
&=\mathop{\arg\max}_{\theta}\left( \sum_{Z}P(Z|Y,\theta^{i})log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{i})}\right)\\
&=\mathop{\arg\max}_{\theta}\left( \sum_{Z}P(Z|Y,\theta^{i})logP(Y|Z,\theta)P(Z|\theta)-\sum_{Z}P(Z|Y,\theta^{i})logP(Z|Y,\theta^{i})\right)\\
&= \mathop{\arg\max}_{\theta}\left( \sum_{Z}P(Z|Y,\theta^{i})logP(Y|Z,\theta)P(Z|\theta)\right)\\
&=\mathop{\arg\max}_{\theta}Q(\theta,\theta^{i})
\end{align}
$$

  • 由上式可知,我们的EM算法步骤中E步和M步是正确的
  • 问题:推导第二步中为什么选择 \(P(Z|Y,\theta^{i})\) 而不是其他分布呢?
    • 解答: \(B(\theta, \theta^{i})\) 和 \(L(\theta)\) 什么时候相等呢?(前面推导中Jensen不等式什么时候能取等号呢?)
    • Jensen不等式取等号当且仅当Jensen不等式中函数的值为常数,此处函数的值为 \(log\frac{P(Y,Z|\theta)}{Q(Z)}\)
      $$
      \begin{align}
      L(\theta)&=log\left(\sum_{Z}P(Y,Z|\theta)\right)\\
      &=log\left(\sum_{Z}Q(Z)\frac{P(Y,Z|\theta)}{Q(Z)}\right)\\
      &\geq \sum_{Z}Q(Z)log\frac{P(Y,Z|\theta)}{Q(Z)}\\
      \end{align}
      $$
    • 不等式中当且仅当 \(log\frac{P(Y,Z|\theta)}{Q(Z)}\) 为常数,也就是 \(\frac{P(Y,Z|\theta)}{Q(Z)}=c\),c为常数,时等号成立
    • 此时由于 \(Q(Z)\) 是一个分布(注意:正因为 \(Q(Z)\) 是一个分布才能用Jensen不等式),所以有
      $$
      \begin{align}
      Q(Z)=\frac{P(Y,Z|\theta)}{\sum_{Z}P(Y,Z|\theta)}=\frac{P(Y,Z|\theta)}{P(Y|\theta)}=P(Z|Y,\theta)
      \end{align}
      $$

吴恩达CS229

  • E步: 计算 \(Q_{i}(Z)=P(Z|Y,\theta^{i})\)
  • M步: 求使得原始似然函数下界极大化的参数 \(\theta=\theta^{i+1}\)
    $$
    \begin{align}
    \theta^{i+1} &= \mathop{\arg\max}_{\theta}\sum_{Z}P(Z|Y,\theta^{i})log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{i})} \\
    &= \mathop{\arg\max}_{\theta}\sum_{Z}Q_{i}(Z)log\frac{P(Y|Z,\theta)P(Z|\theta)}{Q_{i}(Z)}
    \end{align}
    $$
    • 进一步消除与 \(\theta\) 无关的项可以得到
      $$
      \begin{align}
      \theta^{i+1} &= \mathop{\arg\max}_{\theta}\sum_{Z}Q_{i}(Z)logP(Y|Z,\theta)P(Z|\theta)
      \end{align}
      $$
  • 推导步骤和李航统计学习方法一样,核心是运用Jensen不等式

总结

  • 以上两个不同课程的E步不同,但完全等价,吴恩达CS229课程中E步计算 \(Q_{i}(Z)=P(Z|Y,\theta^{i})\) 就等价于计算出了李航统计学习方法中的 \(Q(\theta, \theta^{i})\),二者关系如下:
    $$
    \begin{align}
    Q(\theta, \theta^{i})&=\sum_{Z}P(Z|Y,\theta^{i})logP(Y|Z,\theta)P(Z|\theta) \\
    &= \sum_{Z}Q_{i}(Z)logP(Y|Z,\theta)P(Z|\theta)
    \end{align}
    $$
  • M步中,二者本质上完全相同,但是吴恩达CS229中没消去与 \(\theta\) 无关的项,所以看起来不太简洁

实例

实例一
  • 三个硬币的抛硬币问题
    • 第一次:抛硬币A,决定第二次抛C还是B,选中B的概率为 \(\pi\)
    • 第二次:抛硬币B或C,正面为1,反面为0
  • (第一个硬币A抛中B的概率为隐变量)
实例二
  • 200个人不知道男女的身高拟合问题(性别为隐变量)
  • 这里是高斯混合模型的代表
实例三
  • K-Means聚类
  • 参考<<百面机器学习>>P100-P101

进一步理解

我的理解
  • 初始化参数 \(\theta^{0}\)

  • 1.根据参数 \(\theta^{i}\) 计算当前隐变量的分布函数 \(Q_{i}(Z)=P(Z|Y,\theta^{i})\)

    • 这一步的本质是使得在参数 \(\theta = \theta^i\) 时, 求得一个隐变量 \(Z\) 的分布,使得原始式子中的不等式取等号
  • 2.根据 \(Q_{i}(Z)=P(Z|Y,\theta^{i})\) 得到对数似然函数下界函数 \(B(\theta, \theta^{i})\) (求原始似然函数的下界B函数是因为直接对原始似然函数求极大值很难)或者 \(Q(\theta,\theta^{i})\)
    $$\mathop{\arg\max}_{\theta}B(\theta, \theta^{i})=\mathop{\arg\max}_{\theta}Q(\theta,\theta^{i})$$
    (\(Q(\theta,\theta^{i})\) 可以看作是 \(B(\theta, \theta^{i})\) 的简化版, \(B(\theta, \theta^{i})\) 才是原始似然函数的下界, \(Q(\theta,\theta^{i})\) 不是原始似然函数的下界)

    • 这里 \(B(\theta, \theta^{i})\) 就是原始似然函数的下界(也就是不等式取到等号)
  • 3.求使得函数 \(B(\theta, \theta^{i})\) 极大化的参数 \(\theta=\theta^{i+1}\)

    • 这一步是在固定隐变量 \(Z\) 的分布时, 用极大似然求一个使得下界 \(B(\theta, \theta^{i})\) 最大的参数 \(\theta = \theta^{i+1}\) 使得 \(B(\theta^{i+1}, \theta^{i}) = \text{max} B(\theta, \theta^{i})\)
  • 4.循环1,2,3直到收敛(相邻两次参数的变化或者是似然函数的变化足够小即可判断为收敛)

    • \(||\theta^{i+1}-\theta^{i}||<\epsilon_{1}\) 或者 \(||Q(\theta^{i+1},\theta^{i})-Q(\theta^{i},\theta^{i})||<\epsilon_{2}\)
  • 总结:

    • 在吴恩达CS229课程中: E步包含1, M步包含2,3,其中第2步中求的是 \(B(\theta, \theta^{i})\)
    • 在李航<<统计学习方法>>中: E步包含1,2, M步包含3,其中第2步中求的是 \(Q(\theta,\theta^{i})\)
    • 两种表达等价
图示理解
  • 迭代图示如下图(图来自博客:https://www.cnblogs.com/xieyue/p/4384915.html)
  • 也可参考李航<<统计学习方法>>第160页的图和解释

收敛性

  • 参考李航<<统计学习方法>>第160页-第162页推导过程
  • 参考<<百面机器学习>>第P099页-第P100页
    • 核心思想原始函数单调有界
    • 原始函数为 \(L(\theta)\),函数下界为 \(B(\theta,\theta^{i})\)
    • E步:
      • 找到使得在当前 \(\theta^{i}\) 确定时,原始函数的下界 \(B(\theta, \theta^{i})\),在 \(\theta^{i}\) 处有
        \(\)
        $$
        \begin{align}
        L(\theta^{i}) = B(\theta,\theta^{i})
        \end{align}
        $$
    • M步:
      • 找到使得函数 \(B(\theta,\theta^{i})\) 取得极大值的 \(\theta^{i+1}\)
    • i = i + 1,然后重新开始E和M步
      $$
      \begin{align}
      L(\theta^{i+1}) >= L(\theta^{i+1})
      \end{align}
      $$
    • 所以函数是单调的
    • 由于 \(L(\theta)\) 有界(这里原始函数有界可以从似然函数的定义得到)
    • 函数单调有界=>函数收敛(数学分析中的定理)

优劣性

优势
  • 简单性
  • 普适性
劣势
  • 不能保证收敛到最大值,只能保证收敛到极大值
  • 对初始值敏感,不同初始值可能收敛到不同极值点
  • 实际使用时通常采用多次选择不同的初始值来进行迭代,最终对估计值选最好的

EM算法的推广

  • 引入F函数
GEM1

F函数极大-极大法

  • 初始化参数 \(\theta^{0}\)
  • E步: 求使得 \(F(\tilde{P},\theta^{i})\) 极大化的 \(\tilde{P}^{i+1}\)
  • M步: 求使得 \(F(\tilde{P}^{i+1},\theta)\) 极大化的 \(\theta^{i+1}\)
  • 重复E,M,直到收敛
GEM2
  • 初始化参数 \(\theta^{0}\)
  • E步: 计算 \(Q(\theta,\theta^{i})\)
  • M步: 求 \(\theta^{i+1}\) 使得 \(Q(\theta^{i+1},\theta^{i}) > Q(\theta^{i},\theta^{i})\)
  • 重复E,M,直到收敛
  • 总结: \(Q(\theta,\theta^{i})\) 的极大化难求时,这种方法可以简化计算
GEM3
  • 初始化参数 \(\theta^{0}\)
  • E步: 计算 \(Q(\theta,\theta^{i})\)
  • M步: 对参数 \(\theta^{i}\) 的每一个维度k,固定参数的其他维度,求使得 \(Q(\theta,\theta^{i})\) 极大化的 \(\theta_{k}^{i+1}\),最终得到 \(\theta^{i+1}\)
    • 使得 \(Q(\theta^{i+1},\theta^{i}) > Q(\theta^{i},\theta^{i})\)
  • 重复E,M,直到收敛
  • 总结: 一种特殊的GEM算法,将M步分解为参数 \(\theta\) 的维度次来条件极大化

ML——HMM-MEMM-CRF

本文主要区分隐马尔可夫模型(HMM),最大熵马尔可夫模型(MEMM),和条件随机场(CRF)


HMM

  • 生成式模型
  • 有向图模型,贝叶斯网络

模型描述

  • 模型参数: \(\lambda = (A, B, \pi)\)
    • A为状态转移矩阵
    • B为观测概率矩阵
    • \(\pi\) 为初始状态概率向量
  • HMM对

假设

  • 观测序列之间独立
  • 当前状态仅仅依赖于上一个状态

问题

  • 概率计算问题: 给定模型 \(\lambda = (A, B, \pi)\) 和观测序列 \(O=(o_{1}, o_{2},,,o_{n})\),计算在给定模型下观测序列出现的概率 \(P(O|\lambda)\)
  • 学习问题: 已知观测序列 \(O=(o_{1}, o_{2},,,o_{n})\),估计模型参数 \(\lambda = (A, B, \pi)\),使得在该模型下观测序列出现的概率 \(P(O|\lambda)\) 最大.(极大似然法,EM算法)
  • 预测问题(解码问题): 给定模型 \(\lambda = (A, B, \pi)\) 和观测序列 \(O=(o_{1}, o_{2},,,o_{n})\),求状态序列 \(I=(i_{1}, i_{2},,,i_{n})\),使得 \(P(I|O;\lambda)\) 最大,(维特比算法)

序列标注问题

  • 序列标注问题是已知观测序列 \(O=(o_{1}, o_{2},,,o_{n})\),求状态序列 \(I=(i_{1}, i_{2},,,i_{n})\),使得 \(P(I|O)\) 最大
  • 实际上序列标注问题包括学习问题和预测问题两个问题:
    • 学习问题: 根据观测序列确定模型参数 \(\lambda = (A, B, \pi)\),极大似然法或EM算法(EM算法会同时估计得到最优状态序列(隐变量))
    • 预测问题: 根据模型参数和观测序列确定最优状态序列 \(I=(i_{1}, i_{2},,,i_{n})\),维特比算法

优点

  • 算法成熟
  • 效率高, 模型简单, 容易训练

缺点

  • 序列标注问题中,当前状态(标注)往往不仅仅和前一个状态相关,还可能和观察序列相关(这里指的是整个序列)
  • 也就是说每个状态可能还与整个观察序列的(除了当前观察值以外的)其他观察值(观察序列上下文)相关

MEMM

  • 判别式模型
  • 有向图模型,贝叶斯网络

假设

  • 当前状态仅依赖于上一状态和当前观测值(或所有观测值)
  • (问题: 为什么有些书上画出的图是当前状态依赖上一状态和所有观测值?,这里应该是当前观测值和所有观测值两种情况都是MEMM,<<百面>>画的是所有观测值的情况)

问题

  • MEMM似乎只用于序列标注,也就是在已知观测序列的情况下,寻找最优的状态序列
  • 有其他应用的话再添加

序列标注问题

  • 用于序列标注时,一般也包括两个问题: 学习问题和预测问题
    • 学习问题: 根据观测序列确定模型参数(每条边的(概率)值和初始状态?)
    • 预测问题: 根据模型和观测序列确定维特比算法

优点

  • 解决了观测独立性问题(观测独立性是只当前观测序列只与当前状态相关)[问题: 在MEMM中并不关心观测序列由谁影响,而是关心观测序列如何影响了状态序列]

缺点

  • 标签偏置(labeling bias)问题
    • MEMM中概率最大路径往往容易出现在转移少的状态中
    • MEMM归一化在加和函数 \(\sum\) 计算内部,而CRF的归一化在加和函数 \(\sum\) 的外部,这使得MEMM只会关注加和函数[原始建模问题概率值 \((y_{1…n}|x_{1…n})\) ]的局部特征,而不是的整体特征,所以MEMM存在偏置问题
  • 比HMM复杂

CRF

  • 判别式模型
  • 无向图模型,马尔可夫网络

假设

  • 当前状态仅依赖于上一状态和当前观测值(或所有观测值)
  • (问题: 为什么有些书上画出的图是当前状态依赖上一状态和所有观测值?,这里应该是当前观测值和所有观测值两种情况都是线性CRFs,<<百面>>画的是所有观测值的情况)
  • 与MEMM的区别就是无向图模型与有向图模型的区别

问题

序列标注问题

优点

  • 模型复杂,能建模更多可能的特征
  • 全局归一化(这里与MEMM的区别是,MEMM归一化在加和函数[原始建模问题概率值 \((y_{1…n}|x_{1…n})\) ] \(\sum\) 计算内部,而CRF的归一化在加和函数[原始建模问题概率值 \((y_{1…n}|x_{1…n})\) ] \(\sum\) 的外部)

缺点

  • 模型复杂,速度慢

ML——MCMC采样

本文介绍MCMC采样法和他的两个常用方法:MH(Metropolis-Hastings)采样法和Gibbs采样法
马尔可夫蒙特卡罗(Markov Chain Monte Carlo, MCMC)采样法

  • 对于高维空间中的随机向量,拒绝采样和重要性采样经常难以找到合适的参考分布,容易导致采样效率低下(样本的接受概率太小或者重要性权重太低),此时可以考虑马尔可夫蒙特卡罗采样法(MCMC)
  • MCMC中常见的有两种,MH(Metropolis-Hastings)采样法和Gibbs采样法

MCMC概述

  • 马尔可夫蒙特卡罗(Markov Chain Monte Carlo, MCMC)采样法可分为两个部分(两个MC)描述

蒙特卡罗法

  • 蒙特卡罗法(Monte Carlo)是指: 基于采样的数值型近似求解方法

马尔可夫链

又称离散时间马尔可夫链(discrete-time Markov chain,缩写为DTMC),或者马氏链

  • 马尔可夫链(Markov Chain)是指: 状态空间中经过从一个状态到另一个状态的转换的随机过程, 该随机过程满足马尔可夫性
  • 马尔可夫性(Markov property)是指: 当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程即具有马尔可夫性质。具有马尔可夫性质的过程通常称之为马尔可夫过程
    • 马尔可夫性的简单理解: “无记忆性”: 下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关

MCMC基本思想

  • 针对采样的目标分布,构造一个马尔可夫链 ,使得该马尔可夫链的平稳分布就是目标分布
  • 从任何一个初始状态出发,沿着马尔可夫链进行状态转移,直到马尔可夫链收敛(到达平稳状态)
  • 继续在马尔可夫链上进行状态转移,收敛后继续采样得到的样本就是原始目标分布的样本
    • burn-in处理 : 现实应用中,我们需要丢弃收敛前的样本,只保留收敛后的样本
    • burn-in 原意为”老化,定型”之意,在这里表示我们只取后面马氏链定型(收敛)后采样得到的样本
    • 假设采样到收敛用了n次采样,那么服从原始分布的k个样本为 \((x^{n+1}, x^{n+2},,,, x^{n+k})\) 有时候为了得到近似独立的样本,可以间隔每r次再取出其中一个样本 \((x^{n+r}, x^{n+2r},,,, x^{n+kr})\)
    • 真正独立同分布的k个样本可用多条k条不同的收敛后的马氏链得到,不同马氏链采样得到的样本是独立同分布的
  • 核心: 马尔可夫链的构造 ,也就是确定马尔可夫链的状态转移概率

常见的MCMC方法

MH(Metropolis-Hastings)采样法

  • 对于原始目标分布 \(p(x)\)
  • 选择一个参考条件分布 \(q(x^{\star}|x)\),定义接受概率 \(A(x,x^{\star})\):
    • (注意这里是参考条件分布,因为是马尔可夫链,所以每个状态都由上一个状态转移而来,需要定义的参考分布应该是条件分布,不是一般拒绝采样中的普通参考分布)
      $$
      A(x,x^{\star}) = min\left ( 1, \frac{p(x^{\star})q(x|x^{\star})}{p(x)q(x^{\star}|x)} \right )
      $$
  • MH采样法构建满足平稳分布就是目标分布 \(p(x)\) 的秘诀就是让每次采样时,当前状态以一定概率停留在上一状态
    • 与拒绝采样对应: 接受意味着跳转到下一状态,拒绝意味着停留在当前状态
采样过程
  • 随机选取初始样本x^{0}
  • for t = 1,2,3,…:
    • 参考条件分布采样 \(x^{\star} \sim q(x^{star}|x^{t-1})\)
    • 均匀分布采样 \(u \sim U(0,1)\)
    • 判断是否接受: 如果 \(u < A(x^{t-1}, x^{\star})\),则接受,令: \(x^{t} = x^{\star}\),否则拒绝,令: \(x^{t}=x^{t-1}\)
  • burn-in处理 : 丢弃采样到平稳分布前的样本, 只保留平稳分布后的样本即为服从原始分布 \(p(x)\) 的样本
    • 假设采样到收敛用了n次采样,那么服从原始分布的k个样本为 \((x^{n+1}, x^{n+2},,,, x^{n+k})\) 有时候为了得到近似独立的样本,可以间隔每r次再取出其中一个样本 \((x^{n+r}, x^{n+2r},,,, x^{n+kr})\)
    • 真正独立同分布的k个样本可用多条k条不同的收敛后的马氏链得到,不同马氏链采样得到的样本是独立同分布的
  • 采样次数一般来说是凭经验选择一个足够大的值,现实是现实可以使用一些参数变化量这类的指标来判断采样是否收敛,参考NLP——LLDA的Gibbs采样实现
与拒绝采样的区别
  • MH采样基于拒绝采样来逼近平稳分布
  • 拒绝采样中: 如果样本某一步被拒绝,那么该步不会产生新的样本,需要重新对当前步进行采样
  • MH中: 每一步都会产生一个样本,被拒绝后,就令当前样本和上一个样本相同即可
    • 因为这里是为了使得每个状态的转出概率等于转入概率,所以拒绝就意味着当前采样步骤状态不跳转
    • MH采样法最核心的思想就是一定概率停留在上一个状态来实现对马尔可夫链的构建的
MH采样法正确性证明
  • MH采样法构造的马尔可夫链(状态转移概率矩阵)是正确的吗?

  • 细致平稳条件 , 如果非周期的马氏链的状态转移矩阵P和分布 \(\pi(x)\) 满足下面的式子对任意的 \(i,j\) 都成立:
    $$\pi(x^{i})P_{ij} = \pi(x^{j})P_{ji}$$

    • 上式为细致平稳分布条件(detailed balance condition)
    • 其中 \(\pi(x)\) 为马氏链的平稳分布,在这里等于我们的原始分布 \(p(x)\)
  • 证明 \(\pi(x)\) 为马氏链的平稳分布:
    $$
    \begin{align}
    \sum_{i=1}^{\infty}\pi(x^{i})P_{ij} = \sum_{i=1}^{\infty}\pi(x^{j})P_{ji} = \pi(x^{j})\sum_{i=1}^{\infty}P_{ji} = \pi(x^{j}) \\
    => \pi(x) P = \pi(x)
    \end{align}
    $$

    • 由于 \(\pi(x)\) 为方程 \(\pi(x) P = \pi(x)\) 的解,所以 \(\pi(x)\) 是状态转移矩阵P对应的马氏链的平稳分布
  • 在MH采样法中

    • 参考条件分布函数本对应状态转移矩阵的一个元素, \(q(x^{i}|x^{j}) = P_{ij}\) (注意: 实际上一般不相等)
    • 但是很难构造这样方便采样的函数,于是我们使用一个接受率来修正 \(q(x^{i}|x^{j})\alpha(x^{j}, x^{i}) = P_{ij}\)
      • \(\alpha(x^{j}, x^{i})\) 表示从 \(x^{j}\) 跳转到 \(x^{i}\) 的接受率, 其值可如下求得:
        $$
        \begin{align}
        \pi(x^{i}) P_{ij} &= \pi(x^{j})P_{ji} \\
        \pi(x^{i}) q(x^{j}|x^{i})\alpha(x^{i}, x^{j}) &= \pi(x^{j})q(x^{i}|x^{j})\alpha(x^{j}, x^{i})
        \end{align}
        $$
    • 显然,直接取:
      $$
      \begin{align}
      \alpha(x^{i}, x^{j}) &= \pi(x^{j})q(x^{i}|x^{j})\\
      \alpha(x^{j}, x^{i}) &= \pi(x^{i})q(x^{j}|x^{i})\\
      \end{align}
      $$
    • 即可
  • 但是由于 \(\alpha(x^{j}, x^{i})\) 一般来说太小,所以我们考虑将 \(\alpha(x^{j}, x^{i})\) 和 \(\alpha(x^{i}, x^{j})\) 同时扩大M倍,使得其中大的那个为1,即可得到最大的接受率

    • 使用原始接受率的方法称为一般MCMC方法
    • 使用扩大M被接受率的方法称为MCMC的改进方法: MH方法
  • 改进后的接受率为从 \(x^{i}\) 跳转到 \(x^{j}\) 的接受率:
    $$
    \begin{align}
    A(x^{i}, x^{j}) = min\left ( 1, \frac{p(x^{j})q(x^{i}|x^{j})}{p(x^{i})q(x^{j}|x^{i})} \right )
    \end{align}
    $$

    • 理解:
      $$
      \begin{align}
      p(x^{j})q(x^{i}|x^{j}) &> p(x^{i})q(x^{j}|x^{i})时: A(x^{i}, x^{j}) = 1 \\
      p(x^{j})q(x^{i}|x^{j}) &< p(x^{i})q(x^{j}|x^{i})时: A(x^{i}, x^{j}) = \frac{p(x^{j})q(x^{i}|x^{j})}{p(x^{i})q(x^{j}|x^{i})}
      \end{align}
      $$
  • 在MH中表现为从 \(x\) 跳转到 \(x^{\star}\) 的接受率:
    $$
    A(x,x^{\star}) = min\left ( 1, \frac{p(x^{\star})q(x|x^{\star})}{p(x)q(x^{\star}|x)} \right )
    $$

Gibbs采样法

Gibbs采样是MH采样法的一个特例,每次只更新样本的一个维度

  • 针对维度很高的多维向量,同时采样多个维度难度较高,且接受率很小
  • 使用Gibbs采样每次采样一个维度可以解决这个问题
准备
  • 求得已知其他维度下,每一维度的条件概率 \(p(x_{i}|x_{1},,,x_{i-1}, x_{i+1},,,x_{d})\)
采样过程
  • 随机选择初始状态 \(x^{0} = (x_{1}^{0}, x_{2}^{0}, x_{3}^{0},,,, x_{d}^{0})\)

  • for t = 1,2,3,…:

    • 基于前一次产生的样本: \(x^{t-1} = (x_{1}^{t-1}, x_{2}^{t-1}, x_{3}^{t-1},,,, x_{d}^{t-1})\),依次采样和更新每个维度的值,即依次按照:
      • \(x_{1}^{t} \sim p(x_{1}|x_{2}^{t-1},,,x_{d}^{t-1})\)
      • \(x_{2}^{t} \sim p(x_{2}|x_{1}^{t}, x_{3}^{t-1},,,x_{d}^{t-1})\)
      • \(x_{i}^{t} \sim p(x_{i}|x_{1}^{t},,,x_{i-1}^{t}, x_{i+1}^{t-1},,,x_{d}^{t-1})\)
      • \(x_{d}^{t} \sim p(x_{d}|x_{1}^{t}, x_{2}^{t},,,x_{d-1}^{t})\)
    • 得到新的一个样本: \(x^{t} = (x_{1}^{t}, x_{2}^{t}, x_{3}^{t},,,, x_{d}^{t})\)
  • burn-in处理 : 丢弃采样到平稳分布前的样本, 只保留平稳分布后的样本即为服从原始分布 \(p(x)\) 的样本

    • 假设采样到收敛用了n次采样,那么服从原始分布的k个样本为 \((x^{n+1}, x^{n+2},,,, x^{n+k})\),有时候为了得到近似独立的样本,可以间隔每r次再取出其中一个样本 \((x^{n+r}, x^{n+2r},,,, x^{n+kr})\)
    • 真正独立同分布的k个样本可用多条k条不同的收敛后的马氏链得到,不同马氏链采样得到的样本是独立同分布的
    • 注意: 采样完成部分维度生成的中间样本如 \((x_{1}^{t},,,x_{i-1}^{t}, x_{i}^{t}, x_{i+1}^{t-1},,,x_{d}^{t-1})\) 是不能作为最终样本的,因为他们之间(同一轮次的多个中间样本)相互依赖性太强,不具有独立同分布的(虽然完全采样完成的也不能视为具有独立同分布,但是可近似的认为是独立同分布的)
  • 采样次数一般来说是凭经验选择一个足够大的值,现实是现实可以使用一些参数变化量这类的指标来判断采样是否收敛,参考NLP——LLDA的Gibbs采样实现

ML——最小二乘与梯度下降

本文持续更新,主要总结各种与最小二乘和梯度下降相关的优化方法


最小二乘与最小均方误差的区别

最小二乘法

  • 二乘也就是平方的意思,故又称最小平方法(英文全称Least Square Method, LSM或者LS)
  • 是一种数学优化技术
  • 通过最小化误差的平方和寻找数据的最佳函数匹配
    • 为什么最小化误差平方和可以得到最佳函数匹配呢?
      • 可以证明,只要误差是服从正太分布的,最小化误差平法和就能匹配到最佳函数(这个高斯证明过)
      • 可以证明,误差的确是服从正太分布的,细节可以参考为什么正太分布如此常见
      • 中心极限定理说了,在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布
        • 适当的条件包括三个要素:
          • 独立
          • 随机
          • 相加
        • 误差满足上面三个要素
      • 综上所述,最小二乘法(最小化误差平法和)可以的到最佳函数匹配
  • 最小二乘法通过求导,并令导数为0,直接求得误差平方和(损失函数的一种)取最小值时的参数
  • 公式:
    $$\theta^{\star} = \mathop{\arg\min}_\theta L(x) = \sum_i^{m}(y_i-f(x_i;\theta))^2$$

加权最小二乘法

  • 加权最小二乘中每个样本的误差前面会乘上相应的权重,然后再求和
    $$\theta^{\star} = \mathop{\arg\min}_\theta L(x) = \sum_i^{m}w_i(y_i-f(x_i;\theta))^2$$

最小化均方误差

  • 最小二乘(Least Square, LS)问题是这样一类优化问题,目标函数是若干项的平方和
  • LS的一种更复杂也更灵活的变形: 加权最小二乘根据实际问题考虑每个求和项的重要程度,即为每一项加权值w
  • 均方误(Mean Square Error, MSE)是一种加权最小二乘,它的权值是对应项的概率
    $$\theta^{\star} = \mathop{\arg\min}_\theta L(x) = \sum_i^{m}\frac{1}{m}(y_i-f(x_i;\theta))^2 = \frac{1}{m}\sum_i^{m}(y_i-f(x_i;\theta))^2$$

周志华的解释

  • 基于均方误差最小化来进行模型求解的方法称为最小二乘法 ——《机器学习》(周志华著)
    • 理解:周志华的意思应该是把均方误差与误差平方和视为一个东西,也就是说各项的权重相同,所以感觉这里定义其实是比较模糊的,不用太在意最小二乘法与最小化均方误差法的定义

总结

  • 三者可以理解为相同的表达式,其中
    • 最小二乘法(LSM), 权重为1, 每个样本相同
    • 最小均方误差(MSE), 权重为 \(\frac{1}{m}\),每个样本相同
    • 加权最小二乘 , 权重为自定义的值, 每个样本可以不同
  • 最小均方误差(MSE) 是一种 加权最小二乘 , 他的权重为样本的概率, 每个样本出现的概率相等, 就都乘以 \(\frac{1}{m}\) 即可

梯度下降与梯度上升

意义

为什么需要梯度下降或者梯度上升,而不是用直接对目标函数求导得到最优解?

几点说明
  • 对于凸函数而言:
    • 通过函数(损失函数等)对参数求导,令其导数为0,的确可以解得损失函数的最小(最大)值点对应的参数
  • 对于非凸函数而言:
    • 相同的方法可能只能得到极值点,而不是最小(最大)值点
    • 但此时梯度下降法也不能找到最优点
  • 无论是梯度下降函数直接推到求解目标函数最优解,我们都需要求目标函数的导数,并且需要确保目标函数可导,不然是不能用这些方法的
几点原因
  • 有时候目标方程(令导数为0后得到的方程)很复杂,求导数为0的参数的解(根)很难
    • 包括时间和空间两方面可能面临困难
    • 比如大矩阵的乘法,大矩阵的逆等
    • 求某一点的梯度一般是比较容易的(只要求出导数后将对应点的数值带入即可)
      • 这里与求导数为0的解难度不一样,在求出函数导数后,求某一点的梯度仅仅需要带入该点的值,而求导数为0的解需要的是很难的解题过程,甚至可能找不到解
  • 有时候目标方程很奇怪,之前我们没见过,需要我们写新的代码教会计算机如何直接求解函数的根
    • 直接使用梯度下降的话是计算机可以理解的
    • 梯度下降法不用重新写代码来教给计算机

梯度下降

  • 梯度下降是最小化目标函数
    • \(\theta=\theta-\lambda\frac{\partial L(\theta)}{\partial\theta}\)
    • \(\lambda\) 为步长
    • 每轮迭代沿着负梯度方向移动

梯度上升

  • 梯度上升是最大化目标函数
    • \(\theta=\theta+\lambda\frac{\partial L(\theta)}{\partial\theta}\)
    • \(\lambda\) 为步长
    • 每轮迭代验证正梯度方向移动

梯度下降(上升)法与最小二乘法

最小二乘法

  • 最小二乘法是一种通过最小化误差的平方和寻找数据的最佳函数匹配的数学优化技术
  • 与最小二乘法并列的是最小话误差的三次方或者四次方等方法
    • 这里的三次方和和四次方和只是为了和二次方和作对比,实践中很少遇到这样的优化技术

梯度下降(上升)法

  • 梯度下降(上升)法的目标是通过迭代(每次朝着最优方向,即梯度下降最快方向前进)不断逼近能使得目标函数最小(最大)时的最优参数值的方法
  • 梯度下降(上升)是一种迭代法,也就是通过更新参数不停的逼近最优点,可以用来解决各种各样的问题(包括最小二乘问题,最小化误差三次方和等)
    • 这里最小二乘问题可以理解为用最小二乘法(最小化误差平法和)来寻找最佳函数的问题

总结

  • 最小二乘法与梯度下降(上升)法不在一个维度,不能对比
最小二乘法
  • 目标:找到(或者逼近)最优函数,使得该函数能最拟合已知数据
  • 方法:最小化误差平方和
梯度下降(上升)法
  • 目标:找到(或者逼近)最优参数,使得该参数能最小化(最大化)目标函数
  • 方法:是通过沿梯度方向迭代更新参数

ML——求解无约束最优化问题的优化方法

本文介绍求解无约束最优化问题的优化方法:梯度下降法(Gradient Descent)、牛顿法(Newton’s Method)和拟牛顿法(Quasi-Newton Methods)

  • 共轭梯度法也是一种无约束的参数优化方法,详情见ML——共轭梯度法和最速下降法

无约束参数优化方法概览

目标

$$
\begin{align}
\theta^{\star} = \mathop{\arg\max}_{\theta}L(\theta)
\end{align}
$$

直接法

使用直接法需要满足两个条件
  • \(L(\theta)\) 为关于 \(\theta\) 的凸函数
  • \(\nabla L(\theta)=0\) 有解析解(又名闭式解,指的是有限个常见运算的组合给出的形式)
求解
  • 目标函数直接对参数求导后令目标函数导数为0: $$\nabla L(\theta)=0$$

迭代法

  • 包括梯度下降法和牛顿法,牛顿法又可以拓展为拟牛顿法

梯度下降法

更详细的说明参考ML——最小二乘与梯度下降中的介绍

  • 梯度下降法通过每次迭代沿着梯度下降最快的方向(梯度的负方向)前进一个 \(\Delta \theta\) 长度
  • \(\Delta \theta\) 为步长 \(\alpha\) (参数)乘以梯度的模(变化率)的方法,实现对极大(小)值的一步步逼近

牛顿法

数学中的牛顿法

  • 牛顿法的本质是求函数值 \(f(x)\) 为零(\(f(x)=0\))时参数(自变量 \(x\))的值
  • 本质上说,牛顿法是用逼近的方法来解方程的一种方法
算法流程
  • 对于确定的方程 \(f(x)=0\),我们的目标是求解自变量 \(x\) 的值
  • 1.初始值定义为 \(x=x_{0}\)
  • 2.牛顿法通过迭代每次从当前点 \((x=x_k,y=f(x_k))\) 沿着斜率 \(f’(x) = \frac{\partial f(x)}{\partial x}\) 出发做一条直线,并求出其表达式 \(y-f(x_k) = (x-x_k)\cdot f’(x)\)
  • 3.求出该直线与x轴的交点 \(x_{k+1}=x_{k}-\frac{f(x_{k})}{f’(x_{k})}\)
  • 4.设置下一次迭代的点为 \(x=x_{k+1}\)
  • 5.重复2到4,直到斜率小于某个阈值 \(\epsilon\) 时停止迭代
  • 6.迭代停止时 \(x=x_{k+1}\) 就是方程的近似解
  • 迭代过程图示化如下:
    迭代公式推导
  • 上述迭代流程中迭代公式 \(x_{k+1}=x_{k}-\frac{f(x_{k})}{f{}’(x_{k})}\) 的推导如下:

最优化方法中的牛顿法

  • 最优化方法的目标是学习函数 \(f(\theta)\) 的极小/大值(若 \(f(\theta)\) 是凸函数,则为最小/大值)
  • 可以证明,目标函数(凸函数)取最优点(最大/小值)时,目标函数的导数 \(\frac{\partial f(\theta)}{\partial \theta}=0, 其中\theta=\theta^{\star}\)
  • 基于这个事实,在知道目标函数的导数 \(f{}’(\theta)=\frac{\partial f(\theta)}{\partial \theta}\) 的表达式后,我们可以列出方程 \(f{}’(\theta)=0\)
    • 此时方程的解 \(\theta^{\star}\) 就是原始目标函数的最优解
  • 解上述方程 \(\frac{\partial f(\theta)}{\partial \theta}=0\) 时我们即可使用数学中的牛顿法
算法流程
  • 具体算法步骤与数学中的算法流程小节一致,不同的地方在于此时迭代公式变为 \(\theta_{k+1}=\theta_{k}-\frac{f{}’(\theta_{k})}{f{}’{}’(\theta_{k})}\)
  • 在具体的实现中,我们一般会直接推导出每一步的迭代公式,按照公式迭代即可得到最优解

迭代公式推导

  • 根据上述事实,此时我们的目标函数为 \(f(\theta)\),目标方程方程为 \(f{}’(\theta)=0\)
  • 此时迭代公式为$$\theta_{k+1}=\theta_{k}-\frac{f{}’(\theta_{k})}{f{}’{}’(\theta_{k})}$$
  • 当参数数量不止一个时, \(\theta\) 表示一个向量,此时迭代公式为$$\theta_{k+1}=\theta_{k}-H_{k}^{-1}\nabla_{\theta}f(\theta_{k})$$
    • 其中 \(H_{k}^{-1}\) 为海森矩阵 \(H_{k}\) 的逆, \(H_{k}=H(\theta_{k})\)
    • \(H_{k}^{-1}\) 和 \(\frac{1}{f{}’{}’(\theta_{k})}\) 分别是多维和一维参数时目标函数的二阶导
    • 海森矩阵是目标函数对参数的二阶导数, \(H(\theta)=\left [ \frac{\partial^{2}f}{\partial \theta^{i}\partial \theta^{j}} \right ]_{n\times n}\)
  • 推导步骤和上面的数学中的迭代公式推导一致

牛顿法与梯度下降法的一种简单推导方法

  • 用泰勒展开来推导,详情待更新(参考<<百面>>P149)

迭代法的思想

  • 最小化目标函数
    $$
    \begin{align}
    \delta_{t} &= \mathop{\arg\min}_{\delta}L(\theta_{t} + \delta) \\
    \theta_{t+1} &= \theta_{t} + \delta_{t} \\
    \end{align}
    $$
  • 注意,如果这里是max最大化目标函数的话,对应的是梯度上升法,此时后面推导的步骤中加入L2正则项时为了使得 \(\left | \delta \right |_{2}^{2}\) 的值最小,正则项的权重应该为负数,这样整体目标函数最大时正则项才能取得最小值,最终推导得到的结果也将变成梯度上升的表达式,(\(\alpha > 0\) 时对应的参数迭代公式变成加好而不是减号)
  • 但是实际上最大化目标函数可以价格负号转变为最小化目标函数,所以其实掌握最小化目标函数的优化方法即可

一阶法——梯度下降法

  • 对目标函数在 \(L(\theta_{t} + \delta)\) 处做一阶泰勒展开
    $$
    \begin{align}
    L(\theta_{t} + \delta) = L(\theta_{t}) + \nabla L(\theta_{t})^{T}\delta \\
    \end{align}
    $$
  • 由于上式在 \(\delta\) 非常小时才成立,所以我们一般加上加入L2正则项(L2正则项可以保证 \(\delta\) 的值不会太大),为了保证 \(\left | \delta \right |_{2}^{2}\) 的值最小,要求 \(\alpha > 0\),才能保证目标函数最小时正则项也对应最小 (梯度上升法中要求 \(\alpha < 0\) 或者需要在正则项前面的系数加上负号,才能保证目标函数最大时正则项最小)
    $$
    \begin{align}
    L(\theta_{t} + \delta) = L(\theta_{t}) + \nabla L(\theta_{t})^{T}\delta + \frac{1}{2\alpha}\left | \delta \right |_{2}^{2} \\
    \end{align}
    $$
  • 直接对上式求导=0得
    $$
    \begin{align}
    \delta_{t} &= \mathop{\arg\min}_{\delta}L(\theta_{t} + \delta) \\
    &= \mathop{\arg\min}_{\delta}(L(\theta_{t}) + \nabla L(\theta_{t})^{T}\delta + \frac{1}{2\alpha}\left | \delta \right |_{2}^{2}) \\
    &= -\alpha \nabla L(\theta_{t})
    \end{align}
    $$
  • 于是梯度下降法的更新表达式为
    $$
    \begin{align}
    \theta_{t+1} &= \theta_{t} + \delta_{t} \\
    &= \theta_{t} - \alpha \nabla L(\theta_{t})
    \end{align}
    $$

二阶法——牛顿迭代法

  • 对目标函数在 \(L(\theta_{t} + \delta)\) 处做二阶泰勒展开
    $$
    \begin{align}
    L(\theta_{t} + \delta) = L(\theta_{t}) + \nabla L(\theta_{t})^{T}\delta + \frac{1}{2}\delta^{T}\nabla^{2}L(\theta_{t})\delta \\
    \end{align}
    $$
  • 直接对上式求导=0得
    $$
    \begin{align}
    \delta_{t} &= \mathop{\arg\min}_{\delta}L(\theta_{t} + \delta) \\
    &= \mathop{\arg\min}_{\delta}(L(\theta_{t}) + \nabla L(\theta_{t})^{T}\delta + \frac{1}{2}\delta^{T}\nabla^{2}L(\theta_{t})\delta) \\
    &= -\nabla^{2} L(\theta_{t})^{-1} \nabla L(\theta_{t}) \\
    &= -H(\theta_{t})^{-1}\nabla L(\theta_{t}) \\
    \end{align}
    $$
  • 于是梯度下降法的更新表达式为
    $$
    \begin{align}
    \theta_{t+1} &= \theta_{t} + \delta_{t} \\
    &= \theta_{t} - \nabla^{2} L(\theta_{t})^{-1} \nabla L(\theta_{t})
    \end{align}
    $$

比较梯度下降法与牛顿法

  • 一般来说,牛顿法收敛速度快
    • 一种解释是梯度下降法用一次平面去拟合局部区域牛顿法是用二次曲面去拟合局部区域 ,所以后者能得到更好的拟合效果,迭代的方向也就越精确
    • 另一种解释是梯度下降只能看到当前目标函数的下降方向,牛顿法可以看到当前当前目标函数的下降方向,同时还能看到一阶导数的变化趋势,所以拟合更快
  • 梯度下降法中有个超参数 \(\alpha\)
    • 牛顿法中海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果(这里的步长与梯度下降中的 \(\alpha\) 步长不一样,梯度下降中的 \(\alpha\) 是超参数,表示每次向着负梯度移动的长度,而牛顿法中没有超参数)
    • 为了防止震荡,这个步长 \(\alpha\) 也可以随着迭代次数不断减小
  • 梯度下降法可能造成震荡
    • 越接近最优值时,步长 \(\alpha\) 应该不断减小,否则会在最优值附近来回震荡
    • <<统计学习方法>>第一版附录A中, \(\alpha\) 是不断变化的,能保证不会造成震荡
  • 牛顿法在多变量时需要求海森矩阵H的逆,比较复杂,时间和空间上有要求,不如梯度下降法来的容易

拟牛顿法

  • 解决牛顿法求取海森矩阵 \(H\) 的逆 \(H^{-1}\) 时比较耗时间的难题
  • 用一个近似矩阵 \(B\) 代替海森矩阵 \(H\) 的逆 \(H^{-1}\)
  • 不同算法近似矩阵 \(B\) 的计算有差异
  • 常见的拟牛顿法:BFGS,L-BFGS和OWL-QN等
    • <<统计学习方法>>中讲解了三个拟牛顿算法: DFP,BFGS和Broyden类算法

总结

归纳自<<统计学习方法>>

相同迭代公式

  • 目标函数为 \(f(\theta)\),最优化方法的终极目标是求 \(f(\theta)\) 的最大值点(或极大值点)
  • 目标函数的一阶导数
    • 参数一维时为: \(f{}’(\theta)=\frac{\partial f(\theta)}{\partial \theta}\)
    • 参数多维时为: \(\nabla f(\theta)\)
  • 目标函数的二阶导数
    • 参数一维时为: \(f{}’{}’(\theta)\)
    • 参数多维时为:(海森矩阵) \(H(\theta)=\left [ \frac{\partial^{2}f}{\partial \theta^{i}\partial \theta^{j}} \right ]_{n\times n}\)
  • 梯度下降法,牛顿法和拟牛顿法的迭代参数均可表示为下面的迭代形式:
    $$\theta_{k+1}=\theta_{k}+\lambda_{k}p_{k}$$
  • 均通过一阶导数 \(\left | \nabla f(\theta) \right |<\epsilon\) 为收敛判断条件
    • 在<<统计学习方法>>中,梯度下降法还可以通过 \(\left | \theta_{k+1}-\theta_{k+} \right |<\epsilon\) 或 \(\left | f(\theta_{k+1})-f(\theta_{k+}) \right |<\epsilon\) 来判断收敛

梯度下降法

  • \(p_{k}=\nabla f(x)\)
  • \(\lambda_{k}\) 是步长,满足
    $$f(\theta_{k}+\lambda_{k}p_{k})=\min_{\lambda \geq 0}f(\theta_{k}+\lambda p_{k})$$

牛顿法

  • \(p_{k}=-H_{k}^{-1}\nabla f(\theta)\)
  • \(\lambda_{k}=1\) 是固定长度的,详情见数学中的牛顿法的推导,每次迭代到斜率与横轴的交点
    $$\lambda_{k}=1$$

拟牛顿法

  • 核心思想是找一个容易计算的近似矩阵(可以迭代计算,而不是每次重新计算逆矩阵的矩阵)替代原始牛顿法中的海森矩阵 \(H\) (\(B\))或者海森矩阵的逆矩阵 \(H^{-1}\) (\(G\))
DFP算法
  • 使用 \(G_{k}\) 逼近海森矩阵的逆矩阵 \(H^{-1}\)
  • \(p_{k}=-G_{k}\nabla f(\theta)\)
    • 关于 \(G_{k}\) 的计算:
      • 初始化 \(G(0)\) 为正定对称矩阵
      • \(G_{k+1}=G_{k}+\frac{\delta_{k}\delta_{k}^{T}}{\delta_{k}^{T}y_{k}}-\frac{G_{k}y_{k}y_{k}^{T}G_{k}}{y_{k}^{T}G_{k}y_{k}}\)
        • \(\delta_{k}=\theta_{k+1}-\theta_{k}\)
        • \(y_{k}=\nabla f(\theta_{k+1})-\nabla f(\theta_{k})\)
  • \(\lambda_{k}\) 是步长,满足
    $$f(\theta_{k}+\lambda_{k}p_{k})=\min_{\lambda \geq 0}f(\theta_{k}+\lambda p_{k})$$
BFGS算法
  • 使用 \(B_{k}\) 逼近海森矩阵 \(H_{k}\)
  • \(p_{k}=-B_{k}^{-1}\nabla f(\theta)\)
    • 关于 \(B_{k}\) 的计算:
      • 初始化 \(B(0)\) 为正定对称矩阵
      • \(B_{k+1}=B_{k}+\frac{y_{k}y_{k}^{T}}{y_{k}^{T}\delta_{k}}-\frac{B_{k}\delta_{k}\delta_{k}^{T}B_{k}}{\delta_{k}^{T}B_{k}\delta_{k}}\)
        • \(\delta_{k}=\theta_{k+1}-\theta_{k}\)
        • \(y_{k}=\nabla f(\theta_{k+1})-\nabla f(\theta_{k})\)
  • \(\lambda_{k}\) 是步长,满足
    $$f(\theta_{k}+\lambda_{k}p_{k})=\min_{\lambda \geq 0}f(\theta_{k}+\lambda p_{k})$$
Broyden类算法(Broyden’s algorithm)
  • 使用 \(G_{k}\) 逼近海森矩阵的逆矩阵 \(H^{-1}\)
  • 在BFGS中取 \(G^{BFGS}=B^{-1}\)
  • 利用DFP和BFGS二者的线性组合选择合适的海森矩阵的逆矩阵 \(H^{-1}\) 的替代矩阵
    $$G_{k+1}=\alpha G^{DFP}+(1-\alpha)G^{BFGS}$$
  • 可以证明 \(G\) 此时是正定的
  • \(0\leq \alpha \leq 1\)
  • 这样得到的一类拟牛顿法都称为Broyden类算法

ML——泛化特征与非泛化特征


泛化特征与非泛化特征

  • 泛化特征(Generalized Features):
    • 泛化特征是指那些能够捕捉数据内在模式或规律性的特征,这些特征具有一定的普遍性,可以适用于不同但相关的场景
    • 一个模型如果具备良好的泛化能力,意味着它能在未见过的数据上表现良好,即不仅能准确预测训练集中的数据,还能对新数据做出合理的预测
    • 在创建泛化特征时,通常会考虑去除噪声、避免过拟合,并确保特征的选择基于数据的统计显著性和稳定性
  • 非泛化特征(Non-Generalized Features 或 Specific Features):
    • 非泛化特征是指那些与特定数据样本紧密相关,但在其他类似的数据样本中可能不具备相同意义或重要性的特征
    • 这些特征可能会导致模型过拟合,即模型在训练数据上的表现非常好,但对于未曾见过的新数据则可能无法给出准确的预测
    • 非泛化特征的例子包括某些特定于训练集样本的异常值或者非常具体且不常见的属性

一些说明

  • 统计型特征一般可以看做是泛化特征
  • User-ID或者Item-ID这种特征一般可以看做是非泛化特征
  • 在数据量特别大的时候,其实User-ID和Item-ID类特征是可以放进模型的,只要有充足的数据来训练他们的Embedding就可以;但是一般的小任务,小数据就不适合加这类特征了

ML——训练集-验证集-测试集

训练集(training set),验证集(validation set)和测试集(test set)


统计学习方法:

  • 训练集: 用于模型训练
  • 验证集: 用于模型选择
  • 测试集: 用于模型评估(原文:用于最终对学习方法的评估)

个人理解:

  • 训练集: 用于模型拟合的数据样本
  • 验证集: 用于模型的选择
    • 不参与训练过程
    • 可用于超参数的调整
    • 可用于判断模型是否过拟合(用于决策何时停止训练过程)
    • 可多次使用
  • 测试集: 用于模型的评估
    • 不参与训练过程
    • 不可用于超参数的调整
    • 只可以使用一次

一些场景说明

做kaggle题目时

  • 不用测试集,因为数据集本来就少,测试集不能用于优化或者选择模型,只能用于评估
  • 此时测试集可以理解为kaggle题目中未知的部分数据
  • 此时从验证集中划分一部分验证集

写论文时

  • 需要训练集用于训练,验证集用于模型选择
  • 并且最终需要测试集用于评估模型和与其他人的模型对比

核心:验证集和测试集不能参与训练模型,测试集不能参与模型选择
模型训练时不能让模型看见验证集
在模型确定前都不能让模型看见测试集


关于K折交叉验证法

  • 统计学习方法中的描述: 交叉验证中每次划分为两部分,一部分用于训练模型,另一部分用于测试模型
  • 理解:上面的两部分,一部分为训练集,另一部分为验证集,在这里面没有测试集

关于网格搜索

  • 用来调超参数的一部分正好称为验证集
  • 除了验证集外,加入写论文做实验需要和其他模型作比较的话需要使用测试集(和验证集以及训练集都不相交)

关于数据划分的比重

  • 训练集:测试集 = 7:3
  • 训练集:验证集:测试集 = 6:2:2
  • 数据量非常多时(比如百万级别),验证集和测试集的比重可以适当缩小,因为验证集的主要目的是选择较好的模型,而测试集的目的是为了测试模型的效果,如果1万条数据足以验证模型的效果,则没必要非得给20万条数据

ML——贝叶斯优化

本文持续更新,主要主要介绍贝叶斯优化

  • 参考链接:
    • 一文详解贝叶斯优化(Bayesian Optimization)原理 - 下里巴程序员的文章 - 知乎
    • 贝叶斯优化/Bayesian Optimization - 代忠祥的文章 - 知乎

关于贝叶斯优化

  • 贝叶斯优化(Bayesian Optimization,简称BO)主要用于解决超参数优化问题,目标是找到一组使得目标函数最大或者最小的超参数
  • BO的最大优势是可以使用非常少的步骤找到一个还不错的超参数组合,而且不需要知道目标函数(模型)的梯度
  • BO使用的场景特点:
    • 需要优化的函数(模型)是非常复杂的
    • 需要优化的函数(模型)对指定的变量(一般指超参数)没有梯度信息(求不出梯度)
  • BO不适合使用的场景包括:
    • 离散问题,即参数是离散的,则不适合使用BO
    • 参数太多,即参数维度过高,此时不适合使用BO
  • 和BO的适用场景和进化算法(如CEM等)比较相似

贝叶斯优化的一般步骤

  • 贝叶斯优化(Bayesian Optimization)算法是一个序列决策过程(Sequential Decision-making Problem),其核心框架是SMBO (Sequential Model-Based Optimization),而贝叶斯优化狭义上特指代理模型为高斯过程回归模型的SMBO,SMBO的一般算法思路如下:
    • 第一步:初始化采样n组参数 \(\{x_1,x_2,…,x_n\}\)
    • 第二步:针对每组参数,观察目标函数(待优化模型)的值(这一步一般需要训练模型或者模拟环境仿真,是成本比较高的操作),将得到的结果组合生成数据集 \(D=\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}\)
    • 第三步:根据数据集D拟合(训练)一个代理模型(Surrogate Model),该代理模型的功能是通过输入 \(x_i\) 预测输出 \(y_i\)
    • 第四步:根据采集函数(Acquisition Function,简称AC Function),选择一个最优参数 \(x_i\)
    • 第五步:观察目标函数(待优化模型)在参数 \(x_i\) 下的输出值 \(y_i\),并将 \((x_i,y_i)\) 添加到数据集D中
    • 循环执行第三步到第五步,直到达到指定的迭代次数
    • 最终:输出数据集D中最优的参数 \(x^*\)

代理模型

  • 代理模型一般是非常容易计算的,或者有梯度的,给出任意的 \(x_i\) 能快速预估 \(y_i\) 的
  • 常见的代理模型可以是:高斯过程回归、随机森林等等。其中,贝叶斯优化狭义上特指代理模型为高斯过程回归模型的SMBO
  • 高斯过程回归可参考:
    • 如何通俗易懂地介绍 Gaussian Process? - 石溪的回答 - 知乎
    • 快速入门高斯过程(Gaussian process)回归预测 - 摸鱼大王二百五的文章 - 知乎

采集函数

  • 通常做法是设计一个采集函数A,对每个采样点x进行打分,分数越高的点越值得被采样
  • 一般来说,采集函数需要满足下面的要求:
    • 在已有的采样点处采集函数的值更小,因为这些点已经被探索过,再在这些点处计算函数值对解决问题没有什么用
    • 探索:在置信区间更宽(方差更大)的点处采集函数的值更大,因为这些点具有更大的不确定性,更值得探索
    • 利用:对最大(小)化问题,在函数均值更大(小)的点处采集函数的值更大,因为均值是对该点处函数值的估计值,这些点更可能在极值点附近
  • 常用的AC Function包括下面几种:
    • Probability of Improvement:
    • Expected Improvement:
    • Entropy Search:
    • Upper Confidence Bound:

ML——采样方法

本文介绍几种采样的方法


计算机能做什么样的采样

Uniform

  • 本质上来讲,计算机只能实现对均匀分布(Uniform Distribution)的采样

numpy.random模块功能介绍

numpy.random是用来实现随机数生成的库

  • 生成随机数random
  • 生成某个随机数的随机样本random_sample
  • 对序列做随机shuffle,choice等

numpy.random模块的采样

numpy.random模块下实现了很多常见分布的采样函数(他们本质上都是计算机通过多次均匀分布采样实现的)

单变量分布
  • beta:beta分布
  • binomial:二项分布
  • chisquare:卡方分布
  • exponential:指数分布
  • 还有更多…
多变量分布
  • dirichlet : Multivariate generalization of Beta distribution. 狄利克雷分布
  • multinomial: Multivariate generalization of the binomial distribution. 多项分布
  • multivariate_normal: Multivariate generalization of the normal distribution. 多变量正太(高斯)分布
标准分布
  • standard_cauchy: Standard Cauchy-Lorentz distribution.
  • standard_exponential: Standard exponential distribution.
  • standard_gamma: Standard Gamma distribution.
  • standard_normal: Standard normal distribution.
  • standard_t: Standard Student’s t-distribution.

复杂分布的采样方式

在实践中,往往有很多复杂的分布,复杂到我们无法直接对他进行采样
有些时候我们甚至不知道目标函数的分布函数

逆变换采样

Inverse Transform Sampling

  • 目标函数: \(p(x)\)

  • 相关补充:

    • 求函数的累积分布函数 \(\Phi(x) = \int_{- \infty}^{x}p(t)d_{t}\)
    • 求累计分布函数的逆函数(反函数) \(\Phi^{-1}(x)\)
  • 采样步骤:

    • 均匀分布采样: \(u_{i} \sim U(0,1)\)
    • 计算: \(x_{i} = \Phi^{-1}(u_{i})\),其中 \(\Phi^{-1}(\cdot)\) 是 \(p(x)\) 的累积分布函数(CDF)的逆函数
    • \(x_{i}\) 服从 \(p(x)\) 分布
  • 优缺点:

    • 优点:
      • 仅需进行一个均匀分布采样即可
    • 缺点:
      • 需要求解累积分布函数的逆函数
      • 累积分布函数的逆函数不一定容易求解,有些甚至无法求解
  • 证明:

    • 示意图如下:
    • 图中纵轴就是均匀分布采样的结果,然后丛纵轴对应到的累计分布函数 \(\Phi(x)\) 的曲线上概率越大的地方实际上也就是累积分布函数的导数(原始分布函数 \(p(x)\))最大的地方
    • 这个对应过程等价于我们将 \(x\) 轴和 \(y\) 轴互换,也就是求累积分布函数的逆函数即可

拒绝采样

别名: Accept-Reject Sampling, 接受-拒绝采样

  • 目标函数: \(p(x)\)

  • 相关补充:

    • (参考分布寻找) : 寻找一个容易采样的分布 \(q(x)\),满足 \(p(x) \leq M\cdot q(x)\)
    • 一般选择正太分布等
    • \(M > 1\),从后面的证明可以知道, M越小越好
  • 采样步骤:

    • 参考分布采样: \(x_{i} \sim q(x)\)
    • 均匀分布采样: \(u_{i} \sim U(0,1)\)
    • 判断是否接受: 如果 \(u_{i} < \frac{p(x_{i})}{M\cdot q(x_{i})}\),则接受采样,否则拒绝本次采样(丢弃本次采样的 \(x_{i}\))
    • \(x_{i}\) 服从 \(p(x)\) 分布(不包括被拒绝的样本)
  • 证明:

    • 由采样步骤得到,最终得到的分布服从$$q(x)\cdot \frac{p(x)}{M\cdot q(x)} = \frac{1}{M}p(x)$$
    • 对上述分布进行归一化即可得到采样的样本服从 \(p(x)\)
    • 从 \(\frac{1}{M}p(x)\) 这里也可以看出来采样的效率由M值的大小决定,M越小,采样效率越高
  • 优缺点:

    • 优点:
      • 复杂分布变成简单分布采样+一个均匀分布,有时候甚至可以将参考分布也使用均匀分布
    • 缺点:
      • 参考分布 \(q(x)\) 的选择很难的
      • 不合适的参考分布可能导致采样效率低下
  • 解决 \(q(x)\) 难以寻找的一种解决方案: 自适应拒绝采样(Adaptive Rejection Sampling)

    • 只适用于目标函数为凸函数
    • 使用分段线性函数来覆盖目标函数
    • 下面是示意图片(图片来源: https://www.jianshu.com/p/3fb6f4d39c60)

重要性采样

Importance Sampling

  • 重要性采样与前面两者不同,重要性采样解决的问题是在求一个函数的关于原始分布的期望时
  • 目标定义: \(\mathbb{E}_{x\sim p(x)}[f(x)] = \int_{x}f(x)p(x)d_{x}\)
  • 直接对 \(p(x)\) 采样可能存在的两个问题:
    • \(p(x)\) 可能难以采样
    • \(p(x)\) 采样到的样本大多都在 \(f(x)\) 比较小的地方,即 \(f(x)\) 与 \(p(x)\) 的差别太大导致有限次采样无法正确评估原始期望,采样次数不够大的话偏差可能很大
      • 这里一种解决方案是采样足够多的次数,多花点时间保证所有样本量足够,降低偏差
  • 解决方案:
    • 引入一个容易采样的参考分布 \(q(x)\),满足
      $$
      \begin{align}
      \mathbb{E}_{x\sim p(x)}[f(x)] &= \int_{x}f(x)p(x)d_{x} \\
      &= \int_{x}f(x)\frac{p(x)}{q(x)}q(x)d_{x} \\
      &= \int_{x}f(x)w(x)q(x)d_{x} \\
      \end{align}
      $$
    • 其中 \(w(x) = \frac{p(x)}{q(x)}\) 称为样本 \(x\) 的重要性权重(Importance Weight),不同样本的重要性权重不同
    • 与直接从 \(p(x)\) 中采样相比,相同采样次数,最终得到期望偏差会更小,因为 \(p(x)\) 会增大在 \(f(x)\) 大但是 \(p(x)\) 极小处的样本被采样的概率,然后调低这个样本的权重
  • 示意图片:

总结

  • 逆采样和拒绝采样都是在通过简单分布采样来采样原始分布的样本,最终的样本就是服从原始分布的样本 \(x_{i}\sim p(x)\)
  • 重要性采样本质上是通过简单分布来采样和重要性权重来估计某个函数在原始分布上的期望 \(\mathbb{E}_{x\sim p(x)}[f(x)] = \int_{x}f(x)p(x)d_{x}\)
  • 对于高维空间中的随机向量,拒绝采样和重要性采样经常难以找到合适的参考分布,容易导致采样效率低下(样本的接受概率太小或者重要性权重太低),此时可以考虑马尔可夫蒙特卡罗采样法(MCMC),MCMC中常见的有两种,MH(Metropolis-Hastings)采样法和Gibbs采样法,关于MCMC详情可参考我的博客ML——MCMC采样

ML——模型的方差与偏差

本文讲解机器学习中模型的方差偏差关系


偏差与方差的定义

  • 方差:模型的预测值之间的离散程度
  • 偏差:模型整体的预测值与真实值的偏离程度

正则化与方差和偏差

  • 参考博客:https://www.cnblogs.com/qkloveslife/p/9885500.html

总结

  • \(\lambda\) 为正则化系数
  • 当 \(\lambda\) 很小时,模型处于“高方差”状态,“训练误差”很小,“交叉验证误差”较大
  • 当 \(\lambda\) 很大时,模型处于“高偏差”状态,“训练误差”和“交叉验证误差”都很大

集成学习与方差和偏差

  • 参考博客:https://blog.csdn.net/xmu_jupiter/article/details/47314927

总结

集成学习分两类
  • 平均方法:例如随机森林, Bagging methods。在平均方法中,系统分别去建立多个基分类器,分类器之间没有任何联系。然后在分类或者回归阶段,各个分类器根据测试数据给出自己的答案,然后系统根据各个分类器给出的结果去综合出最后的结果,比如可以使投票的形式
  • 提升方法:例如梯度提升决策树GBDT,AdaBoost。在提升方法中,系统模型在训练过程中会先后建立一系列分类器,这些分类器单个可能是弱分类器,但是组合起来就成为一个强分类器
  • Stacking方法:
    • 单层Stacking(普通Stacking):降低方差,类似于bagging(因为类似于集成了多个模型投票,属于平均方法)
    • 多层Stacking:同时降低方差和偏差,每层上有平均方法,多层之间是提升方法
    • 方差与偏差、Bagging、Boosting、Stacking【实用机器学习5.1-5.4】
不同类别的偏差与方差
  • 平均方法尝试去降低模型的方差
    • 从统计学的视角看,多个样本均值的方差小于单个样本的方差,具体地样本均值的方差= \(\sigma_{\text{mean}} = \frac{\sigma^2}{n}\),其中 \(n\) 为样本数量
    • 所以平均方法通常比其任何一个基分类器效果好
  • 而提升方法尝试去降低模型的偏差
1…535455…64
Joe Zhou

Joe Zhou

Stay Hungry. Stay Foolish.

631 posts
53 tags
GitHub E-Mail
© 2026 Joe Zhou
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4