城东美食街上有三家老店:老张的川菜馆、李姐的粤菜馆和王叔的火锅店。三人想合编一本《城市美食秘籍》,把各自的招牌菜做法汇总成一套「通用菜谱」,好让三家店的水平一起提升。可问题是——谁肯把独门配方全盘托出呢?银行面临一模一样的困境:数据是各家最值钱的资产,客户信息、交易流水、违约记录绝不能外泄,但单打独斗建模又总差那么点意思。 联邦学习(Federated Learning)给出了一个妙招:菜不出厨房,心得共享。各家餐厅在自己厨房里试菜、调整火候,只把「多加半勺糖」「少放一撮盐」这类心得拿出来交流;同类餐厅结对切磋,练同一道招牌菜(横向联邦);餐厅和菜市场、超市互补数据,拼出完整顾客画像(纵向联邦);心得投进「匿名投票箱」搅匀再公开(Secure Aggregation);最后有人搭起一座标准化的中央厨房平台,让合作规模化(FATE 平台)。本文就用这套「美食联盟」的视角,把联邦学习在金融信用评估中的全景讲明白。

岗位关联

学完本文,你将理解联邦学习的横向/纵向建模思路、隐私保护机制与 FATE 平台实践,能够在实际金融风控场景中判断「何时用联邦、怎么设计联邦方案」——这是 AI 工程师切入数据合规时代的必备能力。

目录
  1. 可视化演示
  2. 联邦学习概述:菜不出厨房,心得共享
  3. 横向联邦信用评估:同行切磋,共建招牌菜
  4. 纵向联邦信用评估:上下游互补,拼出完整画像
  5. Secure Aggregation 隐私保护:匿名投票箱的秘密
  6. FATE 平台实践:中央厨房里的标准化流水线
  7. 金融落地展望:从试验灶台到全城招牌
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示横向纵向联邦信用评估多机构协作、Secure Aggregation安全聚合梯度隐私保护、FATE平台通信优化与异步聚合三大模式交互动画。

本节配有交互动效(进入视口后自动加载,约 3KB)。

横向纵向联邦信用评估 横向联邦多银行相同特征不同样本联合训练信用模型 纵向联邦银行与电商相同样本不同特征互补增强 HFL: ∪Xi VFL: ∪X·j 横向纵向联邦实现跨机构信用评估数据不出域

联邦学习概述:菜不出厨房,心得共享

话说老张、李姐和王叔在茶馆里商量到深夜,最后终于达成共识:配方绝对不能离开自己的灶台,但「调味心得」可以分享。老张本月试出一种新卤料配比,他就把「加了二钱桂皮,口感更醇厚」这句话写在纸条上递给别人;李姐试了七分火候的蒸鱼,也把经验讲出来。每个人参考别人的心得,在自己的厨房里继续改良——这就是联邦学习最朴素的形态。

落到技术上,联邦学习(Federated Learning)是一种分布式训练范式:多个参与方(银行)在不交换原始数据的前提下,通过交换模型参数或梯度,协作训练一个共享的模型。整个系统通常采用「客户端-服务器」架构:中央服务器负责协调与聚合,各客户端在本地用私有数据训练模型,再把更新内容传给服务器。

为什么要这样设计?因为金融数据极其敏感,客户违约记录、交易流水一旦出库就面临合规风险。传统集中式训练要把所有数据搬到一台服务器上,这在跨机构场景下几乎不可能。联邦学习把「建模」与「看数据」彻底解耦——模型可以看见数据的「统计影子」,但永远碰不到数据本身。

老张他们靠着这套「心得共享」的规矩,头一个月就发现各自的招牌菜评分都涨了一截。联邦学习的魅力正在于此:不是把秘方交出去,而是让每份秘方都因为别人的经验而变得更好。

