相关笔记

概览

本节介绍乘法权重算法(Multiplicative Weights Algorithm),一种经典的在线学习(online learning)算法。算法维护 个”专家”的权重,每轮根据专家的预测是否正确来更新权重——预测错误的专家权重乘以一个惩罚因子 ,预测正确的专家权重保持不变。算法通过加权多数投票做出自己的预测。核心定理保证:算法的总错误次数不超过 ,其中 是专家数量, 是最优专家的错误次数。这一结果意味着算法的性能接近最优专家,且与专家数量仅呈对数关系。

  • 在线学习:数据逐轮到达,算法必须即时做出预测,无法预知未来
  • 专家建议模型:维护 个专家的权重,通过加权投票做出预测
  • 乘法权重更新:错误专家的权重乘以 ,正确专家的权重不变
  • 加权多数投票:预测结果由权重之和较大的那方决定
  • 核心定理:算法错误次数 为最优专家错误次数
  • Hedge 算法:乘法权重算法的连续版本,用于概率分配场景
  • 与竞争分析的关系:乘法权重算法可视为在线算法框架下的一个具体实例

知识结构总览

flowchart TD
    A["在线学习问题"] --> B["问题设定"]
    A --> C["算法设计"]
    A --> D["性能分析"]

    B --> B1["n 个专家"]
    B --> B2["T 轮预测"]
    B --> B3["每轮观测真实结果"]
    B --> B4["目标:总错误次数尽量少"]

    C --> C1["加权多数算法<br/>Weighted Majority"]
    C --> C2["乘法权重更新规则<br/>w_i ← w_i × β^m_i"]
    C --> C3["加权投票预测"]

    D --> D1["核心定理<br/>错误 ≤ 2(ln n + M)"]
    D --> D2["与最优专家比较"]
    D --> D3["对数依赖专家数量"]

    E["与第27章的关系"] --> F["竞争分析框架"]
    F --> G["在线算法<br/>不知道未来输入"]
    F --> H["性能基准<br/>最优离线策略"]

    I["拓展方向"] --> J["Hedge 算法<br/>概率分配版本"]
    I --> K["博弈论应用<br/>近似求解零和博弈"]
    I --> L["AdaBoost<br/>提升方法的理论基础"]

核心思想

核心思路

乘法权重算法解决的核心问题是:当你面对 个”专家”(可以是任意预测器、策略、模型),每轮需要做出二分类预测(比如”明天涨还是跌”),但你不知道哪个专家最靠谱时,如何通过一个简单的权重更新规则,使得你的总错误次数接近最优专家?算法的直觉非常自然——表现好的专家权重越来越大,表现差的专家权重越来越小,最终加权投票的结果主要由那些历史表现优秀的专家决定。关键在于权重更新的方式:不是简单地加减权重,而是乘以一个因子,这使得算法具有指数级的”优胜劣汰”速度,从而保证错误次数仅以对数形式依赖专家数量。

在线学习问题设定

在线学习——专家建议模型

设有 个专家 ,算法运行 轮。在第 轮():

  1. 每个专家 给出一个预测(例如 0 或 1)
  2. 算法根据某种规则做出自己的预测
  3. 真实结果 揭晓
  4. 算法观察每个专家是否预测正确

目标:最小化算法的总错误次数。

评估基准:与最优专家(即总错误次数最少的专家)比较。设最优专家的错误次数为 ,我们希望算法的错误次数不超过 加上一个与 相关的额外项。

生活类比:想象你是一个投资新手,有 个投资顾问每天给你”买”或”卖”的建议。你不知道哪个顾问水平最高,但每天收盘后你能看到谁的建议是对的。你的策略是:给每个顾问初始相同的信任度(权重),每天根据顾问的历史表现调整信任度——预测错误的顾问信任度打折,预测正确的保持不变。最终你根据所有顾问的加权信任度做出决策。乘法权重算法告诉你:这种简单策略的总错误次数不会超过最优顾问的错误次数加

加权多数算法(Weighted Majority)

加权多数算法

初始化:为每个专家 分配初始权重 )。

每轮 的执行过程

  1. 收集所有专家的预测
  2. 对每个预测值 ,计算支持该预测的专家权重之和:
  3. 算法预测权重之和较大的值:
  4. 观察真实结果
  5. 对每个专家 ,若其预测错误,则更新权重: 其中 是一个固定的惩罚因子

参数 的选择 越小,对错误专家的惩罚越严厉,算法越快地”淘汰”表现差的专家。但 太小可能导致算法过于敏感,对偶尔犯错的优秀专家惩罚过重。CLRS 中推荐 ,此时核心定理中的常数因子为

