📌 来源声明|本文为个人学习整理笔记,非原创研究 内容基于公开学术论文的精读梳理,核心文献均已下载原文核对:
文献1:A Survey of Defenses against AI-generated Visual Media: Detection, Disruption, and Authentication(ACM Computing Surveys,arXiv:2407.10575v3)
文献2:Synthetic Image Verification in the Era of Generative AI: What Works and What Isn't There Yet(IEEE S&P,arXiv:2405.00196v1)
文献3:Frequency-Aware Attentional Feature Fusion for Deepfake Detection(ICASSP 2023)
文献4:Generative Text Steganography with Large Language Model(ACM MM 2024,arXiv:2404.10229v2)
本文在学习笔记基础上做了结构重排、原理补全与通俗化改写(补充处标 💡,易错点标 ⚠️,重点标 📌),并补充了可运行的代码片段与工程落地建议。 如需转载请注明出处;如有侵权请联系删除。
🧭 导读:这篇解决什么问题
啃完一批论文最容易陷入的状态是:每个字都看懂了,合上文献却说不出体系。
这一整块内容其实串了一条非常清晰的线------AI 生成内容的「攻」与「防」:
第一层:内容已经生成出来了 → 怎么认出来?(被动检测 / 取证)
第二层:能不能让它根本生成不出来?(主动干扰 / 水印)
第三层:把视野从图像换到文本 → 秘密怎么藏进一段话里?(隐写)
第四层:把视野换到模型本身 → 怎么低成本改造一个大模型?(LoRA)
第五层:拿到模型之后 → 怎么把它调教成想要的样子?(推理参数)
这五层不是散的,它们共同回答了一个问题:当生成能力变得人人可得,我们靠什么重建"可信"?
阅读主线:
① 防御全景(被动 vs 主动) ← 建立坐标系
↓
② 合成图像检测与溯源 ← 深入技术细节
↓
③ 一篇具体算法论文 ← 看清楚 SOTA 怎么做
↓
④ 横向对比 + 真实换脸工具 ← 从论文回到现实
↓
⑤ 文本隐写(修改式 / 生成式) ← 换载体
↓
⑥ LLM-Stega 黑盒隐写 ← 换范式
↓
⑦ LoRA 微调 ← 换到模型侧
↓
⑧ API 推理参数 ← 换到调用侧
↓
⑨ 总结 + 知识地图
⚠️ 合规前提 :文中涉及的后门、隐写、注入等技术,仅用于学术研究与防守侧检测(取证分析、内容审核、红队评估)。 将深度伪造技术用于诈骗、诽谤、伪造证件,或将隐写技术用于未授权的隐蔽通信,均属违法。
🗺️ 〇、一页速览
| # | 章节 | 你会拿到什么 |
|---|---|---|
| 1 | 防御全景 | 被动 vs 主动的根本分野 · 检测/干扰/认证三大策略 · 可信性(鲁棒、公平) |
| 2 | 合成图像验证 | 高层伪影 / 低层伪影 / 数据驱动三分法 · 溯源的开集难题 · 阈值标定这个落地杀手 |
| 3 | 空频融合算法 | DCT 频域分解 · 三个注意力模块 · 对比学习正则 · 99.85% ACC 是怎么来的 |
| 4 | 横向对比 | 一张表定位三篇文献 · Deep-Live-Cam 这类真实工具带来的新麻烦 |
| 5 | 文本隐写 | 修改式 vs 生成式 · 零宽字符原理与可运行 demo |
| 6 | LLM-Stega | 白盒→黑盒的范式跃迁 · 关键词集 + 加密映射 + 拒绝采样四步法 |
| 7 | LoRA 微调 | 低秩假设 · 为什么推理零延迟 · peft 可运行代码 |
| 8 | API 参数 | temperature / top_p / 惩罚项 · 三套场景模板 |
| 9 | 总结 | 知识地图 · 十条要点 · 资源清单 |
📌 阅读建议:赶时间直接跳 第 4 章对比表 和 第 9 章知识地图 ;想搞懂"为什么这么分"回 第 1 章。
📕 第一章 · 先立骨架:AI 生成视觉媒体的防御全景