min⁡w L(w)=∑k=1Kpk Lk(w)\displaystyle \min_{\mathbf{w}}\ \mathcal{L}(\mathbf{w}) = \sum_{k=1}^{K} p_k\,\mathcal{L}_k(\mathbf{w})
这段公式的意思:所有人合作想要找到一组「通用调味秘方」w,让每家店各自的「翻车率」L_k 乘上该店的权重 p_k 后,加在一起的总翻车率达到最低。
  1. 模型参数 w就是我们要找的「通用秘方」,在信用评估中它决定了一个客户特征如何映射到违约概率,可理解为评分卡里的各项系数。
    w\mathbf{w}
  2. 参与方编号 kK 家银行各有一个编号,k 从 1 取到 K,相当于老张、李姐、王叔每家店都有自己的「当地试菜报告」。
    k=1,2,…,Kk = 1, 2, \dots, K
  3. 第 k 方损失 L_k第 k 家银行在自己的数据上测试模型时的「翻车程度」,即预测错误的平均水平,损失越小说明这组参数在当地越管用。
    Lk(w)\mathcal{L}_k(\mathbf{w})
  4. 聚合权重 p_k每家银行在联盟中的话语权,通常按它数据量占全体数据量的比例计算——数据多的店,心得分量自然更足。
    pk=nknp_k = \frac{n_k}{n}
  5. 全局最小化整个联盟的目标是让所有参与方翻车程度的加权总和最小,这就是联邦训练要优化的总目标函数。
    min⁡w∑k=1Kpk Lk(w)\min_{\mathbf{w}} \sum_{k=1}^{K} p_k\,\mathcal{L}_k(\mathbf{w})

横向联邦信用评估:同行切磋,共建招牌菜

老张的川菜馆和李姐的粤菜馆虽然菜系不同,但开业三年后发现一个事实:两家的菜单结构(前菜、主菜、汤品、甜品)、翻台流程、服务员培训体系几乎一模一样,差异只在客人身上——老张的客人多是上班族,李姐的客人多是家庭客。他们决定合力打磨一套通用的「后厨标准化流程」:流程模板完全相同,各自用自家客人的反馈去调整细节。这就是横向联邦。

横向联邦学习(Horizontal Federated Learning)适用于特征维度相同、样本不同的场景。就拿银行来说,A 银行和 B 银行对客户记录的都是「年龄、收入、负债率、征信查询次数」这些字段(特征一致),但服务的是不同地区、互不重叠的客户群体(样本不同)。这时数据就像一块蛋糕被水平切开,每方拿一层,合作训练同一个信用评分模型。

训练流程是反复的「本地训练 → 上传更新 → 服务器聚合 → 下发新参数」循环:每家银行在本地用自己的客户数据跑几个轮次的梯度下降,然后把更新后的模型参数加密上传;服务器将所有更新按数据量加权平均,得到新的全局模型再发回去。多轮迭代后,全局模型吸收各家数据的信息,又不会让任何一条原始记录离开本地。

一个真实的例子:某省十余家农商行各自客户量少、坏账样本稀缺,单独建模的评分卡一换数据集就失灵。它们组成横向联邦联盟,用一个全局评分模型替代各自的小模型,在不共享任何客户明细的前提下,把模型在验证集上的 AUC 提升了约 8%。老张和李姐后来也发现,两家合作打磨出的流程让各自的上菜速度都快了两分钟——同行不一定是冤家,共享流程、各炼数据,才是双赢。

w(t+1)=∑k=1Knkn wk(t+1)\displaystyle \mathbf{w}^{(t+1)} = \sum_{k=1}^{K} \frac{n_k}{n}\,\mathbf{w}_k^{(t+1)}
这段公式是说:下一轮的「通用后厨流程」等于各家餐厅按「接待客人数占比」加权的流程平均值——客人多的店,话语权大。
  1. 全局模型 w(t+1)第 t+1 轮迭代后得到的新版「通用流程」,也就是聚合完成后的全局信用评估模型参数,将被分发给所有银行。
    w(t+1)\mathbf{w}^{(t+1)}
  2. 本地更新 w_k(t+1)第 k 家银行在自己数据上训练若干轮后得到的「当地改良版流程」,它包含了这家银行客户群体的独特信息。
    wk(t+1)\mathbf{w}_k^{(t+1)}
  3. 数据量占比 n_k / n第 k 家银行的样本数 n_k 占全体银行总样本数 n 的比例,相当于「这家店的客流量占比」。
    nkn\frac{n_k}{n}
  4. 加权求和把各银行的本地更新按数据量占比加权加起来,得到新的全局模型。这就是大名鼎鼎的联邦平均算法(FedAvg)的核心一步。
    ∑k=1Knkn wk(t+1)\sum_{k=1}^{K} \frac{n_k}{n}\,\mathbf{w}_k^{(t+1)}