乘法权重更新规则——伪代码

算法执行流程

  1. 初始化 n 个专家的权重 w_i = 1(i = 1, 2, …, n)
  2. 选择惩罚因子 beta ∈ (0, 1)
  3. 每轮 t = 1, 2, …, T: a. 收集所有专家的预测 b. 计算每个预测值的权重之和 c. 预测权重之和较大的值 d. 观察真实结果 e. 对预测错误的专家,权重乘以 beta
  4. 返回算法的总错误次数
MULTIPLICATIVE-WEIGHTS(n, T, β)
1  for i ← 1 to n
2     w_i ← 1                    // 初始化权重
3  mistakes ← 0                   // 算法的错误计数器
4  for t ← 1 to T
5     // 收集专家预测
6     for i ← 1 to n
7        pred_i ← PREDICT(E_i, t)  // 专家 E_i 在第 t 轮的预测
8     // 加权投票
9     W_0 ← 0; W_1 ← 0
10    for i ← 1 to n
11       if pred_i = 0
12          W_0 ← W_0 + w_i
13       else
14          W_1 ← W_1 + w_i
15    // 做出预测
16    if W_0 ≥ W_1
17       ŷ ← 0
18    else
19       ŷ ← 1
20    // 观察真实结果
21    y ← OBSERVE-OUTCOME(t)
22    // 检查算法是否犯错
23    if ŷ ≠ y
24       mistakes ← mistakes + 1
25    // 更新权重
26    for i ← 1 to n
27       if pred_i ≠ y              // 专家 E_i 预测错误
28          w_i ← w_i × β
29 return mistakes

执行流程图:

flowchart TD
    A(["输入:专家数 n,轮数 T,惩罚因子 β"]) --> B["初始化每个专家权重 wᵢ = 1"]
    B --> C["初始化错误计数器 mistakes = 0"]
    C --> D{"t ≤ T?"}
    D -->|是| E["收集所有专家的预测 predᵢ"]
    E --> F["计算每个预测值的权重之和 W₀ 和 W₁"]
    F --> G["加权投票:预测 ŷ = argmax(W₀, W₁)"]
    G --> H["观察真实结果 y"]
    H --> I{"ŷ ≠ y?"}
    I -->|是| J["mistakes ← mistakes + 1"]
    I -->|否| K["遍历每个专家 i"]
    J --> K
    K --> L{"predᵢ ≠ y?"}
    L -->|是| M["wᵢ ← wᵢ × β"]
    L -->|否| N{"还有更多专家?"}
    M --> N
    N -->|是| L
    N -->|否| D
    D -->|否| O(["输出:mistakes"])

预测规则:加权投票

加权投票的直觉

加权投票的规则非常直观:每个专家”投”一票,但票的”分量”等于该专家当前的权重。最终预测由总权重较大的那方决定。

关键性质:如果算法预测错误,则至少有一半的总权重在”错误的一方”。这是因为算法选择的是权重之和较大的预测值,如果这个预测值是错的,那么支持正确答案的专家权重之和最多占总权重的一半。

形式化地,设第 轮的总权重为 。如果算法预测错误,则:

这一性质是后续证明的关键引理。

核心定理与证明

乘法权重算法的核心定理

设乘法权重算法运行 轮,有 个专家,惩罚因子 。设最优专家的总错误次数为 ,算法的总错误次数为 。则:

更一般地,对于任意

时,,因此:

【核心定理证明(通过势函数方法建立算法错误次数的上界)】

证明思路:使用势函数方法(potential function method)。定义势函数为所有专家权重之和 。通过分析每轮更新后势函数的变化,建立势函数的下降量与算法错误次数之间的关系,再利用势函数的初始值和最终值之间的不等式,导出算法错误次数的上界。

第一步:分析势函数的变化。

设第 轮有 个专家预测错误。更新后,每个错误专家的权重变为 ,正确专家的权重不变。因此:

为错误专家的权重占比,则:

第二步:建立错误专家权重占比与算法是否犯错的关系。

【关键引理(算法犯错时错误专家权重占比至少为 1/2)】

如果算法在第 轮预测错误,则

证明:算法选择权重之和较大的预测值。如果算法预测错误,说明支持错误预测的专家权重之和 支持正确预测的专家权重之和。而预测错误的专家集合包含了所有支持错误预测的专家(可能更多),因此:

因此

第三步:累积势函数的变化。

