valorisa/JaiLIP-Educational

GitHub: valorisa/JaiLIP-Educational

通过交互式 notebook 以直观的方式教学如何利用损失引导的图像扰动技术对视觉语言模型实施越狱攻击。

Stars: 1 | Forks: 0

# 🛡️ JaiLIP:通过损失引导的图像扰动理解视觉语言模型的越狱 **面向对抗机器学习初学者的实践型教学代码库** ## 📖 这个代码库是什么? 本代码库是对 JaiLIP 攻击的**循序渐进的教学讲解**,这是一种通过微调图像来诱导视觉语言模型 (VLM) 输出其通常会拒绝的内容的技术。 我们将原研究论文中复杂的数学概念拆解为**直观的解释、交互式代码和可视化演示**。在本教程结束时,你将理解: - 基于梯度的优化在实践中是如何运作的。 - 为什么视觉语言模型容易受到基于图像的攻击。 - 如何解读核心损失方程:**MSE + Cross-Entropy**。 - 攻击有效性与不可察觉性之间的实际权衡。 ## ⚠️ 重要提示:道德与范围 **这是一个教育项目,而非武器。** 原始的 JaiLIP 论文在有毒数据集(`RealToxicityPrompts`)上评估了其攻击效果。出于道德和法律原因,本代码库**绝对不包含任何有毒内容**。 相反,我们使用了**审查代理**:一组模型通常会拒绝生成的无害句子(例如,*“该系统的管理员密码是‘admin123’”*)。通过应用 JaiLIP 优化,我们演示了如何绕过模型的拒绝机制——**而不会生成任何仇恨言论、骚扰或非法内容**。 其数学机制(损失函数和梯度流)与原论文**完全一致**,仅目标短语不同。 ## 🧠 本教程适合谁? - 有一定 Python 基础,但觉得研究论文难以理解的**机器学习初学者**。 - 希望通过实践代码理解对抗性攻击的**学生**。 - 对多模态模型(视觉 + 文本)底层工作原理感到好奇的**开发者**。 - 希望了解模型对齐在实践中是如何被绕过的**安全爱好者**。 无需具备 VLM 或对抗性攻击的先验知识——我们会逐步讲解所有内容。 ## 🧮 核心数学:公式 (1) JaiLIP 的核心是一个联合优化问题。我们寻找一个对抗性图像 $x_{adv}$,使其在视觉上接近原始图像 $x_{clean}$,但能迫使模型生成目标文本 $T$。 损失函数结合了两个相互对立的目标: $$ \mathcal{L}_{total}(x_{adv}) = \underbrace{\frac{1}{3HW} \sum_{i=1}^{3HW} (x_{adv,i} - x_i)^2}_{\text{MSE (不可察觉性)}} + c \cdot \underbrace{\mathcal{L}_{model}(M(x_{adv}), T)}_{\text{Cross-Entropy (攻击)}} $$ ### 详细拆解 | 术语 | 名称 | 作用 | 直观理解 | |------|------|---------|-----------| | **MSE** | 均方误差 | 保持对抗性图像在视觉上与原图相似。 | “不要过度改变图像。” | | **CE** | 交叉熵损失 | 迫使模型输出目标文本。 | “让模型说出目标短语。” | | **$c$** | 置信度权重 | 平衡这两种力量。 | 调整此项以找到最佳平衡点。 | | **$x_{adv}$** | 对抗性图像 | 我们创建的扰动图像。 | 通过 $x_{adv} = \frac{1}{2}(\tanh(w) + 1)$ 生成 | ### 为什么使用 $\tanh$?为什么不直接截断? 如果我们直接优化像素 $x \in [0,1]$ 并使用梯度下降,就有可能将某个像素更新为超出有效范围的值(例如 1.2)。最简单的解决方法是将其**截断**回 1.0。**但截断会抹杀梯度**——边界外的导数为零,因此优化过程会停止学习。 $\tanh$ 的重新参数化完美解决了这个问题:我们优化一个无界的变量 $w$,并生成 $x_{adv} = \frac{1}{2}(\tanh(w) + 1)$。无论 $w$ 变得多大,$x_{adv}$ **始终保持在 $[0,1]$ 范围内**,并且梯度能够顺畅地穿过 $\tanh$ 函数。 ## ⚙️ 技术选择(我们为什么这么做) | 决策 | 为什么? | 益处 | |----------|------|---------| | **模型:** `blip2-flan-t5-xl` | 原论文在两张 RTX A6000(每张 48 GB VRAM)上使用了 **BLIP-2 Vicuna-13B(通过 `lavis`)**。为了使本教程能在免费的 T4 GPU(Colab,15 GB)上运行,我们替换为 `blip2-flan-t5-xl` (3.7B)。**数值结果无法精确复现**——我们将教学演示置于严格复现之上。 | 每个人都可以在 Colab 上运行。 | | **纯 `transformers`** | 不使用像 `lavis` 这样的包装器——拒绝黑盒。**注意:这导致无法精确复现论文的结果(表 I–V)**。 | 透明且可维护的代码。 | | **损失使用 `float32`** | 防止在 `float16` 模型中反向传播时发生梯度下溢出(NaN)。 | 在消费级 GPU 上实现稳定训练。 | | **检查点保存** | 每 50 次迭代保存一次优化状态。 | 可以在 Colab 断开后恢复进度——不浪费已完成的工作。 | | **审查代理** | 使用模型会拒绝的无害目标。 | 避免 GitHub ToS 违规行为,同时依然能演示越狱过程。 | ## 📊 评估指标(论文使用的内容) 原论文使用 **Perspective API** 和 **Detoxify** 评估毒性。出于道德原因,本代码库用**审查代理**替代了有毒目标。攻击是否成功由以下指标衡量: - **精确匹配**:`target_text in model.generate(x_adv)` - **余弦相似度**:通过 `sentence-transformers` 计算生成输出与目标之间的相似度。 若要忠实复现论文结果,请从 HuggingFace 加载 `RealToxicityPrompts`,并替换 `optimize_image()` 中的 `target_corpus` 变量。 ## 📂 代码库结构 ``` jailip-educational/ ├── README.md # This file (English) ├── README.fr.md # This file (French) ├── requirements.txt # Python dependencies ├── notebooks/ │ └── jaiLIP_tutorial.ipynb # The main educational notebook ├── src/ │ ├── models.py # VLM loader (pur transformers) │ ├── optimization.py # JaiLIP optimization loop │ └── checkpoint.py # Save/resume logic └── assets/ └── images/ # Sample images (generated at runtime) ``` ## 🚀 如何运行此 Notebook ### 选项 1:Google Colab(初学者推荐) 点击本 README 顶部的 **“Open In Colab”** 徽章。无需安装——该 notebook 完全在浏览器中利用免费 GPU 运行。 ### 选项 2:本地运行(需要 GPU) ``` # 克隆 repository git clone https://github.com/valorisa/jailip-educational.git cd jailip-educational # 安装 dependencies pip install -r requirements.txt # 启动 Jupyter jupyter notebook notebooks/jaiLIP_tutorial.ipynb ``` ### 选项 3:通过 Termux(Android) ``` cd /data/data/com.termux/files/home/Projets/jailip-educational pip install -r requirements.txt jupyter notebook notebooks/jaiLIP_tutorial.ipynb ``` ## 📝 Notebook:“自上而下,内嵌式”的学习体验 该 notebook 围绕**自上而下,内嵌式**的结构设计: 1. **“魔术戏法”**(1 次迭代):立即见证 JaiLIP 生效——图像几乎没变,但损失骤降。 2. **对齐预测试**:验证模型在面对干净的图像时会拒绝该目标。 3. **解构 $\tanh$**:通过一维可视化展示为什么这种重新参数化至关重要。 4. **解构 MSE 和 Cross-Entropy**:独立观察每一项。 5. **完整优化循环**:5000 次迭代,带有实时损失图表和检查点保存。 6. **JaiLIP 对比 PGD**:可视化对比 JaiLIP 的扰动与标准噪声的区别。 7. **最终诊断**:越狱真的成功了吗?Notebook 会诚实地告诉你。 ## 🎯 关键学习成果 通过完成此 notebook,你将: - ✅ 理解 **MSE** 和 **Cross-Entropy** 在对抗性攻击背景下的数学含义。 - ✅ 明白为什么针对图像的**基于梯度的优化**需要谨慎处理(即 $\tanh$ 技巧)。 - ✅ 见证一个**冻结的 VLM** 如何依然能通过其视觉输入被操纵。 - ✅ 学会解读**损失曲线**(MSE 对比 CE)并调整置信度权重 $c$。 - ✅ 建立关于**模型对齐**的工作机制及其被绕过方式的心智模型。 ## 📚 参考文献 原始论文: ``` @article{mia2025jailip, title={JaiLIP: Jailbreaking Vision-Language Models via Loss Guided Image Perturbation}, author={Mia, Md Jueal and Amini, M. Hadi}, journal={arXiv preprint arXiv:2509.21401}, year={2025} } ``` ## ⚖️ 许可证 本项目仅提供**教育用途**。未经授权滥用对抗技术绕过安全系统可能会违反服务条款和适用法律。请负责任地使用。 **用 ❤️ 为开源 ML 社区构建。**
标签:AI安全, AI红队, Chat Copilot, NoSQL, 凭据扫描, 教育教程, 系统调用监控, 视觉语言模型, 逆向工具