纵向联邦信用评估:上下游互补,拼出完整画像

老张的川菜馆想搞清楚「什么顾客愿意点高价菜」,可他手里只有点菜记录;楼下超市有顾客的会员消费清单,菜市场有当日菜价波动。三家客群高度重叠,但掌握的维度完全不同——老张知道口味偏好,超市知道购买力,菜市场知道供应链成本。他们把三份信息拼在一起,才第一次看清顾客的全貌。这就是纵向联邦。

纵向联邦学习(Vertical Federated Learning)适用于样本重叠多、特征互补的场景。在金融风控中,银行拥有客户的信贷历史和违约标签,但缺少消费行为、社交关系等「软信息」;电商平台恰好相反,拥有丰富的消费行为数据却不知道客户是否违约。两部分特征拼起来,就是一份更完整的客户画像;单独任何一方,都只能看到盲人摸象般的一角。

纵向联邦的第一步是加密实体对齐:银行和电商在互不暴露各自客户名单的前提下,通过密码学协议找出共同客户集合。第二步是协同训练:由于样本对齐了,银行可以基于电商传来的中间结果计算梯度,再用同态加密保护交换的中间值,保证任何一方都推断不出对方的原始特征。

实践中,某股份制银行与头部电商平台合作:银行贡献违约标签,电商贡献消费频次与客单价特征。依靠纵向联邦,新生客群的信用评分覆盖度提升了 35%,而双方连一条原始记录都没有交给对方。老张后来感慨:「以前我只知道顾客爱吃什么,现在连他舍不舍得花钱都心里有数了——数据互补,才是真正的知己知彼。」

min⁡wA,wB 1n∑i=1nℓ(yi, f([xiA; xiB]))\displaystyle \min_{\mathbf{w}_A,\mathbf{w}_B}\ \frac{1}{n} \sum_{i=1}^{n} \ell\Big(y_i,\ f\big([\mathbf{x}_i^{A};\,\mathbf{x}_i^{B}]\big)\Big)
这段公式是说:双方把各自掌握的客户特征像两张半张藏宝图一样拼接成完整地图,然后共同寻找让违约预测最准的参数组合。
  1. 双方参数 w_A 与 w_B银行侧参数 w_A 处理信贷特征,电商侧参数 w_B 处理消费特征,两者分别保存在各自机构,永不交换。
    wA, wB\mathbf{w}_A,\ \mathbf{w}_B
  2. 对齐样本 x_i经过加密实体对齐后找到的 n 个共同客户,第 i 个客户的两部分特征分别为 x_i^A(银行侧)和 x_i^B(电商侧)。
    xiA, xiB\mathbf{x}_i^{A},\ \mathbf{x}_i^{B}
  3. 特征拼接 [x_i^A; x_i^B]把同一客户的两部分特征拼接成完整特征向量,代入模型 f 得到违约概率预测。
    f([xiA; xiB])f\big([\mathbf{x}_i^{A};\,\mathbf{x}_i^{B}]\big)
  4. 平均损失最小化对 n 个共同客户的预测误差取平均并求最小,使拼接后的模型在双方数据上整体表现最佳,同时双方只交换加密的中间结果。

Secure Aggregation 隐私保护:匿名投票箱的秘密

美食联盟越做越大,新的担忧也来了:老张写下的「调味心得」虽然不含配方,但精明的王叔盯着心得看久了,会不会反推出老张的独家配料?同理,银行上传的模型梯度看似只是数字,恶意服务器却能通过梯度反演(Gradient Inversion)重构出原始训练数据。于是,联盟请来一位工匠打造了一口「匿名投票箱」——Secure Aggregation(安全聚合)。

这口投票箱的神奇之处在于:每家银行把梯度写在小纸条上,投进箱子的瞬间,纸条会被自动喷上一层「干扰墨水」。由于每张纸条的干扰墨水是成对配制的——你喷 A 号干扰剂,我就喷 A 号干扰剂的「解药」,两种墨水混合后恰好中和。最终箱子里所有纸条叠加后,干扰全部抵消,只留下所有梯度的纯净总和。服务器能看到的只有总和,永远不知道任何一家银行的具体梯度。

实现上,参与方两两协商生成成对掩码(mask):每一对参与者 (i, j) 共享一个随机种子,生成相同的随机向量 s_{i,j}。参与者 i 在自己的梯度上加上所有「对 j 的掩码」,减掉所有「来自 j 的掩码」,这样全部参与方的掩码在求和时成对抵消。