的表达式取对数并累加:

初始权重 (每个专家权重为 1)。

利用不等式 (对所有 成立):

第四步:将 的求和与专家错误次数联系起来。

对于任意专家 ,设其在 轮中犯了 次错误。由于每次犯错时该专家的权重乘以 ,第 轮时该专家的权重为:

因此:

其中 是最优专家的错误次数(因为至少有一个专家的错误次数为 ,其权重为 ,而所有权重非负)。

第五步:综合推导错误上界。

由第三步和第四步:

由于 (因为 ),两边乘以

第六步:从 的求和导出算法错误次数。

设算法犯了 次错误。在算法犯错的轮次中,由关键引理知 。在算法未犯错的轮次中,。因此:

结合第五步的结果:

【最终上界(代入 β = 1/2 得到简洁的错误次数上界)】

上述推导使用的不等式 不够紧。实际上,更精确的界需要使用不同的分析方法。使用更紧的不等式 (当 时),或者直接使用标准推导:

,则

这个界不够紧。使用更精细的分析(利用 以及更精确的不等式),标准结果是:

时:

因此

与第27章在线算法的关系

乘法权重算法作为在线算法

乘法权重算法是在线算法的一个具体实例。在第27章中,我们学习了在线算法的竞争分析框架:在线算法必须在不知道未来输入的情况下做出决策,其性能通过与最优离线算法的比较来评估。

在乘法权重算法的设定中:

  • 在线决策:每轮必须立即做出预测,不能等待未来的真实结果
  • 竞争基准:最优专家对应离线最优策略(事后选择错误最少的专家)
  • 竞争比:算法错误次数与最优专家错误次数之比的上界

但乘法权重算法的保证形式与第27章的竞争比略有不同。第27章的竞争比是乘法形式(),而乘法权重算法的保证是加法形式()。加法形式在专家建议问题中更为自然,因为当 很小时(最优专家几乎不犯错),乘法竞争比会变得很大,而加法形式的额外代价 是固定的。

对抗性专家的处理

对抗性环境下的性能保证

乘法权重算法的一个强大之处在于:即使专家是对抗性的(adversarial),即真实结果由一个对手故意选择以使算法犯错,核心定理仍然成立。这是因为证明中只依赖于最优专家的错误次数 ,而不依赖于数据的分布或专家的行为模式。

这一性质使得乘法权重算法在以下场景中特别有用:

  • 博弈论:对手故意选择对你最不利的策略
  • 金融预测:市场可能被操纵
  • 网络安全:攻击者故意规避检测

对抗性保证是乘法权重算法区别于许多传统机器学习算法(如基于 i.i.d. 假设的算法)的关键特征。

逐步执行实例

3个专家、5轮预测的完整执行过程

初始状态,总权重

第 1 轮

  • 专家预测:
  • 权重之和:
  • 算法预测:
  • 真实结果:
  • 算法正确! 犯错
  • 权重更新:
  • 新权重:

第 2 轮

  • 专家预测:
  • 权重之和:
  • 算法预测:
  • 真实结果:
  • 算法犯错! 犯错
  • 权重更新:
  • 新权重:

第 3 轮

  • 专家预测:
  • 权重之和:
  • 算法预测:
  • 真实结果:
  • 算法正确! 犯错
  • 权重更新:
  • 新权重:

第 4 轮

  • 专家预测:
  • 权重之和:
  • 算法预测:
  • 真实结果:
  • 算法犯错! 犯错
  • 权重更新:
  • 新权重:

第 5 轮

  • 专家预测:
  • 权重之和:
  • 算法预测:
  • 真实结果:
  • 算法正确! 犯错
  • 权重更新:
  • 最终权重:

结果统计

  • 算法错误次数 (第 2 轮、第 4 轮)
  • 各专家错误次数: 犯错 4 次, 犯错 5 次, 犯错 1 次
  • 最优专家 的错误次数
  • 理论上界:
  • 实际 ,定理成立

Hedge 算法——概率分配版本

Hedge 算法

Hedge 算法是乘法权重算法的连续(概率分配)版本。与加权多数算法不同,Hedge 算法不直接输出 0/1 预测,而是输出一个概率分布

初始化

每轮

  1. 计算概率分布:
  2. 根据分布 随机选择预测(或输出分布本身)
  3. 观察真实结果和每个专家的损失
  4. 更新权重:,其中 是学习率

Hedge 算法的核心保证是关于累积损失(而非错误次数)的:

可使额外项最小化。


补充理解

乘法权重算法的历史渊源

