type
status
date
slug
summary
tags
category
icon
password

一、可扩展码本(Extensible Codebook)是什么?

1. 什么是码本?

  • 码本的定义:想象码本就像一个“词典”,里面有很多“单词”(专业术语叫“码字”,codewords)。每个码字是一个数字向量(比如一个包含若干数字的小列表),用来代表数据中的某种特征。
  • 举个例子:假设你在识别手写数字(像MNIST数据集),码本里可能有32个码字,每个码字代表某种笔画或形状的特征(比如“横线”“圆圈”)。模型会把看到的数字分解成这些特征的组合。
  • 作用:码本把复杂、连续的数据(比如图像像素值)变成简单的、离散的表示(比如“这个图像用码字1和码字5表示”)。这样做可以让模型更稳定,尤其是在不同设备的数据长得不太一样时(联邦学习中常见的情况)。

2. 为什么需要“可扩展”?

  • 初始码本:一开始,所有设备(客户端)共享一个小的码本,比如只有32个码字。这个码本是通用的,随机生成的,能应付大部分情况。
  • 问题:如果某个设备的数据很特别(比如手写数字风格完全不同),这32个码字可能不够用,模型就没法很好地表示这些新数据。
  • 解决办法:让码本“可扩展”,也就是根据需要动态增加新的码字。这样,码本就能逐渐适应各种不同的数据。

3. 怎么扩展码本?

  • 触发条件:当发现某个设备的数据和当前码本不匹配时(后面会讲怎么发现),就给这个设备加几个新码字。
  • 新码字是谁的:这些新加的码字只属于这个设备,其他设备看不到也不会用,确保每个设备都能有适合自己的“词典”。
  • 怎么生成新码字
    • 刚开始:随机生成一些码字。
    • 后面:用一个叫“K-means”的方法,从设备的数据特征里挑出有代表性的点作为新码字(有点像自动找“典型特征”)。
  • 好处
    • 不需要一开始就准备一个超大的码本(那样计算量太大)。
    • 新码字更贴近设备的数据,模型学得更快。

4. 分段码本是什么?

  • 问题:如果数据很复杂(比如彩色图片),32个码字可能不够细致。
  • 解决办法:把每个特征分成几段(比如2段或4段),每段用一个码字表示。
  • 举个例子:一个特征本来用1个码字表示,现在分成2段,每段有32个码字可选,组合起来就是32×32=1024种可能性。这样表示能力变强了,但码本还是保持小规模。

二、不确定性评估(Uncertainty Evaluation)是什么?

1. 什么是不确定性?

  • 定义:不确定性是模型对自己的预测有多“自信”的度量。
    • 低不确定性:模型很确定,比如“这个数字是3,我99%确信”。
    • 高不确定性:模型不确信,比如“这个数字可能是3,也可能是8,我不确定”。
  • 在UEFL中的作用:通过不确定性判断哪些设备的数据跟当前模型不匹配,然后决定要不要给它们扩展码本。

2. 怎么评估不确定性?

  • 方法:用一种叫“蒙特卡罗Dropout”的技术。
  • 怎么做
    • 在模型测试时,故意“随机丢弃”一些神经元(Dropout),让模型多次预测同一个数据(比如预测10次)。
    • 每次预测结果可能稍有不同,统计这些结果的“混乱程度”(用一个数学公式叫“预测熵”计算)。
  • 预测熵公式(简单理解版):
    • 如果模型每次预测都差不多(比如都说“3”),熵很低,不确定性低。
    • 如果模型预测很乱(比如一会儿“3”,一会儿“8”),熵很高,不确定性高。
  • 为什么用这个方法
    • 简单,不需要改模型。
    • 在联邦学习中,设备不能分享原始数据,但可以用这个方法间接判断问题。

3. 怎么用不确定性决定扩展码本?

  • 设个标准(阈值)
    • 看所有设备的不确定性,找最低的那个(比如0.1),然后定一个阈值,比如比最低值高30%(0.13)。
    • 如果某个设备的不确定性超过这个阈值(比如0.2),说明它的数据跟当前模型不匹配。
  • 行动
    • 给这个设备扩展码本,加几个新码字。
    • 然后继续训练,直到它的不确定性降下来。

4. 什么时候停下来?

  • 当所有设备的不确定性都低于阈值时,说明码本已经够用了,不需要再扩展了。
  • 例子:实验中,通常加1-3次新码字就够了。

三、它们怎么一起工作?

以下是UEFL的完整流程,帮您把“可扩展码本”和“不确定性评估”串起来:
  1. 起步
      • 所有设备用一个共享的小码本(比如32个码字)开始训练。
  1. 检查
      • 训练一轮后,用蒙特卡罗Dropout算每个设备的不确定性。
  1. 扩展
      • 如果某个设备的不确定性太高,就给它加几个新码字(用K-means从它的数据里挑)。
  1. 重复
      • 用新码本继续训练,再检查不确定性,直到所有设备都不“困惑”为止。

四、为什么这样设计很厉害?

  • 灵活:码本不是一成不变的,能根据数据动态调整。
  • 隐私:不用看设备的数据,只靠不确定性就知道哪里有问题。
  • 高效:码本小,计算快,适合手机这样的边缘设备。
  • 效果好:实验显示,准确性提高了(比如从81.5%到92%),不确定性也降了(比如从0.177到0.022)。
 
The Way Towards Best Codes读文献:脑“脊”接口
Loading...