这套机制还能应对「有人中途退出」的意外:通过 Shamir 秘密共享把掩码拆成碎片分发给其他参与方,即使某家银行断线掉线,众人也能合力重建它应有的掩码并完成抵消。老张看着这口投票箱感慨:「好东西!每人贡献一点真话,但谁也不知道真话是谁说的。」Secure Aggregation 正是联邦学习抵御「诚实但好奇」服务器窥探的关键防线。

∑i=1Kyi=∑i=1K(xi+∑j : i<jsi,j−∑j : i>jsj,i)≡∑i=1Kxi(modR)\displaystyle \sum_{i=1}^{K}\mathbf{y}_i = \sum_{i=1}^{K}\Big(\mathbf{x}_i + \sum_{j\,:\,i<j}s_{i,j} - \sum_{j\,:\,i>j}s_{j,i}\Big) \equiv \sum_{i=1}^{K}\mathbf{x}_i \pmod{R}
这段公式是说:每份梯度都裹了一层「干扰墨水」,但所有墨水成对中和,最后打开箱子看到的恰好是真实的总梯度——掩码在聚合中神奇地消失了。
  1. 掩码后的梯度 y_i第 i 家银行上传的「带干扰梯度」,等于它的真实梯度 x_i 加上配对的干扰向量。
    yi=xi+∑j : i<jsi,j−∑j : i>jsj,i\mathbf{y}_i = \mathbf{x}_i + \sum_{j\,:\,i<j}s_{i,j} - \sum_{j\,:\,i>j}s_{j,i}
  2. 成对掩码 s_{i,j}参与者 i 和 j 私下约定一个随机向量:i 加上它,j 恰好减去同一个向量,保证单个上传值被保护而总和不受影响。
    si,j=−sj,is_{i,j} = -s_{j,i}
  3. 所有 y 求和把所有参与方的掩码梯度加起来,正值掩码与负值掩码两两抵消,只剩所有真实梯度的总和。
    ∑i=1Kyi=∑i=1Kxi\sum_{i=1}^{K}\mathbf{y}_i = \sum_{i=1}^{K}\mathbf{x}_i
  4. 模运算 mod R所有运算在整数模 R 的空间中进行,防止数值溢出,同时让单个值看起来完全随机。

FATE 平台实践:中央厨房里的标准化流水线

美食联盟的「心得共享」规矩虽然好,可各家纸条格式五花八门:老张写「多放一撮盐」,李姐写「加 0.5 克食盐」,王叔干脆画了张图。联盟急需一套统一的标准——锅具型号要统一,流程步骤要编号,记录要归档。有人建起了一座「中央厨房合作平台」,把一切标准化:这就是 FATE 平台。

FATE(Federated AI Technology Enabler)是微众银行开源的工业级联邦学习框架,也是金融领域落地最广的平台之一。它把联邦学习的各个部件做成了标准化的「厨具」:FederatedML 是算法库,内置横向联邦、纵向联邦、联邦迁移学习等多种算法;FATE-Flow 是总调度中心,负责任务的编排、排队与监控;FederatedServing 负责模型训练完成后的在线推理服务;Board 则是可视化看板,让工程师像看仪表盘一样监控训练状态。部署层面,EggRoll 提供底层存储与计算资源管理,KubeFATE 支持容器化一键部署。

FATE 的底层安全组件内置了多种密码学原语,其中最重要的就是加法同态加密:服务器可以在看不见明文的情况下,直接对密文做加法运算,得到的结果解密后恰好等于明文之和。这让纵向联邦中交换中间梯度变得安全。

有了中央厨房,联盟的合作效率大幅提升:新加入的餐厅按标准接口接入,三天就能跑通第一轮联合训练;后台看板实时显示各家参与方的贡献度和任务状态。FATE 让联邦学习从「手工作坊」走向「工业流水线」,标准化的力量,就是把一次成功的实验变成一百次可复制的实践。