来源:Nick Littlestone, Manfred K. Warmuth(1994),“The Weighted Majority Algorithm”,Information and Computation, 108(2), pp. 212-261 链接https://www.sciencedirect.com/science/article/pii/S0890540184710369

Littlestone 和 Warmuth 在这篇论文中首次提出了加权多数算法(Weighted Majority Algorithm),这是乘法权重更新方法在学习理论中的最早形式之一。论文证明了在二分类预测问题中,通过维护专家权重并使用乘法更新规则,学习器的错误次数可以接近最优专家。这一工作奠定了在线学习领域的理论基础,后续由 Freund 和 Schapire 将其推广为 Hedge 算法,并进一步与 Boosting 方法建立了深刻联系。加权多数算法的核心思想——对表现好的专家增加权重、对表现差的专家降低权重——看似简单,但其理论分析中的势函数方法成为了后续大量在线学习算法分析的标准工具。

乘法权重方法在博弈论中的应用——近似求解零和博弈

来源:Yoav Freund, Robert E. Schapire(1999),“Adaptive Game Playing Using Multiplicative Weights”,Games and Economic Behavior, 29(1-2), pp. 79-103 链接https://www.schapire.net/papers/FreundScYY.pdf

Freund 和 Schapire 在这篇论文中展示了乘法权重算法如何用于近似求解零和博弈(zero-sum games)的纳什均衡。核心思想是将博弈的重复博弈过程视为在线学习问题:每个玩家使用乘法权重算法来调整自己的混合策略,将对手的历史行为视为”专家建议”。论文证明了这种策略的累积损失接近最小最大化值(min-max value),从而为纳什均衡提供了高效的近似计算方法。这一结果不仅给出了计算博弈论的新算法,还提供了最小最大化定理(min-max theorem)的一个新的、简洁的证明。乘法权重方法在博弈论中的应用后来被 Arora、Hazan 和 Kale 系统性地总结为”元算法”框架。

乘法权重与 AdaBoost 的深刻联系

来源:Robert E. Schapire(1999),“A Brief Introduction to Boosting”,Proceedings of the Sixteenth International Joint Conference on Artificial Intelligence (IJCAI), pp. 1401-1406 链接https://www.schapire.net/papers/explaining-adaboost.pdf

Schapire 在这篇经典论文中揭示了 AdaBoost 与乘法权重算法之间的深刻联系。AdaBoost 是一种集成学习方法(ensemble method),通过组合多个”弱分类器”(weak learners)来构建强分类器。Schapire 证明了 AdaBoost 的训练过程可以视为乘法权重算法的一个特例:弱分类器对应”专家”,训练样本的权重更新对应乘法权重更新。具体而言,AdaBoost 中对误分类样本增加权重的操作,等价于在博弈论框架下使用乘法权重方法求解一个特定的零和博弈。这一洞察不仅提供了理解 AdaBoost 的新视角,还揭示了 Boosting 与在线学习、博弈论之间的统一理论框架。Freund 和 Schapire 因这一系列工作获得了 2003 年的哥德尔奖(Godel Prize)。

乘法权重方法作为元算法——统一框架与广泛应用

来源:Sanjeev Arora, Elad Hazan, Satyen Kale(2012),“The Multiplicative Weights Update Method: a Meta-Algorithm and Applications”,Theory of Computing, 8(6), pp. 121-164 链接https://theoryofcomputing.org/articles/v008a006/

Arora、Hazan 和 Kale 在这篇综述论文中提出了一个重要观点:乘法权重更新方法不仅仅是一个具体算法,而是一种元算法(meta-algorithm)——许多看似不相关的算法(加权多数、Hedge、随机梯度下降、 fictitious play 等)都是这一元算法的实例。论文系统展示了乘法权重方法在多个领域的应用:线性规划的近似求解、最大流问题的快速算法、半正定规划的近似求解、在线广告中的预算分配、推荐系统中的专家选择等。这篇综述被引用超过 1000 次,是理解乘法权重方法全貌的最佳参考资料。论文的核心贡献在于识别出这些算法的共同结构——维护一个分布,使用乘法更新规则迭代修改分布,通过指数势函数进行分析——从而为跨领域的方法迁移提供了理论基础。


易混淆点

误区辨析

误区 1:“专家”一定是真正的人类专家或AI模型

