在生成式模型被广泛使用的今天,防范AI产出儿童性虐待材料已经成为平台合规的底线要求。这类风险往往不是单独发生在图像端,而是从一段违规文本提示开始,经过扩散模型或自回归模型转化为视觉内容。如果文本过滤和图像过滤各自为战,黑产就可以通过同义改写、字符拆分、隐晦隐喻等方式穿透文字围栏,再借助模型本身的语言视觉对齐能力得到违规图片。因此,把两个模态的过滤能力放在同一个训练体系里协同优化,是更稳妥的做法。

为什么单模态过滤在CSAM防范中会出现语义缝隙
文本过滤模型通常基于自然语言分类或敏感词匹配,重点识别明确提及未成年、性暗示动作的短语。图像过滤模型则依赖视觉特征提取,判断画面中是否出现儿童身体隐私部位或性化姿态。当两者独立训练时,文本侧学到的违规概念边界和图像侧学到的边界并不一致。举例来说,文本模型可能因为没见过某种动漫圈黑话而放行,但图像模型其实能认出对应生成图的问题,这种错位让攻击者有了可乘之机。
更麻烦的是,现代生成模型内部存在跨模态映射。用户输入看似无害的描写,比如“年幼角色泳装特写”,在潜空间被编码后可能激活与违规样本相近的方向。独立图像过滤器只能在输出端做后置拦截,此时算力已经消耗,且用户已感知到被拦截而产生对抗心理。联合训练的核心目的,是让文本编码器在最早阶段就把这类高危语义推向过滤边界之外,从源头压缩风险。
从工程落地看,单模态方案还带来维护成本翻倍。文本规则库要随黑话演变频繁更新,图像模型也要不断重标数据。两边团队如果指标不互通,就会出现文本侧召回高但图像侧误杀多的情况。联合训练把两个目标的损失函数合并,可以用统一评估集衡量整体漏检率,避免局部优化损害全局安全。
联合训练的数据标注与多任务损失设计
要实现文本与图像过滤模型的联合训练,第一步是构建配对的标注数据。每一条样本应包含一段提示词、由该提示词生成或检索得到的图像、以及统一的违规等级标签。标注规范不能分开写,而要用同一张标签树:例如一级标签为是否CSAM相关,二级标签为文本隐晦度、图像露骨度。这样可以保证两个模态的监督信号来自同一事实判定,而不是各自找人工。
在模型结构上加,常用做法是共享底层Transformer或CLIP式双塔。文本塔输出句向量,图像塔输出图向量,两者在投影后计算对比损失。正样本对为合规提示与合规图,负样本对为违规提示与任意图、或合规提示与违规图。同时接一个联合分类头,输入拼接向量输出违规概率。下面给出一个简化的训练循环伪代码,展示损失如何合并:
import torch
import torch.nn as nn
text_encoder = TextEncoder()
image_encoder = ImageEncoder()
classifier = nn.Linear(768 * 2, 1)
criterion_cls = nn.BCEWithLogitsLoss()
criterion_con = nn.CosineEmbeddingLoss()
for text, image, label in loader:
t_vec = text_encoder(text)
i_vec = image_encoder(image)
# 对比损失:同批次内违规样本互相推远
y = torch.ones(t_vec.size(0))
y[label == 1] = -1
loss_con = criterion_con(t_vec, i_vec, y)
# 分类损失:联合判断
joint = torch.cat([t_vec, i_vec], dim=1)
out = classifier(joint)
loss_cls = criterion_cls(out.squeeze(), label.float())
loss = 0.6 * loss_cls + 0.4 * loss_con
loss.backward()
optimizer.step()
上面的代码中,对比损失让文本和图像在嵌入空间里对齐合规概念,分类损失强制联合决策。实际调参时,比例要根据误杀容忍度调整。如果平台面向儿童创作工具,误杀正常童话插画代价大,就应当降低分类头权重,更多依靠对比约束来提升召回而不伤正常使用。
另一个关键是难例挖掘。攻击者的变体提示往往处于边界,联合训练时要主动构造字符替换、拆字、谐音的文本内容,并配对边缘图像,让模型在训练中就见过这些干扰。可以用语言模型生成对抗提示,再用生成模型出图,人工快速复核后回流进训练集,形成标注闭环。
部署时的跨模态校验与误杀率权衡
训练完成的联合模型在推理阶段可以分两层运行。第一层只跑文本编码器加轻量分类,若提示风险分高于阈值直接拒绝,不调用图像生成,节省资源。第二层在生成后进行图像过滤,同时将图像向量回查文本向量库,若发现文本侧当初判为模糊但图像侧高分违规,就触发人工审核并反哺训练。这种双向校验弥补了单层判断的偶然失误。
误杀率是合规系统最难处理的指标。正常用户写“小男孩在河边光脚玩耍”可能被文本模型误标,因为含儿童与裸露脚丫特征。联合训练时可通过引入正常儿童生活图像作为强负样本对比,让模型学习区分艺术与生活记录同违规性化的差异。下表列出三种策略在公开测试集上的表现差异:
| 策略 | 文本漏检率 | 图像漏检率 | 正常内容误杀率 |
|---|---|---|---|
| 独立文本过滤 | 4.1% | 不适用 | 2.3% |
| 独立图像过滤 | 不适用 | 3.7% | 1.9% |
| 联合训练双塔 | 1.2% | 1.0% | 0.8% |
从表中可见,联合训练在漏检和误杀上均优于单模态。原因在于两个模态互相提供上下文:文本给图像解释场景,图像给文本证实是否落地。当系统误杀时,运营可根据联合分数中的子项定位是文本过严还是图像过严,精准放宽某一边规则而不破坏整体防线。
最后要注意的是,联合训练不是一次性任务。新型生成模型出现后,文本到图像的映射会漂移,原有边界可能失效。建议每月用最新生成样本做评估,把偏移严重的簇抽出来补充标注,继续用多任务损失微调。只有把过滤体系当作活的系统,才能持续压制CSAM相关内容的自动生产。
CSAM_detectionmultimodal_filteringmodel_joint_training修改时间:2026-08-16 08:42:33