E(m1)⋅E(m2)=E(m1+m2)\displaystyle E\big(m_1\big) \cdot E\big(m_2\big) = E\big(m_1 + m_2\big)
这段公式是说:把两份材料分别锁进两个密码箱,箱子不需要打开就能「合并」,打开合并后的箱子时,得到的恰好是两份材料内容的总和。
  1. 加密函数 E用公钥把明文 m 变成密文的「加密锁」,只有持有私钥的一方才能打开。
    E(⋅)E(\cdot)
  2. 密文相乘两个密文在不解密的情况下直接做乘法运算,对应 FATE 中服务器对两家银行上传的加密梯度做聚合。
    E(m1)⋅E(m2)E(m_1) \cdot E(m_2)
  3. 加法同态性密文相乘的结果解密后等于两个明文相加,这意味着服务器能完成「加密状态下的求和」却不触碰任何明文。
    E(m1+m2)E(m_1 + m_2)
  4. 隐私保护聚合银行只需各自加密梯度上传,FATE 平台在密文上完成联邦聚合,全程看不到任何一家的明文梯度。

金融落地展望:从试验灶台到全城招牌

美食联盟的试验在几家店里大获成功,消息传开,全城的餐厅都想加入。可在推广途中,问题也接踵而至:小面馆的客流记录太少,数据格式跟大餐厅对不齐;有店网络不稳定,每轮通信要等半天;还有人担心——联盟越做越大,信任怎么保证?这些也正是联邦学习金融落地面临的真实挑战。

从应用场景看,联邦学习在金融领域已经形成一张清晰的图谱。信贷风控是最成熟的场景:多家银行横向联邦联合建模,提升信用评分卡的效果;反欺诈紧随其后:不同机构共享「欺诈模式」而非「欺诈名单」,让电诈、团伙骗贷的识别更敏锐;反洗钱与精准营销也在快速落地。某保险集团与银行合作,用纵向联邦融合保单数据与资金流水数据,将高价值客户的识别准确率提升了 22%。

但挑战同样真实:金融各机构的数据分布高度异构(non-IID),A 银行的客户画像与 B 银行差异巨大,简单的加权平均会拖慢收敛;跨机构通信开销大,训练一轮可能要等数小时;此外,联邦学习的激励机制、参与方之间的信任与合规审计,都还是未完全解决的课题。从技术趋势看,联邦学习正与区块链结合形成「可信联邦」,让参数更新的贡献可记录、可审计;与差分隐私结合,在聚合层面再加一层噪声保护;未来还会与大型语言模型结合,探索「数据不出域」的行业大模型训练范式。

美食联盟的野心不止于此:他们打算把《城市美食秘籍》变成一部不断生长的「活菜谱」,每家店都是作者,也是受益者。联邦学习的未来同样如此——从单点试验到全行业基础设施,数据孤岛终将连成群岛,而每座岛上的宝藏,始终只属于岛主自己。

C=∑t=1R 2K ∣w(t)∣\displaystyle C = \sum_{t=1}^{R}\, 2K\,|\mathbf{w}^{(t)}|
这段公式是说:整个联盟训练 R 轮的通信总开销,等于「参与方数量 × 每轮参数大小 × 双向传输 × 轮数」的乘积——这也是联邦学习最昂贵的成本账单。
  1. 通信总量 C整个联邦训练过程中网络传输的总字节数,是衡量联邦学习工程成本的核心指标。
    CC
  2. 联邦轮次 R训练总共进行的「下发-训练-上传」循环次数,类似美食联盟迭代改良菜谱的轮数。
    ∑t=1R\sum_{t=1}^{R}
  3. 参与方数量 K 与双向传输 2每轮中服务器向 K 家银行下发参数、K 家银行再上传更新,因此通信发生 2K 次。
    2K2K
  4. 参数规模 |w(t)|每轮传输的模型参数量,参数量越大(如大型模型),通信账单越惊人,这也是联邦学习常配合模型压缩的原因。
    ∣w(t)∣|\mathbf{w}^{(t)}|

AI 应用场景

跨银行联合反欺诈

阶段:模型训练与隐私保护阶段

解决的问题:单家银行的欺诈样本往往只有几千条,且欺诈模式高度趋同(同一团伙可能在多家银行作案,但各家只看到片段)。传统方式要么各家独立建模导致模型漏检率高,要么尝试集中数据却触碰客户隐私红线。联邦学习让多家银行在不共享客户名单和交易明细的前提下,联合训练一个反欺诈模型,让「团伙画像」在加密的梯度交换中被隐性共享。

