你想象过这样的场景吗?小区里有个“有心人”,每天晚上站在楼下,观察哪几户阳台亮灯。他看得久了,就能总结出规律:凡是亮灯时窗帘带花纹的,大概率是房东自住;凡是熄灯后手机屏幕还亮着的,大概率是租客熬夜刷剧。有一天他指着一扇窗说:“这家主人今天不在家,白天没人晒被子。”——没进屋,却猜中了屋里的情况。 AI 模型也有类似的“亮灯规律”。一个训练好的分类模型,在接受“这张图是猫还是狗”的提问时,会给出一个置信度分数——相当于“我有多确定”。研究者发现:模型对训练集里见过的样本,往往给出更高、更稳定的分数;对没见过的样本,分数则相对犹豫。于是有攻击者动起了脑筋:我只管问模型问题、记录分数,就能反推出“这条数据有没有参与过你的训练”。这种攻击,就叫成员推断攻击(Membership Inference Attack, MIA)——它不偷数据本身,而是偷一个“是不是”的答案。 本文会用“盯窗户的人”这个比喻,带你一步步看懂成员推断攻击的原理、流程、评估方法,以及我们该如何把窗帘拉上(防御)。
对 AI 从业者而言,理解成员推断攻击是入门 AI 隐私安全的必修课。它能帮你评估模型是否过度记忆了训练数据,也是差分隐私等防御手段效果的直接标尺。
可视化演示
展示训练集与测试集样本的置信度分布差异,模拟攻击者利用阈值判断成员资格的过程,以及差分隐私防御效果。
本节配有交互动效(进入视口后自动加载,约 3KB)。
置信度分布差异 训练集样本高置信度聚集右侧 测试集样本低置信度聚集左侧 阈值τ区分成员与非成员 过拟合导致置信度差异是攻击核心信号
攻击场景
先回到“盯窗户的人”的故事。那个小偷其实有一个朴素的前提:他只能站在楼下看,不能进屋翻。对应到 AI 世界里,攻击者的“楼下”就是模型对外开放的查询接口——比如你上传一张图片,模型返回“猫 78%、狗 22%”这样的置信度结果。攻击者没有训练数据、没有模型参数,只有这个接口,这被称为黑盒攻击。
在这个前提下,攻击者想问的问题是:“某一条数据,到底有没有参加过你的训练?”比如他在社交平台上看到一张照片,怀疑它被用来训练过某个人脸识别模型。只要能确认这一点,就坐实了“我的隐私进了你的模型”,甚至可能牵出数据泄露链条。
这种攻击之所以可怕,是因为它不需要破解任何加密。它只是反复地提问、记录、统计,像一个耐心的观察者,硬生生从答案的蛛丝马迹里还原出“成员名单”。业内把这种攻击归类为隐私推理攻击,和模型窃取、属性推断并称三大黑盒威胁。
置信边界
为什么“灯光规律”会存在?因为模型天生有过拟合倾向。训练时,模型把训练样本的细节(甚至噪声)都记住了;对这些“老朋友”,它给出预测时格外自信,置信度分数贴近 1。而对没见过的新样本,它没那么笃定,分数常常在 0.5 到 0.8 之间徘徊。
如果统计所有训练样本和所有测试样本的置信度,会画出两条分布曲线:训练曲线偏向右方(高置信度),测试曲线偏左。两条曲线之间的空隙,就是攻击者可利用的置信边界。边界越宽,攻击者越容易设定一个阈值:高于阈值判为“训练成员”,低于阈值判为“非成员”。
这就是成员推断攻击的核心信号——置信度分数。模型返回的每一个分数,都像窗户里透出的一束光;而大量分数聚合起来,就勾勒出“训练住户”和“陌生访客”的轮廓。
打个比方,老师出了一套题:训练阶段反复讲过其中一部分题目,考试时学生(模型)遇到讲过的题就答得又快又准(高置信度),遇到没讲过的题就犹豫(低置信度)。一个“有心人”只看答题速度,就能猜出哪些题是讲过的——这就是置信边界。
- 事件定义$y_{pred}$ 表示模型预测的类别,$y_{true}$ 表示真实标签,两者相等代表预测正确。
- 条件区分$x \in D_{train}$ 与 $x \in D_{test}$ 分别代表“样本属于训练集”与“样本属于测试集”,这是两个完全不同的条件世界。
- 概率比较左侧是训练成员条件下的预测正确概率,右侧是测试条件下的概率。由于过拟合,左侧通常显著更高。
影子模型
攻击者没有目标模型的训练数据,怎么知道它的“习惯边界”在哪?聪明的办法是:自己养一个“替身”。攻击者先从网络上扒一些同类型数据(比如同样是人脸照片),构成影子训练集;用这些数据训练一个结构相同或相似的模型,称为影子模型(Shadow Model)。
影子模型的目标不是表现好,而是行为像。攻击者用同样的查询去问影子模型和目标模型,如果两者返回的置信度分布很接近,就说明影子模型成功逼近了目标模型的行为模式。这时,攻击者可以放心地用影子模型的置信度分布,去标记“成员”与“非成员”的边界。
这个思路本质上是一种迁移:把从替身身上学到的规律,搬到目标身上。就像你从一个人的双胞胎兄弟那里摸清了他的生活习惯——不用直接跟踪他本人,也能猜个八九不离十。
影子模型就像小偷请来的“观察员”:自己不敢靠近目标住户,就找一个住在隔壁小区、户型一模一样的朋友,记录朋友家的灯光明暗规律,然后推断目标住户的作息。行为模式接近,结论就有参考价值。
- 影子训练集$S$ 表示攻击者自建的数据集,$x_i$ 是样本,$y_i$ 是标签。它来自公开数据或生成数据,与真实训练集同分布但不同源。
- 条件概率$f_{\theta}(y_i \mid x_i)$ 是影子模型在参数 $\theta$ 下,对样本 $x_i$ 预测为 $y_i$ 的概率。对数后取负,是为了把最大化问题转成最小化问题。
- 求和优化对所有影子样本求和,越小说明模型越“懂”这批数据。攻击者追求的不是准确率最高,而是置信度分布与目标模型相似。
攻击流程
完整的攻击流程可以拆成四步,像一条流水线。
第一步是查询收集。攻击者准备一批候选样本,逐个发给目标模型,记录返回的置信度分数。第二步是成员标签构造——攻击者知道影子模型训练集里有哪些样本,于是把“影子训练集中的样本”标为成员、“影子测试集中的样本”标为非成员,给每个置信度分数贴上“是不是”的标签。第三步是攻击模型训练,把“置信度分数 + 标签”喂给一个简单的二分类器(如逻辑回归),让攻击模型学会“多高的分数更像成员”。第四步是新样本推断——拿到目标模型对一个未知样本的置信度后,攻击模型直接输出“成员/非成员”的判断。
这四步流程,像极了小偷的作案手法:先记录整栋楼的灯光数据(查询收集),再用自家朋友那栋楼的数据标注“常住/短租”(成员标签),接着总结出“窗帘带花纹者常住”的规律(攻击模型训练),最后看见一扇新窗户就能下判断(新样本推断)。
- 置信度输入$f(x)$ 是目标模型对样本 $x$ 的预测输出(通常是 softmax 之后的概率向量)。攻击者只拿到这个向量,拿不到内部参数。
- 攻击模型映射$g(\cdot)$ 把置信度向量映射成一个标量成员得分。$g$ 可以是逻辑回归、小神经网络等任何二分类模型。
- 阈值判定$\mathbb{1}[\cdot]$ 是指标函数,当括号内条件为真时取 1(成员),否则取 0(非成员)。$\tau$ 是攻击者根据影子模型调好的阈值。
度量标尺
怎么衡量一次成员推断攻击的效果?最直接的指标是攻击成功率(Attack Success Rate):攻击模型判断正确的样本数除以总样本数。如果成功率接近 50%,说明攻击和抛硬币差不多,模型的隐私保护良好;如果冲到 90%,说明模型几乎把训练集“背”了下来,隐私风险极高。
攻击成功率之所以重要,是因为它直接反映了模型的过拟合程度。模型把训练样本记得越牢,训练集与测试集的置信度分布就分得越开,攻击者就越容易设置阈值。换句话说,攻击成功率是过拟合的一个外显指标。研究者甚至用攻击成功率来反向诊断模型的泛化能力:攻击越容易成功,说明模型泛化越差。
这就像“亮灯规律”的强弱可以衡量一栋楼的隐私防护水平——如果整栋楼所有住户的灯光规律大同小异,小偷就无从下手;如果每户的灯光都极有辨识度,小偷一猜一个准。攻击成功率就是那个“猜中率”。
你可以把这条公式理解成“小偷命中率公式”:如果常住户和访客的灯光模式毫无区别,小偷再怎么观察也白搭,命中率就是一半一半;如果常住户的灯光模式异常统一,小偷一抓一个准。
- 准确率定义$\hat{m}_i$ 是攻击模型对第 $i$ 个样本的预测标签,$m_i$ 是真实标签,两者相等计 1,全部样本取平均。
- 分布距离$\operatorname{TV}(P_{train}, P_{test})$ 表示训练集置信度分布与测试集置信度分布的总变差距离,取值范围 $[0,1]$。
- 线性关系当两个分布完全重合时,$TV=0$,攻击成功率等于 50%(随机猜测);完全分离时,$TV=1$,成功率接近 100%。
联邦风险
联邦学习常被宣传为“数据不出本地,隐私安全”,但成员推断攻击恰恰击穿了这层幻想。在联邦学习里,各参与方本地训练模型,只把梯度或模型参数上传到服务器。然而,梯度本身就是数据的“提词器”——它对参与训练的样本有天然的偏向。
举个具体情境:某医院用本地病历微调模型,上传的梯度里会隐含“哪些样本被用过”的信息。恶意参与者可以故意送一些精心构造的数据参与联邦,再通过观察聚合前后的梯度变化,判断某个目标样本是否在别人的本地数据里。这种攻击叫成员对齐分析,原理与中心化场景如出一辙,只是信号从置信度变成了梯度。
联邦场景还有一个放大器:局部过拟合。各参与方数据量少、分布偏,本地模型很容易把自己的小数据集“背下来”,上传的梯度因此携带更强烈的成员信号。研究者发现,在联邦学习的早期轮次或参与方数据极不均匀时,攻击效果甚至比中心化场景更显著。
回到窗帘比喻:联邦学习就像每家住户把“自家灯光模式”汇总成一份统计报告交给物业。大家以为报告里没有具体数据,但物业只要对比不同报告之间的细微差异,就能推断出某户人家当周有没有亮过灯——梯度就是那盏灯。
- 本地梯度$\nabla L_i(\theta)$ 是第 $i$ 个参与方在全局参数 $\theta$ 上计算的梯度,它由本地损失函数求导而来。
- 批次求和$B_i$ 是参与方本地的一个 mini-batch,梯度是批次内每个样本损失梯度的加和。批次越大,信号越平均;批次越小,个体痕迹越明显。
- 近似等号$\approx$ 表示忽略正则化项后的近似。攻击者拿到这个向量后,可统计其方向分布,判断批内是否包含目标样本。
防御对策
既然攻击者靠“过度自信”的置信度信号得手,防御的核心思路就是削弱信号。主要有四条路径。
差分隐私(Differential Privacy)是目前理论基础最坚实的防线。它在训练过程中给梯度添加精心校准的噪声,让攻击者无法分辨某个具体样本是否参与了训练。正则化则从源头抑制过拟合——模型记得越少,成员信号越弱。常用的 dropout、权重衰减都能显著降低攻击成功率。输出扰动更直接:模型返回给用户的置信度分数先被加噪或取整,破坏攻击者赖以统计的精细信号。对抗训练则是让模型在训练时接触“模拟攻击”,在对抗中练出更稳健的决策边界。
差分隐私就像给每家窗户装上了磨砂玻璃。你能看到屋里亮着灯(知道大概情况),但完全看不出窗帘花纹、人影轮廓这些“成员特征”。代价是屋里的人看外面也模糊了一些——这就是隐私与可用性的权衡。
- 输出函数$f(x)$ 是原始模型对样本 $x$ 的置信度输出。攻击者看到的一切信号都源于它。
- 拉普拉斯噪声$\operatorname{Lap}(\cdot)$ 表示服从拉普拉斯分布的随机噪声,$\Delta f$ 是相邻数据集上输出变化的最大值(敏感度)。
- 隐私预算$\varepsilon$ 是隐私预算参数。$\varepsilon$ 越小,噪声越大,两个相邻数据集(仅差一条样本)的输出越难区分,成员推断越难成功。
前沿展望
攻击与防御的攻防战远未结束。当前研究有四个前沿方向值得关注。
隐私计算平衡——如何在保护隐私的同时保持模型性能,学术界在自适应噪声、隐私预算分配上持续发力。组合隐私核算——现实中一个模型往往被查询成千上万次,每次查询消耗一点隐私预算,如何精确核算总消耗成了新课题。稳健审计协议——企业需要一套标准化的方法验证自己模型的隐私风险,不能只听厂商自说自话。攻击防御演进——新的攻击手段(如基于自编码器的攻击)不断涌现,防御方也在用自动化搜索的方式寻找更鲁棒的架构。
这就像小偷的观察行为本身也有“成本”:他每多盯一晚,暴露自己的风险就增加一分。防守方要做的就是精确核算“小偷盯多少晚才能凑齐信息”,从而在窗户设计上加足防护。
- 组合次数$k$ 代表对模型发起查询或训练更新的次数。查询越多,信息累积越多。
- 两段式开销第一项 $\sqrt{ 2 k \ln(1 / \delta) } \cdot \varepsilon$ 是“高概率区间”的开销,第二项 $k \varepsilon (e^{\varepsilon} - 1)$ 是“期望区间”的开销。
- 总预算$\varepsilon_{total}$ 是 $k$ 次操作后的累计隐私预算。它提醒设计者:隐私保护是消耗品,需精打细算。
AI 应用场景
场景一:机器学习即服务(MLaaS)平台的隐私风险审计
阶段:模型部署与运维
解决的问题:企业在云端部署人脸识别、信用评分等模型后,用户可以通过 API 反复查询。传统监控只关注响应延迟和 QPS,完全看不见“查询模式里潜伏着成员推断攻击”。利用成员推断攻击方法,企业可以主动发起模拟攻击,量化模型的隐私泄露风险。
具体案例:某金融科技公司上线了贷款审批模型,合规部门每月运行一次成员推断攻击评估。他们取一部分用户数据(分别作为“模拟成员”与“模拟非成员”),通过 API 获取置信度,训练攻击模型,得出攻击成功率。当成功率超过 70% 时,自动触发告警,要求算法团队对模型做差分隐私微调或加正则。
场景二:联邦学习系统的隐私合规自查
阶段:联邦训练中的通信与聚合
解决的问题:联邦学习只传梯度不传数据,看似安全,但恶意参与者可能从梯度中推断其他参与方的成员信息。传统做法完全不设防,等同于裸奔。
具体案例:某医疗联盟的联邦学习项目中,平台方引入成员推断攻击作为“红队测试”。他们模拟恶意参与方上传探测梯度,检查能否成功判断某个病人的数据是否在另一家医院参与训练。测试结果直接决定系统的差分隐私噪声参数是否上调。
场景三:数据发布前的成员暴露评估
阶段:数据治理与发布
解决的问题:企业想公开一个训练好的模型(开源权重)供社区使用,但担心训练数据中的敏感个体被反推出来。传统做法只能靠人工抽检,覆盖不全。
具体案例:某社交平台计划开源其推荐模型权重。发布前,AI 安全团队用成员推断攻击对模型进行全面体检:随机抽取一批历史用户样本做攻击测试,计算攻击成功率和隐私风险分级,并出具报告。只有风险降至阈值以下,模型才被允许发布。
Python 演示
import numpy as npfrom sklearn.datasets import make_classificationfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score def extract_confidences(model, X): proba = model.predict_proba(X) return proba.max(axis=1) def threshold_attack(train_conf, test_conf): threshold = (train_conf.mean() + test_conf.mean()) / 2.0 train_pred = (train_conf >= threshold) * 1 test_pred = (test_conf < threshold) * 1 tp = train_pred.sum() tn = test_pred.sum() total = len(train_conf) + len(test_conf) return (tp + tn) / total, threshold def dp_defense(conf, epsilon, sensitivity=1.0): noise = np.random.laplace(0.0, sensitivity / epsilon, size=conf.shape) return np.clip(conf + noise, 0.0, 1.0) def run_attack(model, X_train, X_test): train_conf = extract_confidences(model, X_train) test_conf = extract_confidences(model, X_test) acc, thr = threshold_attack(train_conf, test_conf) return acc, thr, train_conf, test_conf def simulate(epsilon=None): X, y = make_classification(n_samples=1200, n_features=8, n_informative=5, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42) model = LogisticRegression(C=1e-2, max_iter=2000) model.fit(X_train, y_train) if epsilon is not None: model = LogisticRegression(C=1e-6, max_iter=2000) model.fit(X_train + np.random.laplace(0.0, 1.0 / epsilon, X_train.shape), y_train) return run_attack(model, X_train, X_test) if __name__ == "__main__": acc_plain, thr_plain, _, _ = simulate(epsilon=None) print("[attack] plain model success rate = {:.2f}%".format(acc_plain * 100)) for eps in [8.0, 2.0, 0.5]: acc_dp, thr_dp, _, _ = simulate(epsilon=eps) print("[attack] model with eps={} success rate = {:.2f}%".format(eps, acc_dp * 100))
extract_confidences提取每个样本的最大预测概率,即“模型有多自信”。threshold_attack用训练/测试置信度均值的中点做阈值,高于阈值为成员,低于为非成员。dp_defense用拉普拉斯噪声扰动置信度,破坏攻击者依赖的精细信号。simulate训练一个强正则模型(低过拟合),再分别用不同隐私预算加噪训练,对比攻击效果。np.random.laplace生成拉普拉斯噪声,这正是差分隐私中拉普拉斯机制的实现。
常见误区
误区“成员推断攻击成功率越高,说明这个模型分类效果越好,因为它对训练数据记得牢。”
正解这个理解反了。攻击成功率反映的是模型“区分训练样本和陌生样本”的能力,本质上衡量的是过拟合程度。过拟合越严重,模型泛化能力越差,对新样本的预测越不可靠。攻击成功率 90% 不是夸模型“记得牢”,而是警告“它背答案,没学会解题”。
为何常见:人们习惯认为“对数据熟悉=性能好”,忽略了机器学习和人类学习的本质差异。
误区“攻击者需要下载模型权重,分析每一层的参数,才能判断成员身份。”
正解标准的成员推断攻击是完全黑盒的。攻击者只需要一个查询接口——输入样本、获得置信度分数——就能训练影子模型并完成攻击。模型参数在云端、权重不公开,都无法阻止这种攻击。这也是它威胁范围广的原因。
为何常见:把成员推断攻击和模型窃取(需要参数)混为一谈,低估了黑盒攻击的威力。
误区“加了差分隐私的模型,噪声太大,基本不能用了。”
正解差分隐私的本质是在隐私和可用性之间取平衡。在小数据、极小的 $\varepsilon$ 下,噪声确实会严重损害精度;但在大数据规模下,合理的 $\varepsilon$(比如 5-10)可以用很小的精度损失换取很强的隐私保护。而且除差分隐私外,正则化、输出扰动等手段也有不错的防护效果。
为何常见:看到“加噪声”三个字就想象出满屏雪花,忽略了噪声尺度是可以精确控制的。
误区“联邦学习不上传原始数据,只传梯度,所以不可能泄露成员信息。”
正解梯度是数据的函数,隐含着数据分布信息。恶意服务器或参与方可以通过梯度分析推断成员身份,研究已多次证明联邦场景下的成员推断攻击比中心化更隐蔽。联邦学习解决了“数据传输”问题,但没有解决“模型记忆”问题。
为何常见:把“数据不出本地”等同于“信息不出本地”,忽略了模型本身会携带数据痕迹。
误区“只要做了防御,攻击者看到的置信度和真实置信度就完全一样了,攻击自然就失败了。”
正解防御的目标不是让输出“不可见”,而是切断“统计信号到成员判断”的因果链。差分隐私或输出扰动后的置信度仍有一定区分度,但噪声把区分度压到了攻击者无法稳定利用的水平。这就像磨砂玻璃:还是能看出亮灯,却看不出窗帘花纹。
为何常见:把“防御成功”误认为“信号消失”,其实防御的本质是“信号弱于噪声”。
面试题
Q1. 成员推断攻击的核心目标是判断什么?
- A.模型的训练数据集大小
- B.某样本是否参与模型训练← 正确答案
- C.模型参数的具体数值
- D.模型的推理延迟高低
答案:B。成员推断攻击回答的是“这条数据在不在训练集里”这个二值问题,即选项 B。它不关心数据规模(A)、模型参数(C)或性能指标(D)。
Q2. 成员推断攻击最典型的攻击前提是什么?
- A.需要获取模型全部权重
- B.需要拿到训练集原文
- C.只需要模型查询接口← 正确答案
- D.需要控制训练服务器
答案:C。标准 MIA 是黑盒攻击,只需要向模型发送查询并获得置信度输出,即选项 C。权重、训练集和服务器都不是必要条件。
Q3. 攻击者利用的主要“信号”是什么?
- A.训练数据的哈希值
- B.模型输出的置信度差异← 正确答案
- C.模型的内存占用
- D.模型的网络结构
答案:B。模型对训练样本的置信度系统性高于陌生样本,攻击者利用这个置信度差异(选项 B)来区分成员与非成员。
Q4. 影子模型在攻击流程中的作用是什么?
- A.直接输出目标模型的成员名单
- B.加密攻击者的通信流量
- C.模拟目标模型的行为以归纳判定规则← 正确答案
- D.加速目标模型的训练进程
答案:C。影子模型用攻击者自建的数据逼近目标模型的行为模式,帮助归纳置信度阈值(选项 C)。它不直接给出名单(A),也不负责加密或加速。
Q5. 下列哪些因素会增加成员推断攻击成功率?
- A.模型过拟合严重← 正确答案
- B.训练集与测试集置信度分布分离大← 正确答案
- C.模型使用差分隐私训练
- D.模型对训练样本高度“自信”← 正确答案
答案:ABD。过拟合(A)、分布分离大(B)和训练样本高置信度(D)都扩大了成员信号的强度,提升攻击成功率。差分隐私(C)是防御手段,会降低攻击成功率。
Q6. 攻击成功率接近 50% 时,最合理的解读是什么?
- A.攻击模型完美地随机猜中了一半
- B.模型几乎没有泄露成员信息← 正确答案
- C.目标模型被攻击者完全控制
- D.训练数据量恰好是测试数据量一半
答案:B。50% 是随机猜测的基线。攻击成功率贴近基线,说明训练/测试置信度分布几乎重合,攻击者无法利用稳定信号,即模型隐私保护良好(选项 B)。
Q7. 以下哪些措施可以有效防御成员推断攻击?
- A.使用差分隐私技术加噪← 正确答案
- B.对模型输出置信度做截断处理← 正确答案
- C.增大模型参数量并延长训练轮次
- D.在训练中增加强正则化← 正确答案
答案:ABD。差分隐私(A)、输出截断(B)和正则化(D)都能削弱成员信号。增大参数量并延长训练(C)会加深过拟合,反而放大风险。
Q8. 差分隐私中,隐私预算 $\varepsilon$ 的取值与隐私保护强度呈什么关系?
- A.$\varepsilon$ 越大保护越强
- B.$\varepsilon$ 越小保护越强← 正确答案
- C.$\varepsilon$ 与保护强度无关
- D.$\varepsilon$ 等于攻击成功率
答案:B。$\varepsilon$ 越小意味着加入的噪声越大,相邻数据集输出越难区分,隐私保护越强(选项 B)。但 $\varepsilon$ 过小会破坏模型可用性,所以需要权衡。
Q9. 在联邦学习场景中,成员推断攻击的主要信号来源是什么?
- A.参与方上传的梯度← 正确答案
- B.参与方的网络 IP 地址
- C.本地数据集的加密密钥
- D.聚合服务器的日志内容
答案:A。梯度是本地数据的函数,隐含着哪些样本被参与训练的信息,恶意方可通过梯度分析发起攻击(选项 A)。IP、密钥、日志都不是模型层面的信号。
Q10. 关于攻击成功率与过拟合的关系,以下说法正确的是?
- A.攻击成功率可作为过拟合的外在指标← 正确答案
- B.训练与测试置信度分布差异越大,攻击越容易成功← 正确答案
- C.降低过拟合可以明显降低攻击成功率← 正确答案
- D.攻击成功率高说明模型泛化能力一定强
答案:ABC。攻击成功率与训练/测试分布的 TV 距离正相关,故可作为过拟合指标(A、B)。正则化等降低过拟合的手段能显著降低攻击成功率(C)。攻击成功率高恰恰说明泛化能力弱,而非强(D 错误)。