这一理解过于狭隘。在乘法权重算法的框架中,“专家”(expert)可以是任意预测器决策规则,甚至可以是简单的启发式方法。例如:

  • 在股票预测中,专家可以是”永远预测涨”、“永远预测跌”、“跟随昨日趋势”等简单规则
  • 在天气预测中,专家可以是不同气象模型
  • 在博弈论中,专家可以是纯策略空间中的每个纯策略

算法的强大之处在于:即使大部分专家质量很差,只要存在至少一个”还不错”的专家(错误次数 较小),算法就能自动识别并跟随它。专家数量 的影响仅以 的形式出现,这意味着即使有数百万个专家,额外代价也只增加几十。

误区辨析

误区 2: 的选择不影响算法的根本性能

的选择对算法的实际性能有显著影响。 越小(惩罚越严厉),算法越快地淘汰表现差的专家,但也越容易”误杀”偶尔犯错的优秀专家。 越大(惩罚越温和),算法对短期波动更鲁棒,但适应速度更慢。

惩罚力度适应速度鲁棒性常数因子
2.41
约 3.5
约 9.5

在实际应用中, 的选择需要根据具体场景的噪声水平来调整。如果专家的预测质量波动较大(噪声高),应选择较大的 ;如果专家质量稳定,可以选择较小的

误区辨析

误区 3:乘法权重算法需要知道数据的分布或专家的能力

乘法权重算法是一种纯在线算法,它不需要任何关于数据分布的先验知识,也不需要知道哪个专家更好。算法的核心优势在于:

  • 无需训练阶段:不需要在历史数据上预训练
  • 无需分布假设:数据可以是 i.i.d. 的,也可以是对抗性的
  • 自动适应:通过权重更新自动追踪表现最好的专家
  • 理论保证:即使在最坏情况下(对抗性环境),错误上界仍然成立

这与许多传统机器学习算法(如需要 i.i.d. 假设的监督学习方法)形成了鲜明对比。乘法权重算法的代价是:它的性能保证是相对于最优专家的”遗憾”(regret),而非绝对误差。如果所有专家都很差( 很大),算法的表现也会很差——但它不会比最优专家差太多。


习题精选

题号题目描述难度
33.2-1给定 个专家, 轮预测,,手动执行乘法权重算法并统计错误次数⭐⭐
33.2-2证明在加权多数算法中,如果算法在第 轮预测错误,则预测正确的专家权重之和不超过总权重的一半⭐⭐
33.2-3将乘法权重算法推广到多分类场景(预测值不止 0 和 1),分析其错误上界⭐⭐⭐
33.2-4证明对于任意 ,乘法权重算法的错误次数 满足 ⭐⭐⭐⭐

视频学习指南

资源链接说明
CMU 15-859(B) Lecture 16: Multiplicative Weightshttps://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15859-f11/www/notes/lecture16.pdfCMU 高级算法课程,系统讲解乘法权重算法及其在 LP/SDP 求解中的应用
Princeton COS 521 Lecture 8: Multiplicative Weight Algorithmhttps://www.cs.princeton.edu/courses/archive/fall16/cos521/Lectures/lec8.pdfSanjeev Arora 亲自讲授,从博弈论角度引入乘法权重方法
Arora-Hazan-Kale 综述论文https://theoryofcomputing.org/articles/v008a006/乘法权重方法的权威综述,涵盖理论、应用和拓展
MIT 18.434 Seminar: The Multiplicative Weights Methodhttps://www.math.mit.edu/~goemans/18434S06/multiplicative-weights.pdfMIT 数学系研讨课材料,包含详细的证明和实例

教材原文

CLRS 第4版 33.2节原文(中文翻译)

乘法权重算法(multiplicative weights algorithm)是在线学习中的一种基本方法。算法维护一组专家的权重,每轮根据专家的预测表现更新权重:预测错误的专家权重乘以一个小于 1 的因子 ,预测正确的专家权重保持不变。算法通过加权多数投票做出自己的预测。

该算法的核心保证是:算法的总错误次数不超过最优专家的错误次数加上一个与专家数量的对数成正比的额外项。具体地,当 时,算法的错误次数 满足 ,其中 是专家数量, 是最优专家的错误次数。

乘法权重算法与第27章讨论的在线算法框架密切相关。两者都处理信息不完全条件下的决策问题,但乘法权重算法的保证形式是加法的(错误次数不超过最优专家加一个常数),而非第27章中的乘法竞争比形式。这一算法在博弈论、优化和机器学习中有广泛应用,包括近似求解零和博弈的纳什均衡、线性规划的近似求解,以及作为 AdaBoost 提升方法的理论基础。


参见Wiki


第33章-机器学习算法 在线学习