具体案例:某省 12 家农商行基于 FATE 平台搭建横向联邦反欺诈系统,各家银行本地保留交易流水,只上传加密后的梯度更新。上线三个月后,团伙欺诈识别的召回率相比单行模型平均提升了 27%,而数据合规部门全程零风险报备。

银行 × 电商纵向风控

阶段:特征工程与联合建模阶段

解决的问题:银行有借贷违约标签但缺乏消费行为特征,电商有丰富的购买记录但不知道谁最终违约。传统做法是银行购买外部数据(贵且不实时),或电商把数据脱敏后出售(信息损耗大)。纵向联邦通过加密实体对齐找到双方共同用户,把特征拼接后协同训练,让互补数据在密文域完成融合。

具体案例:某股份制银行与头部电商平台合作,对 300 万共同用户做纵向联邦建模。银行提供逾期标签,电商提供月度消费频次、客单价、品类偏好等特征。联合模型对「薄征信」新客的授信准确率提升 35%,坏账率下降 1.8 个百分点,全程双方原始数据零交换。

联邦征信评分补全

阶段:模型部署与持续迭代阶段

解决的问题:大量新市民、小微企业主没有传统信贷记录,是征信体系的「隐形人」。传统评分卡对这类人群直接拒贷或给极低额度,无法识别其中信用良好者。联邦学习可融合运营商、水电煤气、社保等替代数据源,在数据不出域的前提下补齐信用画像。

具体案例:某消费金融公司与运营商合作,采用纵向联邦学习将通话稳定度、入网时长、缴费行为等特征与消金公司的违约标签结合。模型上线后,以往被拒绝的客户中有 12% 获得了首笔授信,且逾期率控制在 3% 以内,实现了「信用白户」的精准破冰。

Python 演示

python56 行
import numpy as np def sigmoid(z):    return 1.0 / (1.0 + np.exp(-z)) class FedClient:    def __init__(self, name, X, y, lr=0.1):        self.name = name        self.X = X        self.y = y        self.lr = lr        self.w = np.zeros(X.shape[1])     def local_train(self, epochs=5):        for _ in range(epochs):            pred = sigmoid(self.X.dot(self.w))            grad = self.X.T.dot(pred - self.y) / len(self.y)            self.w -= self.lr * grad        return self.w, len(self.y)     def accuracy(self, w):        preds = (self.X.dot(w) > 0).astype(int)        return (preds == self.y).mean() def fed_avg(global_w, updates):    total_n = sum(n for _, n in updates)    new_w = np.zeros_like(global_w)    for w, n in updates:        new_w += w * (n / total_n)    return new_w def main():    rng = np.random.RandomState(42)    n_features = 6    n_clients = 3    clients = []    for c in range(n_clients):        X = rng.randn(80, n_features) * 2.0        X[:, 0] += c        true_w = rng.randn(n_features)        y = (X.dot(true_w) + rng.randn(80) * 0.2 > 0).astype(int)        clients.append(FedClient(f"银行{c+1}", X, y))     global_w = np.zeros(n_features)    for rnd in range(15):        updates = []        for cli in clients:            cli.w = global_w.copy()            w, n = cli.local_train(epochs=4)            updates.append((w, n))        global_w = fed_avg(global_w, updates)        acc = np.mean([cli.accuracy(global_w) for cli in clients])        print(f"第{rnd+1:02d}轮| 全局模型平均准确率: {acc:.4f}") if __name__ == "__main__":    main()
目的:用 numpy 从零实现一个横向联邦学习示例——三家「银行」各自持有本地客户数据,通过 FedAvg 算法协同训练一个逻辑回归信用分类模型,演示「数据不出本地、模型共享更新」的完整流程。
  1. class FedClient定义一个银行客户端,每个银行持有自己的特征矩阵 X 和标签 y,模型参数 w 初始化为零向量。
  2. local_train(epochs=5)银行在本地用梯度下降迭代 5 轮,相当于「老张在自家厨房试做几次改良」,只更新自己的 w。
  3. grad = self.X.T.dot(pred - self.y) / len(self.y)计算逻辑回归的梯度,这是本地训练的核心数学步骤。
  4. return self.w, len(self.y)银行把「改良后的配方」和「样本量」交出去,原始数据 X、y 一步都没有离开本地。
  5. fed_avg(global_w, updates)服务器做联邦平均:按各银行样本量占比加权聚合所有本地更新,得到新全局模型。
  6. cli.w = global_w.copy()每轮开始前,各银行把服务器下发的全局参数复制为本地起点,体现「下发-训练-上传」循环。
  7. np.mean([cli.accuracy(global_w) ...])用全局模型在各银行本地数据上测试平均准确率,可以看到随轮数上升而收敛。

