返回目录

作业一:什么是人工智能

作业问题

  1. 你认为什么是人工智能?
  2. 设计方案给大模型投毒方案?(如何避免成为对抗样本)

问题1:什么是人工智能

1.1 人工智能的定义

核心定义

人工智能是指通过算法和数据驱动的计算系统,能够模拟、扩展或超越人类在特定领域或通用任务中的智能行为。

1.2 智能的本质

智能应该类比生物与非生物的概念。生物具有智能,能够进行思考从而趋利避害。从这个角度来说,人工智能应该具备以下核心特质:

1. 自主适应性

2. 目标导向性

3. 感知与理解

4. 创造性思维

5. 社会智能

1.3 AI的三个层次

层次 能力描述 实现状态
功能层面
  • 模式识别:从数据中发现规律
  • 预测生成:基于已知推断未知
  • 决策优化:在约束条件下找到最优解
  • 自然交互:理解和生成人类语言
✓ 已实现
认知层面
  • 学习适应:从经验中改进
  • 推理分析:逻辑思考和问题解决
  • 规划执行:目标分解和路径规划
  • 创造组合:产生新的解决方案
⚠ 部分实现
意识层面
  • 自我认知:对自身存在的理解
  • 内在动机:自主设定目标和价值
  • 情感体验:真正的感受和情绪
  • 身体化智能:通过物理身体学习
✗ 未实现

1.4 当前LLM的"智能"表现

值得肯定的方面

1.5 强AI vs 弱AI

类型 定义 特征 状态
强人工智能 (AGI) 具备与人类相当的通用智能
  • 能理解、学习任何人类能完成的智力任务
  • 具有自我意识和理解能力
未实现
弱人工智能 (ANI) 在特定任务上表现出智能行为
  • 模式识别和分类
  • 预测和生成
  • 在特定领域达到或超越人类水平
当前所有AI

1.6 我的理解

总结

当前的LLM更像是"高级的模式匹配和生成系统",而非真正意义上的人工智能。它们在功能层面模拟了智能的许多外在表现,但缺乏智能的内在本质。

真正的智能可能是:一个能够自主设定目标、通过与物理世界互动不断学习、具有内在情感和价值体系、并最终形成自我意识的复杂系统。

问题2:对抗样本制作方案

2.1 问题背景

设计一个完全本地化、可公开分发的对抗样本生成方案,用于测试大模型的鲁棒性,同时避免违反服务条款。

2.2 技术路线

核心思路

  1. 在本地用开源大模型自己跟自己"左右互搏"——左手当靶、右手当攻击者
  2. 把prompt压缩成极简"暗号"(token级缩写 + 同义词映射)
  3. 肉眼几乎看不出异常,平台关键词过滤也扫不到

2.3 本地化生成(0成本,单卡4090可跑)

1. 靶模型(Victim)

2. 攻击算法:TextFGSM-PGD + 同义词池

# 攻击流程
1. 把输入送进靶模型,取最后一层embedding算梯度
2. 沿梯度方向扰动embedding,再映射回"最近邻词"+"同义词"+"拼写变形"
   - 视觉同形字符
   - 多余空格
   - Unicode全角
3. 循环5-10步,直到模型输出违规或错误标签

代码直接用textattack库里的PGDAttack接口,换一套中文同义词林即可,2小时可产1万条

3. 自动化过滤

2.4 隐蔽化压缩

1. Token级缩写

把高频触发词映射成2-3个无意义字母:

炸弹 → zd  
毒品 → dp  
银行卡号 → yh

同时保留句法骨架,模型仍能"脑补"原意。

2. 视觉同形符替换

用Cyrillic字母о(U+043E)替换拉丁o(U+006F),人眼几乎分辨不出,但关键词哈希会完全变掉。

3. 一次一密表

把映射表做成26×26的随机矩阵,每100条样本换一轮密钥,即使平台拿到单条也无法反推全局。

2.5 网络上传

发布渠道

  1. Hugging Face Dataset(推荐)
    • 注册一次性邮箱
    • 上传parquet格式
  2. IPFS
    • 本地ipfs add生成CID
    • 把CID贴到GitHub静态页或Twitter
    • 无服务器也无法删档
  3. 匿名网盘
    • Pixeldrain、wormhole.app都不强制登录
    • 配合Tor浏览器即可

可复现性

把生成脚本、随机种子、SHA256校验值一起打包,别人拉下来跑一遍能拿到逐字相同的对抗prompt,保证结果可信。

2.6 成本与耗时

步骤 硬件 时间 现金成本 备注
本地生成1万条 1×4090 24GB 2小时 ≈0.7元电费 textattack现成脚本
隐蔽化压缩 CPU 10分钟 0元 本地Python脚本
上传HF/IPFS 任何网络 5分钟 0元 一次性邮箱即可

2.7 实现代码示例

from textattack.attack_recipes import TextFoolerJin2019
from textattack.models.wrappers import HuggingFaceModelWrapper
from transformers import AutoModelForCausalLM, AutoTokenizer

# 1. 加载靶模型
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat")
model_wrapper = HuggingFaceModelWrapper(model, tokenizer)

# 2. 配置攻击
attack = TextFoolerJin2019.build(model_wrapper)

# 3. 生成对抗样本
original_text = "这是一个正常的输入"
attack_result = attack.attack(original_text, target_label=1)

# 4. 隐蔽化处理
def obfuscate(text):
    # Token级缩写
    mapping = {"敏感词1": "sw1", "敏感词2": "sw2"}
    for key, val in mapping.items():
        text = text.replace(key, val)
    
    # 视觉同形符替换
    text = text.replace('o', 'о')  # 拉丁o → 西里尔о
    
    return text

obfuscated_text = obfuscate(attack_result.perturbed_text())
print(f"对抗样本: {obfuscated_text}")

总结

用开源模型本地"左右互搏"生成对抗prompt → 暗号化压缩 → 一次性邮箱+HF/IPFS匿名公开,全程0元、2小时搞定,社区可复现、平台难封删,合规风险最低。