📌 本章基于 文献1 :A Survey of Defenses against AI-generated Visual Media: Detection, Disruption, and Authentication 发表:ACM Computing Surveys(2025)|作者:西安交通大学 沈超、林晨浩团队|arXiv:2407.10575v3
1.1 一句话定位
这是目前覆盖面最全的一篇 AIGC 视觉媒体防御综述。它干的最重要的一件事,是把原本散落各处的研究,塞进了一个统一框架。
这个框架的核心是一条生成流水线:
输入/条件 ──[编码器 E]──> 隐空间嵌入 ──[生成器 G]──> 生成结果 ──[解码器 D]──> 输出媒体
↑ ↑ ↑
└──────── 干扰/水印可插入的三个位置 ────────────────────────────────┘
1.2 被动 vs 主动:事后验钞 vs 出厂防伪
这是全文最值得记住的一组对立概念:
| 被动防御 Passive | 主动防御 Proactive | |
|---|---|---|
| 时机 | 媒体已经生成并传播之后 | 媒体生成之前/生成过程中 |
| 手段 | 检测 Detection | 干扰 Disruption + 认证 Authentication |
| 类比 | 事后验钞------钱已经印出来了,鉴别真假 | 出厂防伪------在造纸/印刷阶段就埋入防伪线 |
| 被动程度 | 永远慢一步,追着生成模型跑 | 抢在前面,但要求你能碰到生成流程 |
| 文献占比 | 约 71%(132 篇) | 干扰 29 篇 + 认证 26 篇 |
💡 为什么这个比例很重要? 学术界 7 成精力在"事后检测",意味着整个领域长期处于追赶状态 ------新模型出来,检测器失效,再训练,再失效。 主动防御论文少,恰恰说明它是还没被充分开垦的方向,也是工程上更有可能破局的方向。
1.3 被动防御:检测(不只是"真/假"二分类)
检测分三层,从粗到细:
① 粗粒度伪造检测(Coarse-grained)
最经典的形态:给一张图/一段视频,输出「真」或「假」。媒体级二分类。
② 细粒度伪造检测(Fine-grained)
这才是现在的研究热点,因为它回答的是"能不能作为证据"的问题:
| 细粒度任务 | 回答什么问题 | 实用价值 |
|---|---|---|
| 伪造定位 | 图像里哪几个像素 被改了?视频里哪几帧被动过? | 法庭举证需要指出篡改区域,不能只说"这是假的" |
| 伪造溯源 / 归因 | 是哪个生成模型 造的?用的是哪套训练数据? | 追责。模型溯源 → 找工具;数据溯源 → 找素材来源 |
| 顺序篡改预测 | 这张图被先后做了哪些操作?能不能还原原图? | 还原操作链,用于取证重建 |
💡 一句话理解"粗 vs 细" : 粗粒度是裁判举牌 (犯规 / 没犯规); 细粒度是出裁判报告(谁、什么时候、哪个部位、怎么犯的、能不能恢复到犯规前)。
③ 检测的可信性(Trustworthiness)------这篇综述最独特的贡献
大部分综述只讲"怎么检测",这篇多问了一句:检测器本身靠得住吗?
| 可信性维度 | 问题 | 后果 |
|---|---|---|
| 鲁棒性 Robustness | 对抗样本能不能绕过?后门攻击能不能失效它? | 加一层人眼看不见的噪声,检测器直接瞎 |
| 公平性 Fairness | 对不同性别、种族、年龄段的人,性能一致吗? | 某个人群的误判率显著偏高 → 算法歧视 |
⚠️ 公平性不是"政治正确",是实打实的工程风险。 一个内容审核系统如果对深色皮肤人群的误报率高 3 倍,上线就会被投诉到下架。
1.4 主动防御之一:干扰(Disruption)
思路:既然你要拿我的图去生成,那我先在图里加点"毒"。
具体做法是向输入 / 条件添加微小的对抗扰动,攻击生成流水线的任一环节(编码器、生成器、解码器):
| 干扰类型 | 效果 | 类比 |
|---|---|---|
| 扭曲干扰 Distorting | 生成结果严重失真,直接不可用 | 让复印机印出来的东西糊成一团 |
| 归零干扰 Nullifying | 生成结果近似原始输入,篡改等于没做 | 让"换脸"操作换完还是原来那张脸 |
💡 典型案例:PhotoGuard、Anti-DreamBooth。 你不想让别人拿你的照片去训练一个"你的形象"的 LoRA,就先给照片加一层对抗扰动------扰动人眼看不见,但 DreamBooth 训练出来的人脸会完全崩坏。
⚠️ 干扰的软肋 :对抗纯化攻击(Adversarial Purification)。 对方只要对图片做一次简单的加噪-去噪、JPEG 压缩、缩放,你精心加的保护扰动就可能被抹掉。所以干扰不是银弹。
1.5 主动防御之二:认证 / 水印(Authentication)
水印分两类,用途完全不同,别搞混:
| 类型 | 特性 | 用途 | 类比 |
|---|---|---|---|
| 鲁棒认证 Robust | 水印能扛过生成过程,依然存活 | 版权保护------证明"这是我的图" | 钞票里的金属线,怎么揉都在 |
| 半脆弱认证 Semi-fragile | 一经过 AI 生成 / 篡改,水印就破坏 | 伪造鉴真 + 主动篡改定位 | 封条------拆过就断,一眼看出被动了 |
水印可以嵌在三个位置:输入端、生成器内部、解码器端。
⚠️ 水印的两个硬伤
会被攻击:压缩、裁剪、重建攻击(VAE 重建一遍图)、自适应对抗攻击,都能破坏水印。
存在固有权衡:水印越鲁棒 → 对图像的改动越大 → 视觉质量越差。PSNR > 30dB 目前是较优水位,但不是白拿的。
📌 还有一个反直觉的坑:水印可能帮倒忙 。 综述专门提醒:三类防御(检测 / 干扰 / 认证)联合使用时,要警惕负面副作用------比如加了水印的图片,反而更容易骗过某些检测器。
1.6 怎么评价:数据集 + 指标
常用数据集
| 类别 | 代表 | 特点 |
|---|---|---|
| Deepfake 人脸数据集 | FaceForensics++、Celeb-DF-v2、DFDC | 专注人脸换脸/属性编辑 |
| 通用 AIGC 数据集 | CNNDetection、GenImage、GenVideo | 覆盖扩散模型生成的任意场景图 |
评价指标
| 任务 | 指标 | 说明 |
|---|---|---|
| 检测 | AUC、ACC、AP、F1 | 📌 优先用阈值无关的 AUC/AP,因为现实样本极度不均衡 |
| 干扰 | LPIPS、PSNR、MSE、攻击成功率 SR | 既要看破坏效果,也要看人眼感知差异 |
| 水印认证 | AUC、TPR、PSNR、SSIM、FID | 兼顾可检出性与图像质量 |
💡 为什么强调"阈值无关"? 现实里 99% 是真实图片、1% 是伪造。ACC 在这种分布下毫无意义------一个永远输出"真"的模型 ACC 就是 99%。 AUC 衡量的是排序能力,不受正负样本比例影响。这个坑在第 2 章还会再遇到一次,而且更致命。
1.7 未来方向 & 论文不足
作者指出的研究方向
-
被动检测:加强细粒度任务;研究细粒度任务的鲁棒性与公平性;构建通用 AIGC 权威基准;把推理速度、参数量这类工程指标纳入评估(现在论文只卷精度,不卷能不能上线)。
-
主动防御:拓展半脆弱水印任务;丰富主动防御的可信性研究;研究三类防御的联合协同效应。
论文的两点不足
-
❌ 以文献梳理归类为主,大量结果直接引用已有论文,缺少大规模复现实验;
-
❌ 视频方向的实验素材相比图像明显更少。
📗 第二章 · 合成图像验证:什么能用,什么还不行