常见误区

误区很多人听说联邦学习强调隐私保护,就以为它是一种加密算法,就像给数据加了个密码锁,锁上就万事大吉。

正解联邦学习本质是一种「分布式协作训练框架」,它解决的是「数据怎么不搬家还一起建模」的问题;而加密(同态加密、安全多方计算、差分隐私)只是框架内部可选的安全组件。好比「中央厨房」是协作模式,投票箱和密码锁都是厨房里的工具——没有工具合作也能进行,只是安全性打折;但只有工具没有协作流程,根本谈不上联邦。

为何常见:联邦学习总是和「隐私保护」绑定宣传,媒体在普及时常把「框架」和「安全技术」混为一谈,导致概念黏连。

误区新手常认为「原始数据不出本地 = 绝对安全」,于是跳过 Secure Aggregation,直接把梯度明文传给服务器。

正解梯度携带大量训练数据的统计信息,恶意服务器可通过梯度反演近乎还原出原始样本。正如老张的心得「多加二钱桂皮」看着无害,但有心人收集 100 条心得就能反推出卤料配方。梯度必须经过 Secure Aggregation 加掩码、或同态加密、或差分隐私扰动后再出域,本地训练只是第一道门,传输保护才是第二道门。

为何常见:对「数据不动模型动」的理解停留在字面,没意识到模型更新本身也在泄露知识。

误区做纵向联邦前,有人一看到双方客户交集只有 30%,立刻判定「样本不够,做不了」。

正解纵向联邦并不需要全部客户重叠,加密实体对齐(PSI)找到交叠子集即可建模。交集越大、特征互补性越强,模型提升越明显,但 20%-30% 的重叠在真实金融场景中已能产生可观增益。类比老张和超市:常来餐厅又常去超市的顾客可能只有三成,但把这三成顾客的画像拼完整,就足以推断全体顾客的消费规律。

为何常见:把「训练集必须完整对齐」的集中式思维带入了联邦场景,忽略了联邦本身就允许在子集上协作。

误区有人看过 FATE 的文档后认为「FATE 就是封装了联邦学习算法的 Python 库」,跟 sklearn 差不多。

正解FATE 是完整的工业级平台:除了 FederatedML 算法库,还包含 FATE-Flow 任务调度、FederatedServing 在线推理、Board 可视化监控、EggRoll 底层计算存储,以及容器化部署工具。类比中央厨房:算法库只是那套锅具,调度是厨师长,看板是质检台,容器化是配送车队——一套锅具撑不起一座中央厨房。

为何常见:初学者通常从算法库的 API 入门,只接触了冰山一角,没看到平台化能力的全貌。

面试题

Q1. 联邦学习的核心原则是以下哪一项?

单选题 · easy

  • A.各机构上传原始客户数据到服务器
  • B.数据不出本地仅交换模型更新← 正确答案
  • C.把所有数据集中到云端统一训练
  • D.使用公开数据集替代机构私有数据

答案:B。联邦学习的灵魂就是「数据不动模型动」——原始数据永远留在本地,参与方之间只交换模型参数或梯度更新。A、C 都是集中式训练的思路,D 用公开数据替代私有数据则丢失了个性化信息。

Q2. 与传统集中式训练相比,联邦学习最大的优势是什么?

单选题 · easy

  • A.训练出的模型精度通常更高
  • B.原始数据不需要离开本地← 正确答案
  • C.训练速度一定比集中式更快
  • D.完全不需要任何中心服务器

答案:B。核心优势在于隐私合规——数据不离开机构即可参与建模。A 精度取决于数据分布,不一定更高;C 通信开销常让训练更慢;D 大多数联邦框架仍需服务器做聚合协调。

Q3. 联邦平均算法 FedAvg 中,服务器聚合的对象是什么?

单选题 · easy

  • A.客户端本地持有的原始数据集
  • B.客户端本地更新后的模型参数← 正确答案
  • C.客户端训练时所使用的超参数
  • D.客户端加密之后的样本标签

答案:B。FedAvg 的流程是客户端本地训练后上传模型参数,服务器按数据量加权平均得到新全局模型。服务器从不接触原始数据集(A 错),超参数(C)是训练配置而非聚合对象,标签(D)更不能出域。

Q4. 横向联邦学习适用的典型场景是?

单选题 · mid

  • A.特征维度相同而样本重叠较少← 正确答案
  • B.样本重叠较多而特征互相补充
  • C.数据全部位于单一机构内部
  • D.需要共享原始样本和完整标签

答案:A。横向联邦把数据「水平切开」,各方特征列一致、样本行不同——好比两家川菜馆菜单相同、客人不同。B 是纵向联邦的适用场景;C 不需要联邦;D 违背联邦的隐私前提。

Q5. 纵向联邦学习中「加密实体对齐」主要解决什么问题?

单选题 · mid

  • A.如何压缩模型参数实现高效传输
  • B.保护隐私的前提下找到共同用户← 正确答案
  • C.如何加密模型的反向传播过程
  • D.如何平衡各参与方之间的算力

答案:B。纵向联邦的前提是双方样本重叠、特征互补,因此第一步需要在互不暴露完整客户名单的前提下找到交集用户。PSI(隐私保护集合交集)协议正是为此设计。A、C、D 与对齐无关。

Q6. 纵向联邦学习的成立条件是?

单选题 · mid

  • A.各方特征维度必须完全相同
  • B.样本重叠较大且特征互相补充← 正确答案
  • C.各方拥有的样本完全相互独立
  • D.仅允许其中一方拥有数据标签

答案:B。纵向联邦像餐厅拼顾客画像:同一批顾客(样本重叠),餐厅知道口味、超市知道购买力(特征互补)。A 是横向联邦的条件;C 样本独立则无法对齐;D 标签分布不是硬性限制。

Q7. Secure Aggregation 中掩码能够被最终消除的根本原因是什么?

单选题 · hard

  • A.成对掩码在总和运算中相互抵消← 正确答案
  • B.服务器持有所有参与方的私钥
  • C.掩码使用 RSA 公钥算法加密
  • D.参与方上传梯度前先做数据脱敏

答案:A。参与者两两协商随机掩码 s_{i,j},一方加上、另一方减去,全部上传值求和时正值负值成对抵消,净效果为零。这正是「匿名投票箱」的原理。B 若服务器持有私钥则隐私尽失;C 公钥加密不是掩码机制;D 脱敏不解决梯度泄露。

Q8. 关于 FATE 平台,下列说法正确的是?

单选题 · hard

  • A.FATE 只是一个单纯的算法封装库
  • B.FATE 内置联邦迁移学习能力← 正确答案
  • C.FATE 不提供任何可视化监控功能
  • D.FATE 中同态加密只用于横向联邦

答案:B。FATE 包含 FederatedML 算法库、FATE-Flow 调度、FederatedServing 推理和 Board 可视化等完整平台组件,并支持横向、纵向与联邦迁移学习。A 忽略调度与监控模块;C 的 Board 恰是做可视化;D 的同态加密在纵向联邦的梯度交换中同样关键。

Q9. 以下哪些属于联邦学习在金融领域的典型应用场景?

多选题 · mid

  • A.多家银行联合构建反欺诈模型← 正确答案
  • B.跨机构共享数据训练信贷风控← 正确答案
  • C.单家银行内部生成日常统计报表
  • D.银保合作识别可疑交易模式← 正确答案

答案:ABD。反欺诈(A)、信贷风控(B)、反洗钱(D)都天然适合联邦学习——多方数据互补但隐私敏感。C 是单机构内部任务,数据无需跨域,用不上联邦学习。

Q10. Secure Aggregation 能够防范哪些隐私风险?

多选题 · mid

  • A.防止服务器窥探单个客户的梯度← 正确答案
  • B.防止外部窃听者还原单方的更新← 正确答案
  • C.提高模型在每轮迭代中的收敛速度
  • D.完全消除客户端与服务器之间的通信

答案:AB。Secure Aggregation 通过成对掩码让服务器和外部窃听者只能看到所有参与方梯度的总和,无法还原任何单方更新(A、B 正确)。它是隐私保护机制,与收敛速度(C)和通信量(D)无关——通信依然存在,只是内容被保护。