📌 本章基于 文献2 :Synthetic Image Verification in the Era of Generative AI 发表:IEEE Security & Privacy(2024)|那不勒斯费德里科二世大学 + NVIDIA|arXiv:2405.00196v1
2.1 定位差异:这篇"有实验"
如果说文献1 是地图 ,那么文献2 就是实测报告 。它最大的价值是:不只告诉你有哪些方法,还亲手复现了一遍,告诉你哪些真的扛得住。
两大核心任务
| 任务 | 输出 | 价值 |
|---|---|---|
| 检测 Detection | 一个全局分数:这图是 AI 生成的概率 | 判真假 |
| 溯源 Attribution | 具体是哪个模型生成的 | 验证检测结果 + 提供可解释性 + 便于追责 |
💡 溯源的价值在于交叉验证:如果检测器说"这是 AI 图",溯源又说是"Stable Diffusion XL 生成的",两条证据互相印证,结论才站得住。
2.2 三类检测方法
合成图像检测
├─ ① 高层伪影 High-level artifacts ← 人眼可见的语义级破绽
├─ ② 低层伪影 Low-level artifacts ← 人眼不可见的像素/频域痕迹
└─ ③ 数据驱动 Data-driven approaches ← 让深度学习自己学
① 高层伪影:人眼可见的破绽
-
人脸左右不对称(耳环只有一只、瞳孔反光方向不一致)
-
透视关系矛盾、阴影方向打架、光照不自洽
⚠️ 这类方法正在快速失效。 论文明确指出:新一代扩散模型可以规避这类错误。当 Midjourney v6 已经能画出正确的手部结构,"数手指"就不再是可靠的判据。 📌 判断标准:凡是你能用肉眼描述出来的破绽,都会被下一代模型修掉。
② 低层伪影:显微镜下的指纹
这是目前最可靠的一类线索。核心原理:
生成模型再像人,它也是一台机器------机器加工必然留下加工痕迹。
真实照片是"物理成像"(镜头 → 传感器 → ISP),AI 图是"数学加工"(卷积、上采样、池化)。两条链路完全不同,痕迹也就不同。
| 子类 | 原理 | 类比 |
|---|---|---|
| 频域分析 | GAN/扩散模型的上采样操作,会在傅里叶功率谱上留下周期性谱峰 | 每台打印机印出来的点阵规律不同 |
| 人工指纹 | 类似相机 PRNU 噪声指纹,提取模型专属的噪声残差 | 生成模型也有"指纹" |
| 噪声特征 | 真实相机噪声与 AI 生成噪声的统计分布差异 | 天然木纹 vs 贴皮纹理 |
| 反演分析 | 用扩散模型重建待测图: AI 图重建误差小 (它就是从这条路上来的), 真实照片重建误差大 | DIRE 算法。 让小偷重演一次作案,他熟门熟路;路人则手足无措 |
💡 论文里最直观的一张图 : 用同一句 prompt("罗马斗兽场上空有 UFO")分别让 Latent Diffusion、Stable Diffusion、Midjourney v5、DALL·E Mini / 2 / 3 生成,然后画各自的平均功率谱 ------六个模型的谱峰形态清晰可分,DALL·E 三个版本的指纹彼此差异极大。 这就是"人工指纹"存在的直接证据。
③ 数据驱动:让模型自己学
| 策略 | 做法 | 解决什么 |
|---|---|---|
| 预训练 CNN + 数据增强 | 训练时加入 JPEG 压缩、模糊 | 提升抗社交网络降质的鲁棒性 |
| 信息保留 | patch 分块输入,避免网络浅层做下采样 | 防止微弱的取证痕迹在前几层被抹掉 |
| 小样本 / 增量学习 | 适配不断涌现的新生成模型 | 泛化能力 |
| 大规模预训练(CLIP-ViT) | 借用视觉语言模型的表征 | 跨模型泛化性能最好 |
📌 一条被反复验证的"黄金法则" : 避免任何信息损失。 尤其在网络最靠近输入的几层------不要 resize、不要下采样、用随机裁剪的 patch 训练、最后再融合做全局决策。 原因很朴素:取证痕迹本来就是微弱信号,你在第一层把它平均掉了,后面再深的网络也学不回来。
⚠️ 数据增强的一个细节陷阱 : 增强必须和真实场景对齐。你的业务图片走的是 WebP 压缩,那训练时就别只加 JPEG 增强------格式不对,鲁棒性照样不保证。
2.3 溯源 Attribution:闭集 vs 开集
| 场景 | 定义 | 性能 |
|---|---|---|
| 闭集 Closed-set | 测试的模型在训练集里见过 | 表现优秀 |
| 开集 Open-set | 出现从未见过的新生成模型 | 性能显著下降 |
💡 类比:闭集是在档案库里比对嫌疑人 ;开集是来了一个档案库里没有的人,系统只能说"不认识"。 现实世界永远是开集------每个月都有新模型发布。
⚠️ 论文特别指出:扩散模型的开集溯源难度高于 GAN。
2.4 四条实验结论(含金量最高的一节)
① 扩散模型生成的图像,比 GAN 图像更难检测。
原因:扩散模型的生成链路更接近"从噪声逐步去噪",其噪声统计特性与真实图像的差异比 GAN 更小。
② 社交网络后处理会显著拉低检测器性能。
裁剪、缩放、JPEG 压缩------每一步都在抹掉低层取证痕迹。这是实验室数据集和真实业务之间最大的鸿沟。
③ ⚠️ 阈值标定(Calibration)是落地最大的痛点------这一条要划重点。
AUC 高 ≠ 业务可用。
这是整篇论文最反直觉、也最值钱的一条结论。
AUC = 0.98 意味着什么?
→ 把真图和假图的分数排成一队,真图和假图能被很好地分开(排序能力)
→ 但 AUC 完全不告诉你「分数线画在哪里」
问题在于:不同生成模型输出的分数分布是偏移的。
| 生成模型 | 检测器输出的分数分布中心 |
|---|---|
| ProGAN | 0.85 左右 |
| Stable Diffusion | 0.62 左右 |
| 某新模型 | 0.45 左右 |
你用一个固定阈值 0.5 去切:ProGAN 全抓到了,Stable Diffusion 漏掉一大半,新模型基本全漏。
📌 工程结论 : 上线一个检测器,必须做分模型的阈值标定------针对你业务里可能遇到的每类生成源,单独校准工作点(比如按"误报率 ≤ 0.1%"反推阈值)。 只报 AUC 的检测器,等于没做标定,直接上生产一定会翻车。
④ 实验室数据集 vs 真实"野外"数据,性能差距巨大。
论文对比了受控实验与社交网络真实数据的表现,差距不是一点点。
💡 这条和 ② 是一体两面:降质 + 分布偏移,是检测落地的两大杀手。
2.5 挑战与未来方向
现存挑战
-
检测与溯源任务割裂(论文认为应该联合优化)
-
开集识别能力短板
-
阈值标定困难
-
低层频域痕迹容易被对抗攻击抹除
未来方向
| 方向 | 说明 |
|---|---|
| 意图刻画 | 区分"恶意伪造"和"合法 AI 编辑"(美化、超分、压缩) |
| 可解释检测 | 不只给分数,还要说清"凭什么判定" |
| 对抗鲁棒性 | 设计时就考虑抗攻击,而不是事后补 |
| 通用方法 | 同时检测全局生成 和局部编辑(inpainting) |
| 主动取证 | 重新重视水印、扰动等主动手段 |
💡 "意图刻画"这个方向值得单独说 : 论文提出一个尖锐的问题------AI 已经普遍用于压缩、增强、超分,这些图还算不算"假"? 未来内容治理的核心可能不是"真/假"二分,而是**"有没有恶意意图"**。这个思路对做内容审核的同学很有启发。
论文不足
-
❌ 几乎不涉及主动防御(干扰 / 水印)
-
❌ 重点研究 2D 图像,对视频 Deepfake 讨论较少
📘 第三章 · 空域-频域注意力融合深伪检测(ICASSP 2023)

📌 本章基于 文献3 :Frequency-Aware Attentional Feature Fusion for Deepfake Detection 会议:ICASSP 2023(CCF-B)|作者:田成、罗志明、史桂敏、李绍滋(厦门大学)|DOI: 10.1109/ICASSP49357.2023.10094654
3.1 它要解决三个具体的"不顺"
前两章是综述,这一章是具体算法。先看作者挑了哪三个毛病:
| 问题 | 具体表现 |
|---|---|
| 过拟合 / 域泛化差 | 在 FF++ 上训的模型,换到 Celeb-DF 就掉点 |
| 空频融合太粗暴 | 现有方法直接把 RGB 特征和频域特征拼接或相加,但两者语义、尺度根本不一致 |
| 注意力只看局部 | 大部分注意力机制只盯着局部伪造区域,忽略了局部-全局上下文关联 |
💡 "语义不一致"是什么意思? RGB 特征回答的是"这里有个鼻子";频域特征回答的是"这里的纹理频率分布异常"。 这是两种完全不同性质的信息,直接相加就像把"温度 26 度"和"颜色红色"加在一起------数学上能做,语义上没意义。
3.2 网络四大组件
输入原图
│
├─[增强1]──> x₁ ──┐
└─[增强2]──> x₂ ──┤
│
┌────────────┴────────────┐
↓ ↓
RGB 空域分支 频域分支(DCT 分解 + 可学习滤波器 + 逆 DCT)
└────────────┬────────────┘
↓
编码器(Xception 骨干)
├─ CAM 通道注意力模块
├─ SF₃M 空-频特征融合模块 ← 核心贡献
└─ VAM 变体注意力模块
↓
分类头 + 损失
↓
L = L_ce + β · L_sim
组件一:增强数据生成
对原图做两组不同的数据增强(随机擦除、随机裁剪),得到 x_1 和 x_2。
这两个样本不是用来扩充训练集的,而是专门给对比损失当正样本对的------见组件四。
组件二:频域感知图像分解
-
对图像做 DCT 离散余弦变换,转到频域;
-
用可学习的滤波器划分高 / 中 / 低频(不是人工固定切分,是学出来的);
-
逆 DCT 变换回空间域,得到"频域图像"。
💡 为什么要绕一圈"频域 → 变换回空间域"? 因为直接把频域系数喂给 CNN 效果不好------频域系数的空间布局和原图完全不同。 变回空间域后,这张"频域图"长得还是一张图,但像素值编码的是频率信息,CNN 可以直接吃,且保留了空间对应关系。 这个技巧在多篇取证论文里都出现过,很实用。
组件三:三个注意力模块
| 模块 | 全称 | 作用 |
|---|---|---|
| CAM | Channel Attention Module | 聚合局部 (逐点卷积)与全局(全局平均池化)上下文,生成通道注意力权重 |
| SF₃M | Spatial-Frequency Feature Fusion Module | 多层渐进式自适应融合 RGB 与频域特征,规避简单相加拼接的损失 |
| VAM | Variant Attention Module | 对多层融合特征再次加权精炼,强化判别性 |
📌 消融实验证明:SF₃M 模块贡献最大------这印证了作者的核心判断,"怎么融合"比"用什么特征"更关键。
组件四:损失函数
L = L_{ce} + \beta L_{sim}
-
L_{ce}:交叉熵,做真假二分类;
-
L_{sim}:余弦相似度对比损失------约束同一张图的不同增强版本,特征尽可能接近。
💡 对比损失在这里起什么作用? 它相当于一个正则项 ,告诉网络:"这两张图其实是同一张,别因为它们被裁剪/擦除得不一样,你就给出两个完全不同的判断。" 效果是逼着网络去学那些"怎么增强都不变"的本质特征,而不是记住某张图的细节 → 直接缓解过拟合。
3.3 💻 代码视角:频域分解长什么样
论文用的是可学习滤波器,这里给一个等价思路的简化实现,帮助理解"频域分支"到底在干什么:
import torch
import torch.nn as nn
def dct_2d(x):
"""简化的 2D DCT(实际工程建议用 torch-dct 或 OpenCV)"""
return torch.fft.fft2(x, norm='ortho').real # 演示用,非严格 DCT
class FrequencyDecomposition(nn.Module):
"""频域感知图像分解:把图像拆成 高/中/低 三个频带,再各自逆变换回空间域"""
def __init__(self, channels=3):
super().__init__()
# 论文的核心:滤波器是可学习的,不是人工固定的
self.low_mask = nn.Parameter(torch.rand(channels, 1, 1))
self.mid_mask = nn.Parameter(torch.rand(channels, 1, 1))
self.high_mask = nn.Parameter(torch.rand(channels, 1, 1))
def forward(self, x):
freq = dct_2d(x)
h, w = freq.shape[-2:]
# 用可学习掩码加权不同频带(真实实现是按频率半径分带)
low = freq * self.low_mask.sigmoid()
mid = freq * self.mid_mask.sigmoid()
high = freq * self.high_mask.sigmoid()
# 逆变换回空间域 —— 关键一步,让 CNN 能直接吃
out = torch.cat([idct(low), idct(mid), idct(high)], dim=1)
return out
⚠️ 上面是原理示意代码,不是论文原实现。真实实现中:
DCT 需要正确处理(可用
torch-dct库);分带应该按频率半径做,而不是逐通道标量;
逆变换后通常与 RGB 分支共享骨干(如 Xception),而不是独立一套。
3.4 实验结果
数据集 :FaceForensics++(FF++)、Celeb-DF、DFDC 指标:ACC、AUC、TDR@0.1%、TDR@0.01%
| 场景 | 表现 | 解读 |
|---|---|---|
| 域内 Celeb-DF | ACC = 99.85 ,AUC = 99.99 | 域内基本打满 |
| FF++-LQ(高压缩) | 表现突出 | 📌 适配社交网络压缩图片,这是实用性的关键 |
| 跨数据集 | 小幅下降,整体稳定 | 比多数基线好,但泛化仍是开放问题 |
| 可视化 | Grad-CAM 证明注意力聚焦伪造区域 | 可解释性加分 |
💡 TDR 是什么?为什么它比 ACC 重要? TDR = True Detection Rate,在极低虚警率条件下 (0.1% / 0.01%)的检出率。 现实业务里,你不可能接受 1% 的误报------一万张用户照片里误杀 100 张,产品就废了。 所以**"在万分之一误报下还能抓到多少"**才是真正决定能不能上线的指标。 这篇论文专门报 TDR,说明作者是有落地意识的,这一点值得学。
3.5 优缺点
✅ 优点
-
多层渐进式空-频注意力融合,真正解决了 RGB 与频域特征的语义/尺度不一致;
-
对比损失作为正则,缓解过拟合,压缩场景效果好(这点对社交网络业务非常关键);
-
极低虚警率下的 TDR 指标优秀,偏向实际落地。
❌ 局限
-
只针对人脸 Deepfake,不支持通用扩散模型生成的图像;
-
没有评估对抗攻击鲁棒性(文献1 特别强调的可信性维度,这篇没覆盖);
-
双流结构推理开销更大;
-
仅被动检测,不涉及主动防御。
🆚 第四章 · 三篇横向对比 + 真实换脸工具的挑战
4.1 三篇文献对照表
| 对比维度 | 文献1 · ACM CSUR 2025 | 文献2 · IEEE S&P 2024 | 文献3 · ICASSP 2023 |
|---|---|---|---|
| 类型 | 综述 | 综述(附大量实验复现) | 算法论文 |
| 研究对象 | 图像 + 视频;Deepfake + GAN + 扩散模型 | 重点图像;GAN 与扩散模型 | 人脸 Deepfake 视频帧 |
| 防御体系 | 被动检测 + 主动防御(干扰 + 水印认证) | 仅被动:检测 + 溯源 | 仅被动检测 |
| 分类维度 | 检测 / 干扰 / 认证; 附带可信性(鲁棒、公平) | 高层伪影 / 低层伪影 / 数据驱动 | 空域-频域注意力融合 + 对比学习 |
| 实验特点 | 文献汇总表格,几乎不复现 | 大规模复现,闭集/开集/野外真实数据 | 人脸数据集消融 + 参数实验 |
| 核心痛点 | 泛化不足、防御本身的可信性缺失 | 开集识别、阈值标定、后处理降质 | 过拟合、跨数据集泛化、压缩降质 |
| 主动防御 | ✔ 完整覆盖 | ❌ 几乎不涉及 | ❌ 不涉及 |
📌 怎么选文献用?
要搭知识框架 → 读文献1
要知道方法实不实用 → 读文献2(有实测数据)
要动手写代码 → 读文献3
4.2 拓展:Deep-Live-Cam 带来的现实挑战
工具简介 :hacksider/Deep-Live-Cam 开源单图实时换脸工具,基于 InsightFace Inswapper + GFPGAN,零训练,输入一张人脸图片即可完成摄像头实时换脸,输出虚拟摄像头流。
💡 它的门槛低到什么程度?不需要训练、不需要数据集、一张照片 + 一个摄像头,实时输出。 这意味着伪造内容的生产端已经彻底民主化。
它的伪影特点
| 伪影 | 表现 |
|---|---|
| 空间错位 | 大角度侧脸时人脸错位 |
| 时序闪烁 | 有遮挡时画面闪烁 |
| 细节异常 | 口腔、牙齿细节异常 |
| 痕迹抹除 | GFPGAN 增强会抹掉一部分传统频域伪造痕迹 ⚠️ |
⚠️ 最后一条是最要命的 :GFPGAN 这类人脸修复/增强模型,本质上是在做一次"重新生成",会顺手把伪造留下的频域痕迹洗掉一大半。
对三篇文献的启示
| 文献 | 面临的挑战 |
|---|---|
| 文献1 | 检测研究需要纳入这类真实开源工具 生成的样本;除图像线索外,要利用视频级时空时序伪影;可研究针对 Inswapper 的输入扰动干扰(Disruption)与水印认证 |
| 文献2 | 单纯依赖低层频域线索的检测器,遇到经后处理修复的样本会显著掉点;必须结合高层语义 + 时序线索 |
| 文献3 | 只在传统 Deepfake 数据集上训练,直接部署面对 Deep-Live-Cam 样本存在泛化风险;需要引入该类样本扩充训练集 |
📌 这一节的通用结论 : 论文里的 SOTA 数字,是在论文的数据集上的 SOTA。 拿去对线上真实工具生成的样本,性能掉 20-30 个点是常态,不算意外。 做检测的同学,请把"我的训练集里有没有真实工具生成的样本"当成第一问题。
📙 第五章 · 文本隐写:把秘密藏进一段话里
📌 从这里开始,视野从图像/视频取证 切换到文本域信息隐藏 。 两者同属**信息隐藏(Information Hiding)**大家族,但载体从像素变成了自然语言。
5.1 总览:两大分支
文本隐写:以文本为载体,把秘密信息藏进一段看起来通顺自然的普通文字里,外人察觉不到里面还有密文。
文本隐写
├─ 修改式(在已有文本上做微小改动)
│ ├─ 基于文本格式:文本间距、字符属性、字符编码(零宽字符)
│ └─ 基于文本内容:基于语法算法、基于语义算法
└─ 生成式(语言模型从头生成一段文本)
├─ 基于马尔可夫链模型
└─ 基于大语言模型 LLM ← 当前主流
💡 一句话区分 : 修改式 = 拿一篇现成文章做手脚(有"原始版本"可以对照); 生成式 = 从头写一篇(根本没有原始版本,隐蔽性天然更强)。
5.2 修改式文本隐写
定义:分析文本的格式/字符属性、语法、语义特征,找到冗余位置藏秘密;或通过同义词替换、句式改写来承载密文。
基于文本格式的算法(不改语义,只改外观)
| 子类 | 具体手段 |
|---|---|
| 文本间距 | 字间距、行间距、空格数量、空格类型(半角 / 全角空格) |
| 字符属性 | 字体颜色(同色隐形字)、字号、下划线 |
| 字符编码 | Unicode 零宽字符(零宽空格、零宽连字,肉眼不可见) |
基于文本内容的算法(改文字,保留原意)
| 子类 | 具体手段 | 例子 |
|---|---|---|
| 基于语法 | 调整句式、变换句型、主动被动互换 | "我启动了程序" ↔ "程序被我启动" |
| 基于语义 | 同义词 / 近义词替换 | "开始" = 0,"启动" = 1 |
✅ 优点 :载体容易获取(随手一篇文章就能用) ❌ 缺点 :改动幅度大时容易不通顺、易被语法校验工具检出;冗余空间有限,隐写容量偏小
5.3 生成式文本隐写
定义:构建语言模型自动生成文本载体,在生成过程中通过熵编码、采样控制把秘密信息嵌入生成流程。
-
经典做法:基于马尔可夫链模型的文本生成隐写
-
当前主流 :基于 LLM 的隐写------在 token 采样时根据秘密比特选择下一个词,输出一篇看起来正常的段落,密文藏在"选词路径"里
✅ 优点 :文本原生生成,没有"原始版本"做对比 ,隐蔽性更强;隐写容量更高 ❌ 缺点 :早期模型容易生成不通顺文本;LLM 生成隐写存在被隐写分析(steganalysis)模型识别的风险
5.4 💻 动手:零宽字符隐写
这是网络上最常见的一类隐写,也是网安 / 反诈的重点检测对象。看一眼原理:
# 零宽字符隐写:把比特流藏进看不见的 Unicode 字符里
ZWSP = '\u200b' # 零宽空格 → 代表比特 0
ZWNJ = '\u200c' # 零宽非连接符 → 代表比特 1
def embed(cover: str, secret: str) -> str:
"""把秘密藏进 cover 的第一个字符之后"""
bits = ''.join(f'{b:08b}' for b in secret.encode('utf-8'))
hidden = ''.join(ZWSP if b == '0' else ZWNJ for b in bits)
return cover[0] + hidden + cover[1:]
def extract(stego: str) -> str:
bits = ''.join('0' if c == ZWSP else '1' for c in stego if c in (ZWSP, ZWNJ))
byte_arr = bytearray(int(bits[i:i+8], 2) for i in range(0, len(bits) - len(bits) % 8, 8))
return byte_arr.decode('utf-8', errors='ignore')
# 演示
cover = "今天天气不错,适合出门散步。"
stego = embed(cover, "秘密SOS")
print("肉眼看到的:", stego) # 和原文一模一样
print("实际长度 :", len(cover), "→", len(stego))
print("提取结果 :", extract(stego)) # 秘密SOS
💡 运行一下你就会明白为什么它危险 (上面是实测输出):
stego打印出来和原文完全一致,但长度从 14 变成了 86(每个秘密字节 = 8 个零宽字符)。 肉眼零察觉,复制粘贴就能带走,聊天、网页、文档里都能用。⚠️ 防守侧怎么查?
字符白名单过滤 :检测并剥离
\u200b、\u200c、\u200d、\ufeff、\u2060等零宽字符;长度异常检测:明文长度与可见字符数不匹配;
编码归一化:入库前做 Unicode NFC 规范化 + 不可见字符清洗。
5.5 工程重点(安全 / 反诈 / 运维视角)
| 关注点 | 说明 |
|---|---|
| 零宽字符隐写 | 聊天、网页、文档里最常用,肉眼完全不可见,适合隐蔽传输信息,是网安、反诈的重点检测对象 |
| LLM 生成式文本隐写 | 近年隐写分析的研究热点,与大模型安全强相关 |
🛠️ 在线工具 :脚本之家在线图片隐写工具 原理为 LSB 最低有效位图像隐写------在图片像素的最低位嵌入文字秘密信息,支持设置密码加密。
📌 LSB 的思路很朴素:像素值 200 变成 201,人眼完全看不出区别,但最低位就悄悄记了一个比特。
📔 第六章 · LLM-Stega:只用 API 就能做隐写(ACM MM 2024)

📌 文献4 :Generative Text Steganography with Large Language Model 会议:ACM MM 2024(CCF-A),DOI: 10.1145/3664647.3680562|arXiv:2404.10229v2 作者:吴佳轩、吴正贤、薛一鸣、文娟(中国农业大学),彭万里(复旦大学)
6.1 白盒 vs 黑盒:范式跃迁
这篇论文解决的是一个非常现实的痛点。先看传统的生成式文本隐写(算术编码 Neural Linguistic Steganography、ADG、Discop)为什么用不了:
| 白盒方案的要求 | 现实情况 |
|---|---|
| 需要拿到语言模型的词表 | GPT-4 不给你 |
| 需要拿到每一步 token 的采样概率分布 | 商用 API 只给最终文本 |
| 收发双方必须拥有完全相同的模型 | 几乎不可能 |
| 嵌入时会修改模型原生采样分布 | 引入统计偏移,容易被隐写分析器检出 |
💡 一句话 :白盒方案假设你有配方 (知道每个词的概率),黑盒场景你只会点菜(只能通过 prompt 让模型输出)。
本文目标 :设计完全黑盒 的生成式文本隐写 LLM-Stega ------不需要访问模型权重、词表、token 概率,仅靠提示词(Prompt)完成秘密信息的嵌入与提取,适配公开大模型接口。
6.2 四步流程
① 关键词集构建
↓
② 加密隐写映射(关键词位置索引编码比特 + 发布时间 XOR 加密)
↓
③ 隐写文本生成(嵌入提示词 → LLM → 拒绝采样反馈优化循环)
↓
④ 秘密消息提取(提取提示词 → LLM → 解析关键词 → 解密)
步骤①:关键词集构建 Keyword Set Construction
通过主题提示词 ,诱导 LLM 生成 4 类关键词子集:主语、谓语、宾语、情感词(正/负/中性) ; 再用评估提示词,让 LLM 自行评估、优化关键词的采样概率。
📌 关键点 :关键词集合独立于大模型内部生成流程,不依赖模型原生 token 概率 → 这是它能黑盒运行的根本原因。
步骤②:加密隐写映射 Encrypted Steganographic Mapping
-
对关键词集合做重复采样扩充 ,利用关键词在扩充集合内的位置索引编码秘密比特;
-
引入一次性密码机制 :利用社交网络发布时间 (日期、小时、分钟)做 XOR 异或加密,生成收发双方共享私钥。
💡 这个设计很巧妙 : 即使监听者 Eve 拿到了完整的关键词集合,只要她不知道这条消息发布的精确时间 ,就解不出密钥。 而发布时间在社交网络上是公开可见的------这是一个天然的、无需预先传输的密钥交换信道。
⚠️ 注意:隐写映射独立于 LLM 生成流程 ,不会修改大模型原生采样分布 → 降低统计异常,这正是它抗隐写分析能力强的原因。
步骤③:隐写文本生成(拒绝采样反馈优化)
将编码了秘密信息的关键词输入嵌入提示词,调用黑盒 LLM 生成含密文本。
为什么需要"拒绝采样"? 黑盒场景下,你只能通过 prompt 让模型"用这些关键词写一段话",但无法保证模型真的每个词都用上了 。模型可能漏词、改词、加词。 于是作者设计了一个循环反馈机制:
① 用「提取提示词」尝试从生成的文本中还原关键词 ② 若还原结果 ≠ 原始编码关键词: 用「反馈提示词」问 LLM 错在哪 → 迭代优化嵌入/生成/提取三个提示词 ③ 循环,直到文本能完整还原秘密关键词,才输出最终隐写文本消融实验证明:提示词深度迭代优化可显著降低拒绝率,同时提升文本流畅度。
步骤④:秘密消息提取
Bob 拿到社交网络上的隐写文本,用提取提示词调用同一个 LLM,解析出文本内部的关键词; 结合双方预共享的侧信息(关键词集、私钥、文本发布时间),解密恢复原始秘密比特。
📌 收发双方只需要知道关键词集合和密钥规则,不需要访问模型内部参数与概率。
6.3 实验设置与结果
实验条件
-
黑盒模型:GPT-4 API;测试主题:娱乐新闻(LLM-Stega-EN)、科幻电影评论(LLM-Stega-RSciM)
-
对比基线:AC(算术编码)、ADG、Discop、Discop-LLaMA2
评价指标
| 维度 | 指标 | 方向 |
|---|---|---|
| 文本质量 | PPL 困惑度、Sentence-BERT 语义相似度 SS | PPL 越低越好 |
| 嵌入容量 | bpw(bits per word,每单词承载的秘密比特数) | 越高越好 |
| 抗隐写分析 | LS-CNN、BiLSTM-Dense、Bert-FT 三种分析器的检测准确率 | 越接近 50% 越安全(≈随机猜测) |
| 统计不可感知性 | KLD(KL 散度,衡量隐写文本与正常文本的分布差异) | 越小越好 |
| 人工评估 | 流畅度、连贯性、主题相关性打分 | 越高越好 |
关键结果
| 结果 | 数据 | 解读 |
|---|---|---|
| 嵌入容量 | 5.93 bpw | 超过大部分基线,每个单词能承载更多秘密比特 |
| 抗隐写分析 | 三种分析器准确率接近 50% | ≈ 随机猜测,隐蔽性极强; 而基线 AC/ADG/Discop 被检出的准确率很高 |
| 文本质量 | KLD 较低,人工评估优于基线 | 统计分布接近正常文本,语句通顺且符合主题 |
| 消融实验 | 提示词迭代优化 → 拒绝率下降、PPL 下降 | 反馈机制确实有效 |
💡 "检测准确率接近 50%"是什么概念? 二分类任务里,50% 就是抛硬币。也就是说,现有的隐写分析器对 LLM-Stega 基本无能为力 。 根因就是前面说的:它没有篡改模型的采样分布,所以不留下统计尾巴。
6.4 优缺点与未来方向
✅ 优点
-
真正黑盒范式------只需 LLM 网页/API 接口,不需要模型权重与 token 概率,适配 GPT-4 等商用闭源模型;
-
隐写映射独立于生成流程,不破坏原生采样分布,大幅降低被检出风险;
-
结合发布时间做 XOR 加密,增加密钥保护(无需预先传输密钥);
-
拒绝采样反馈优化,解决黑盒场景提取不准的痛点;
-
嵌入容量优于多数传统白盒算法。
❌ 局限性
-
需要收发双方预先共享关键词集合与密钥规则,且依赖提示词质量;
-
拒绝采样要多次调用 LLM API,推理开销与 token 消耗都很大;
-
秘密信息完全依托关键词承载,受关键词集规模上限约束;
-
⚠️ 只做了生成隐写,没有研究对应的隐写分析(怎么检测 LLM-Stega 这类黑盒隐写)------这是一个明显的开放问题。
未来方向
-
设计微调策略进一步挖掘大模型能力,摆脱固定关键词集合的约束;
-
进一步降低拒绝采样带来的调用开销;
-
研究针对黑盒 LLM 文本隐写的隐写分析检测算法 ← 防守侧的机会点。
📓 第七章 · LoRA:给大模型贴徽章
📌 论文:LoRA: Low-Rank Adaptation of Large Language Models (2021,微软) 归类:PEFT 参数高效微调(Parameter-Efficient Fine-Tuning),广泛用于 LLM 与 Stable Diffusion 微调。
7.1 背景:全量微调的三大痛点
全量微调(Full Fine-tune) :加载预训练基座模型,更新全部权重参数。
| 痛点 | 说明 |
|---|---|
| 显存开销巨大 | 不只存权重,优化器(AdamW)还要保存动量等状态,百亿模型需要多块 A100 |
| 存储成本高 | 每个任务都要保存一份完整模型权重 |
| 灾难性遗忘 | 微调后可能破坏基座模型原本学到的通用知识 |
7.2 核心原理
LoRA 的核心假设 :大模型适配下游任务时,权重矩阵的更新量 \Delta W 本身是低秩的------不需要完整矩阵,用两个很小矩阵的乘积就能近似。
① 冻结基座模型 预训练原始权重 W_0 全程冻结,不做任何梯度更新,保留全部预训练知识。
② 插入低秩矩阵对 在 Transformer 的自注意力层(Q、V 投影矩阵最常用)插入一对可训练矩阵 A、B:
-
A:降维矩阵;B:升维矩阵
-
r = 秩 rank,r \ll d(常用 8 / 16 / 32 / 64)
-
更新量:\Delta W = B \cdot A
h = W_0 x + \frac{\alpha}{r} B A x
📌 初始化细节 :矩阵 B 初始化为全 0 。 训练刚开始时 \Delta W = 0,模型行为和原始基座完全一致,之后才逐步学习任务更新量。 这个设计保证了训练起点不会比基座差。
③ ✨ 推理优势:零额外延迟
推理阶段可以把 BA 直接合并进原始权重:
W' = W_0 + \frac{\alpha}{r} B A
合并后推理和原始模型完全一样,不像 Adapter 等方法要额外走一条子网络支路。
7.3 🎈 形象比喻
| 概念 | 比喻 |
|---|---|
| 基座大模型 | 一件完整的衣服 |
| 全量微调 | 整件衣服重新染色改版型------成本高,衣服本体被改变 |
| LoRA | 在衣服上贴可更换的徽章补丁------衣服本体不动,只训练徽章; 可随时摘掉恢复原版,也可换别的徽章适配别的任务 |
7.4 💻 可运行代码(peft)
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B-Instruct",
torch_dtype="auto", device_map="auto")
lora_config = LoraConfig(
r=16, # 秩:越大表达力越强,参数量也越多
lora_alpha=32, # 缩放因子,一般设为 2*r 或同 r
target_modules=["q_proj", "v_proj"], # LLM 一般插 Q、V 投影
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 典型输出:trainable params 约 5M || all params 约 7.6B || trainable% ≈ 0.07
# → 只训练基座 0.1% 左右的参数,显存与存储压力下降两个数量级
训练完只保存 LoRA 适配器(几 MB ~ 几十 MB),基座共用一套。
推理的两种模式
| 模式 | 做法 | 特点 |
|---|---|---|
| 在线支路 | 同时加载基座 + LoRA 适配器,并行计算相加 | 可热插拔切换任务 |
| 权重合并 | 把 \Delta W 合并进 W_0,得到新完整权重 | 推理速度与原始模型完全相同 |
# 权重合并:合并后推理零额外开销
merged = model.merge_and_unload()
merged.save_pretrained("./qwen2-7b-merged")
7.5 关键超参
| 参数 | 说明 | 常用值 |
|---|---|---|
r (rank) |
秩,LoRA 模块表达能力;越大参数越多 | 8 / 16 / 32 / 64 |
lora_alpha |
缩放因子,控制 LoRA 对输出的影响力 | 一般等于 r 或 2r |
target_modules |
插入 LoRA 的层 | LLM:q_proj, v_proj;SD:UNet 注意力层 |
lora_dropout |
LoRA 内部 dropout,防过拟合 | 0.0 - 0.1 |
7.6 优缺点
✅ 优点
-
显存、存储开销极低------消费级显卡可微调 7B/13B;LoRA 补丁只有几十 MB,多任务只需存多个小补丁共用基座;
-
避免灾难性遗忘------基座权重完全不动;
-
推理无额外延迟(区别于 Adapter、Prefix-tuning);
-
任务切换灵活,卸载/加载适配器即可切换能力。
❌ 缺点
-
表达能力上限受
rank限制------复杂任务 rank 太小会欠拟合,调大则参数量、显存上升; -
不能彻底改变模型底层能力,适合适配、风格迁移、指令微调;不适合彻底重构能力;
-
依赖
target_modules的选择,选错层效果会很差。
💡 QLoRA :LoRA 的进一步变体------把基座模型 4-bit 量化冻结 ,仅 LoRA 矩阵用 FP16 训练,可以单张消费卡微调 70B 大模型。
7.7 PEFT 方法横向对比
| 方法 | 推理额外延迟 | 是否冻结基座 | 参数量占比 |
|---|---|---|---|
| 全量微调 | 无 | ❌ 全部更新 | 100% |
| LoRA | 无 | ✔ 冻结 | 0.1 - 1% |
| Adapter | 有 | ✔ 冻结 | 0.1 - 1% |
| Prefix-tuning | 有 | ✔ 冻结 | 0.1 - 1% |
| QLoRA | 无 | ✔ 量化冻结 | 0.1 - 1% |
7.8 📌 安全视角的关联
⚠️ LoRA 是一把双刃剑,这一点在 AIGC 安全语境下特别重要:
攻击方:可以用 LoRA 微调扩散模型,快速定制生成特定人物的伪造图片(成本低到几分钟);
攻击方 :可以发布带后门的 LoRA 补丁------用户一加载,模型就被植入后门(这是 BadNets 思想在新时代的延伸);
防守方:可以用 LoRA 微调检测器,快速适配特定样本类型(比如新增 Deep-Live-Cam 换脸样本的检测能力)。
📌 实践含义 :不要随便加载来源不明的 LoRA。模型供应链安全,从
.safetensors文件开始。
📒 第八章 · 大模型 API 推理参数速查
📌 说明:以下全部是推理/生成阶段参数,不改变模型权重,训练与 LoRA 微调不受影响。 主流 OpenAI、Qwen、LLaMA、Claude 接口通用。
8.1 temperature 温度系数
作用:重塑 token 概率分布,控制输出的随机性与创造性。
| 取值 | 效果 | 适用场景 |
|---|---|---|
| 0 - 0.3 | 严谨、确定性高,几乎无随机 | 数学计算、代码、事实问答、检索问答 |
| 0.4 - 0.7 | 平衡准确与多样性(多数 API 默认) | 日常对话、摘要、报告撰写 |
| 0.8 - 1.0 | 强多样性 | 故事创作、文案、头脑风暴 |
| > 1.0 | 高度随机,容易逻辑崩坏 | 诗歌创意实验,生产环境不建议 |
⚠️ 注意 :只有开启随机采样(
do_sample=True)时温度才生效;贪心解码下温度参数无效。
8.2 top_p 核采样(Nucleus Sampling)
作用:动态截断候选词池------从概率最高的 token 开始累加,累积概率达到 top-p 就丢弃剩下的,只在保留集合内采样。
-
top_p=0.9:只保留累计概率占 90% 的候选 token -
top_p=1.0:不做任何截断
💡 temperature vs top_p 的本质区别
temperature :缩放 全部 token 的概率,不删除任何候选
top_p :直接过滤删除一部分候选 token
工程常见搭配:
temperature=0.7, top_p=0.9。严谨任务调低,创意任务调高。
8.3 top_k
作用:固定保留概率最高的 K 个 token,其余全部丢弃。
-
缺点:固定 K 值对不同输入适配差,工业界更优先使用 top_p
-
注意:部分 OpenAI 系 API 不再暴露 top_k;开源模型(LLaMA、Qwen)仍提供
top-p 是动态数量 ,top-k 是固定数量,两者可同时生效。
8.4 max_tokens / max_new_tokens
| 参数 | 含义 |
|---|---|
max_tokens |
整个请求(输入 prompt + 输出回答)的总 token 上限 |
max_new_tokens |
只限制本次生成输出的最大 token 数,不统计输入 prompt |
📌 token 粗略换算:1 token ≈ 0.75 个中文汉字。 达到上限会强制截断,回答不完整------需要长回答就调大。
8.5 上下文窗口 Context Window
这不是请求体参数,是模型的硬件能力属性,但调用 API 时高频涉及。
-
代表模型最多可同时读取的总 token(历史对话 + 当前 prompt)
-
例:4K 上下文模型,全部输入 + 输出总和不能超过 4096 token
-
超出窗口报错:
context length exceeded
溢出解决方案
-
使用更大上下文版本的模型
-
对历史做摘要压缩
-
丢弃最早的历史消息
8.6 两个惩罚项(最容易搞混)
| 参数 | 作用机制 | > 0 的效果 | 类比 |
|---|---|---|---|
| frequency_penalty 频率惩罚 | 对已生成过的 token 施加惩罚, 出现次数越多,惩罚越重 | 降低重复句式、循环废话 | 看出现多少次 → 防循环复读 |
| presence_penalty 存在惩罚 | 只要 token 曾经出现过 就惩罚, 不关心出现几次 | 鼓励引入新概念、新词汇 | 只要出现过就罚 → 鼓励新话题 |
两者取值范围均为 -2.0 ~ +2.0,默认 0;< 0 则鼓励重复/复用。
8.7 stop / stream / logprobs / n
| 参数 | 说明 |
|---|---|
| stop | 停止序列(字符串列表)。生成匹配到列表中的字符串立即终止,该字符串不出现在结果中。 常用于格式化输出,如 stop=["\n\n", "###"] |
| stream | true = SSE 流式逐块返回(打字机效果,适合网页聊天);false = 全部生成完一次性返回 |
| logprobs | 是否返回每个输出 token 的对数概率。普通业务关闭; 文本隐写、模型分析、AIGC 取证实验必须开启 |
| n | 一次请求生成 n 条候选回答。token 消耗成倍增加,多用于实验 |
⚠️ 一个关键限制 : GPT-4 等商用黑盒 API 即使开启 logprobs,也拿不到完整全部 token 的 logit ,只能看到被采样出来的那个 token 的概率。 这正是 LLM-Stega 那篇论文存在的理由------黑盒 API 拿不到完整 logit,传统白盒隐写根本跑不起来。
8.8 📋 三套场景模板
// ① 严谨任务(代码、数学、事实问答)
{
"temperature": 0.1,
"top_p": 0.3,
"max_new_tokens": 1024,
"frequency_penalty": 0.1,
"presence_penalty": 0.0
}
// ② 通用日常对话、报告
{
"temperature": 0.7,
"top_p": 0.9,
"max_new_tokens": 2048,
"frequency_penalty": 0.05,
"presence_penalty": 0.05
}
// ③ 创意写作、故事
{
"temperature": 0.9,
"top_p": 0.95,
"max_new_tokens": 2048,
"frequency_penalty": 0.2,
"presence_penalty": 0.2
}
8.9 📌 与前面知识点的关联
| 知识点 | 关联 |
|---|---|
| Neural Linguistic Steganography(EMNLP 2019,白盒文本隐写) | 白盒场景可直接操作 temperature 缩放 logits,获取完整 token 概率做算术编码隐写 |
| LLM-Stega(MM 2024,黑盒 API 隐写) | 商用 API 拿不到完整 logprobs,无法操纵温度做传统隐写 → 改用提示词 + 关键词方案 |
| 取证检测实验 | 不同温度、top_p 会改变生成文本的统计特征,会影响文本隐写分析模型的检测准确率------做实验时务必固定参数,否则结果不可复现 |
🧾 第九章 · 总结
9.1 🗺️ 全局知识地图
把上篇的内容串成一张图------中心问题是"如何重建可信":
【AIGC 安全:攻与防】
│
┌────────────────────────┼────────────────────────┐
│ │ │
视觉媒体取证 文本域信息隐藏 模型侧技术
│ │ │
┌────┴────┐ ┌────┴────┐ ┌──────┴──────┐
│ │ │ │ │ │
被动检测 主动防御 修改式 生成式 LoRA微调 API推理参数
│ │ │ │ │ │
┌─┴─┐ ┌──┴──┐ 格式/编码 马尔可夫链 低秩假设 temperature
│ │ │ │ (零宽字符) │ 冻结基座 top_p/top_k
粗粒度 干扰 认证 │ 推理零延迟 惩罚项/上下文
细粒度 扭曲 鲁棒 基于LLM生成 │
可信性 归零 半脆弱 │ │
│ │ │
└─鲁棒性/公平性 LLM-Stega(黑盒·ACM MM24) └─ 白盒需 logprobs
│ 黑盒只能靠 prompt
关键词集+加密映射
+拒绝采样反馈
三条贯穿全文的线索:
| 线索 | 表现 |
|---|---|
| ① 被动 → 主动 | 检测(事后)→ 干扰/水印(事前)。学术界 71% 还在被动侧,主动侧是机会 |
| ② 白盒 → 黑盒 | 从"拿得到模型内部"到"只有 API"。LoRA 是白盒,LLM-Stega 是黑盒,两条路都在走 |
| ③ 实验室 → 真实世界 | 压缩降质、分布偏移、阈值标定、真实工具样本------这四件事决定了论文能不能落地 |
9.2 十条要点
-
防御分被动与主动 :被动是事后验钞(检测),主动是出厂防伪(干扰 + 水印认证)。当前研究 71% 集中在被动侧。
-
细粒度检测才是取证:伪造定位、模型/数据溯源、篡改顺序还原------法庭要的是"裁判报告",不是"举牌"。
-
检测器本身也要被质疑:鲁棒性(对抗/后门攻击)与公平性(不同人群性能一致)是新兴的关键维度。
-
低层伪影比高层伪影可靠 :人眼看得见的破绽会被下一代模型修掉;频谱峰、噪声残差这类机器痕迹才稳。
-
⚠️ AUC 高 ≠ 能上线 :不同生成模型的分数分布是偏移的,不做阈值标定就上生产必然翻车。这是最容易被忽略的落地杀手。
-
扩散模型比 GAN 更难检测,社交网络后处理会显著拉低性能------实验室与野外数据的鸿沟是常态。
-
空频融合的关键在"怎么融":SF₃M 的多层渐进式融合 + 对比损失正则,是缓解过拟合与压缩降质的有效组合。
-
文本隐写分修改式与生成式 :生成式没有"原始版本"可对照,隐蔽性天然更强;零宽字符是最常见的修改式手段,也是反诈重点。
-
LLM-Stega 完成了白盒→黑盒的范式跃迁 :靠关键词集 + 加密映射 + 拒绝采样,只用 API 就能隐写,三种分析器准确率≈50%。但它的检测方法是空白------这是防守侧的机会。
-
LoRA 用低秩假设把微调成本降了两个数量级 ,推理零延迟;但⚠️它同时是攻击工具------带后门的 LoRA 补丁就是新时代的供应链风险。
9.4 📚 参考资源
| 类别 | 资源 |
|---|---|
| 文献1 | arXiv:2407.10575 | ACM CSUR | 2407.10575 A Survey of Defenses Against AI-Generated Visual Media: Detection,Disruption, and Authentication |
| 文献2 | arXiv:2405.00196 | IEEE S&P | 2405.00196 Synthetic Image Verification in the Era of Generative AI: What Works and What Isn't There Yet |
| 文献3 | DOI: 10.1109/ICASSP49357.2023.10094654 | ICASSP 2023 |
| 文献4 | arXiv:2404.10229 | ACM MM 2024 | DOI: 10.1145/3664647.3680562 |
| LoRA | arXiv:2106.09685 | 实现:pip install peft |
| 换脸工具 | hacksider/Deep-Live-Cam |
| 在线隐写工具 | 在线图片添加/解密隐藏信息(隐写术)工具 - 站长辅助工具 - 脚本之家在线工具 |
| 常用数据集 | FaceForensics++、Celeb-DF-v2、DFDC、GenImage、GenVideo |
🙏 声明
-
内容来源 :本文为个人学习笔记整理,全部素材来自公开发表的学术论文与开源项目,核心文献均已核对原文,不含任何内部资料或敏感信息。
-
本文改动:结构重排、原理补全、通俗化改写与工程建议补充(💡 补充 / ⚠️ 易错 / 📌 重点),并加入可运行代码片段。
-
合规声明 :文中涉及的后门、隐写、注入等技术,仅用于学术研究与防守侧检测(取证分析、内容审核、授权红队评估)。 将深度伪造用于诈骗、诽谤或伪造证件,将隐写用于未授权的隐蔽通信,将后门植入他人模型,均属违法。
-
如需转载请注明出处;如有侵权请联系删除。

