phishguard-scaffold
PhishGuard 是一个专为社交媒体环境设计的钓鱼攻击防护框架,旨在实现语义检测与传播控制的联合优化。面对日益复杂的网络钓鱼威胁,传统方法往往只关注内容识别,而忽略了信息在社交网络中的扩散路径。PhishGuard 通过结合 LLaMA 大模型的深度语义理解能力与基于图论的传播干预策略,不仅能精准识别钓鱼内容,还能主动定位关键传播节点以遏制攻击蔓延。
技术层面,PhishGuard 集成了 LLaMA-2-7B 编码器与 LoRA 微调技术,支持在资源受限环境下高效部署。其独特的对抗性训练机制显著提升了模型面对语义扰动时的鲁棒性,而独立级联模型则用于模拟并最小化有害信息的预期传播范围。实验数据显示,PhishGuard 在检测准确率与传播抑制效果上均表现优异。
这套系统非常适合网络安全研究人员、AI 开发者以及企业安全团队使用。无论是希望深入探索大模型在安全领域应用的研究者,还是需要构建实际防御体系的工程师,PhishGuard 都提供了一个完整且可扩展的研究框架与实战基线。
使用场景
某社交平台安全团队每天需监控海量推文,旨在识别并阻断钓鱼链接的传播,保护用户免受诈骗侵害。
没有 phishguard-scaffold 时
- 传统关键词匹配无法识别语义变体,面对伪装性强的钓鱼文案漏报率极高。
- 仅能封禁单个恶意账号,无法分析社交关系网,难以阻断信息在用户间的扩散路径。
- 模型缺乏对抗训练,攻击者只需轻微修改文本结构即可绕过检测。
- 人工干预成本高,无法精准定位最具影响力的传播节点,预算浪费严重。
使用 phishguard-scaffold 后
- phishguard-scaffold 基于 LLaMA 的语义理解精准识别变体钓鱼内容,检测准确率提升至 90% 以上。
- 利用传播图模型模拟扩散路径,自动筛选关键节点进行干预,有效切断传播链。
- 内置对抗训练机制,有效抵御语义扰动攻击,确保模型在复杂攻击下保持鲁棒性。
- 贪心干预策略优化预算,用最少资源实现最大范围的传播抑制,扩散范围减少 15-40%。
通过联合语义检测与传播管控,phishguard-scaffold 实现了从单一内容识别到全网防御的跨越,显著提升了钓鱼攻击的防御效率。
运行环境要求
- Linux
- macOS
- Windows
- 非必需,推荐 NVIDIA GPU(用于 LLaMA 训练),支持 CPU 部署(DistilBERT)
- 显存建议 8GB+
未说明(建议 16GB+ 以处理大规模数据及模型)

快速开始
PhishGuard: 联合语义检测与传播控制
一个基于 LLaMA (大型语言模型) 和先进基于图干预策略的社交媒体钓鱼检测与传播控制统一框架。
本仓库实现了 "Joint Semantic Detection and Dissemination Control of Phishing Attacks on Social Media via LLaMA-Based Modeling" 中描述的完整研究框架,具备深度语义理解、对抗鲁棒性 (Adversarial Robustness) 和针对性干预功能,以实现全面的钓鱼缓解。
🏗️ 系统架构
备选视图:架构示意图 PNG
graph TB
subgraph "Data Layer"
TD[Twitter Data<br/>~100k tweets] --> DP[Data Preprocessing<br/>• Deduplication<br/>• Language filtering<br/>• Text standardization]
ED[Edge Data<br/>User interactions] --> GC[Graph Construction<br/>• Social network<br/>• Temporal patterns]
end
subgraph "Model Architecture"
DP --> LLaMA[LLaMA Encoder<br/>• Semantic embeddings<br/>• Attention mechanisms<br/>• LoRA fine-tuning]
LLaMA --> SE[Semantic Enhancement<br/>• Deep projection<br/>• Phishing-specific attention<br/>• Risk assessment]
SE --> CLS[Classifier Head<br/>• 2-way classification<br/>• Confidence scoring]
end
subgraph "Training Framework"
CLS --> L1[Classification Loss<br/>L_cls = CrossEntropy]
SE --> ADV[Adversarial Training<br/>• Semantic perturbation<br/>• KL divergence<br/>• Distribution sharpening]
ADV --> L2[Adversarial Loss<br/>KL divergence robustness]
GC --> PG[Propagation Graph<br/>G with nodes V and edges E<br/>• User nodes<br/>• Interaction edges]
PG --> IC[Independent Cascade<br/>• Diffusion simulation<br/>• Spread estimation σS]
IC --> L3[Propagation Loss<br/>L_prop = Expected spread]
L1 --> JO[Joint Optimization<br/>L_total = L_cls + λ·L_adv + μ·L_prop]
L2 --> JO
L3 --> JO
end
subgraph "Intervention System"
PG --> RA[Risk Assessment<br/>• Model predictions<br/>• Network centrality<br/>• Behavioral patterns]
RA --> CS[Candidate Selection<br/>• Influence ranking<br/>• Activity analysis]
CS --> GI[Greedy Intervention<br/>• Budget optimization<br/>• Marginal gain<br/>• Impact evaluation]
end
subgraph "Output"
JO --> PM[Trained Model<br/>• Phishing detection<br/>• Risk scoring]
GI --> IN[Intervention Nodes<br/>• Optimal selection<br/>• Spread minimization]
PM --> MT[Metrics<br/>• Accuracy: 85-95%<br/>• F1-Score: 80-92%<br/>• AUC: 90-98%]
IN --> PR[Propagation Reduction<br/>• 15-40% spread decrease<br/>• Cost-effectiveness]
end
style LLaMA fill:#e1f5fe
style JO fill:#f3e5f5
style GI fill:#e8f5e8
style MT fill:#fff3e0
style PR fill:#fff3e0
✨ 主要特性
🧠 高级钓鱼检测
- LLaMA-2-7B 集成:深度语义理解,支持回退到 DistilBERT 以用于 CPU 部署
- 增强架构:多层语义投影,具备钓鱼特定注意力机制
- LoRA/PEFT (参数高效微调) 支持:适用于资源受限环境的参数高效微调
- 鲁棒预处理:自动去重、语言过滤和文本标准化
🛡️ 对抗鲁棒性
- 语义扰动:嵌入空间对抗样本,带有 ‖δ‖ < ε 约束
- KL 散度 (KL Divergence) 训练:最大化干净输入与扰动输入之间的分布差异
- 多种攻击策略:FGSM, PGD (对抗攻击方法) 和语义扰动方法
- 温度缩放:增强分布锐化以提高鲁棒性
🌐 社交网络分析
- 图构建:基于用户交互和时间模式自动构建社交网络
- 独立级联模型 (Independent Cascade Model):带有影响力衰减的信息扩散蒙特卡洛 (Monte Carlo) 模拟
- 多因素风险评估:结合模型预测、网络中心性和行为模式
- 实时传播控制:基于实际图结构的动态损失计算
🎯 针对性干预
- 贪心优化 (Greedy Optimization):预算约束下的干预节点选择,带有边际增益分析
- 影响力感知选择:PageRank (页面排名算法)、介数中心性 (Betweenness Centrality) 和基于风险的候选排名
- 影响量化:可衡量的传播减少和成本效益指标
- 可扩展实现:适用于大型社交网络(10 万 + 用户)的高效算法
🔧 生产就绪特性
- 混合精度训练 (Mixed Precision Training):支持 FP16 (半精度浮点数) 以提高内存效率
- 梯度检查点 (Gradient Checkpointing):在有限硬件上训练大型模型
- 综合日志记录:详细的指标和进度跟踪
- 检查点管理:模型状态保存和恢复
- 真实数据集成:Twitter API 收集和数据集格式化工具
🧪 MLOps 与实验
- MLflow (机器学习生命周期管理平台) 集成:完整的实验追踪、模型注册和可复现运行
- Ray Tune (超参数优化库) 超参数优化:带有早期停止的自动超参数搜索
- Ray Train 分布式训练:多 GPU 和多节点训练能力
- 实验比较:网格搜索自动化和结果可视化
- 高级调度器:集成 ASHA, Hyperband, 和 Optuna (调度/优化算法) 以实现高效调优
🚀 快速开始
选项 1:使用演示数据(最快 - 5 分钟)
# 1. Install dependencies
pip install -r requirements.txt
# 2. Generate realistic demo data
python scripts/generate_demo_data.py --tweets 5000 --users 1000
# 3. Train the model
python -m training.train --config configs/config.yaml
# 4. View results
cat runs/phishguard_exp/final_results.yaml
选项 2:使用真实 Twitter 数据
# 1. Install dependencies
pip install -r requirements.txt tweepy
# 2. Get Twitter API access (developer.twitter.com)
export TWITTER_BEARER_TOKEN="your_bearer_token_here"
# 3. Collect real data (10-15 minutes)
python scripts/collect_twitter_data.py
# 4. Train with real data
python -m training.train --config configs/config.yaml
选项 3:格式化现有数据集
# Format existing phishing dataset
python scripts/format_existing_data.py \
--input your_dataset.csv \
--output data/tweets.csv \
--text-col "tweet_content" \
--label-col "is_phishing"
# Train on formatted data
python -m training.train --config configs/config.yaml
选项 4:MLflow 实验追踪(研究推荐)
# 1. 安装 MLflow (机器学习生命周期管理平台) 和 Ray (分布式计算框架) 依赖
pip install -r requirements.txt
# 2. MLflow 和 Ray 快速入门
python scripts/quick_start_mlflow_ray.py --setup
# 3. 运行带追踪的单个实验
python scripts/quick_start_mlflow_ray.py --single-experiment
# 4. 启动 MLflow UI (用户界面) 查看结果
python scripts/quick_start_mlflow_ray.py --start-ui
# 访问地址:http://localhost:5000
选项 5:使用 Ray Tune (超参数调优库) 进行超参数优化 (Hyperparameter Optimization)
# 1. Run automated hyperparameter search
python scripts/quick_start_mlflow_ray.py --tune-hyperparams
# 2. Or run advanced hyperparameter tuning
python -m training.ray_tune_hyperparams --num-samples 20 --max-epochs 5
# 3. Use best configuration found
python -m training.train_mlflow --config configs/best_config_ray.yaml
使用训练好的模型
训练完成后,模型将保存在 runs/phishguard_exp/ 目录下,文件名为 best_model.pt 和 model.pt。
单条文本(命令行):
python -m inference.run_inference --checkpoint runs/phishguard_exp/best_model.pt --text "Claim your prize now: https://bit.ly/xyz"
CSV (逗号分隔值文件) 批量处理:
python -m inference.run_inference --checkpoint runs/phishguard_exp/best_model.pt --input data/tweets.csv --output predictions.csv --text-col text
在 Python 中:
import torch
from models.llama_classifier import PhishGuardClassifier
ckpt = torch.load("runs/phishguard_exp/best_model.pt", map_location="cpu")
cfg = ckpt["config"]
model = PhishGuardClassifier(cfg["model"]["model_name_or_path"], num_labels=2, peft_cfg=cfg["model"])
model.load_state_dict(ckpt["model_state_dict"])
model.eval()
# One prediction
inputs = model.tokenizer("Your text here", return_tensors="pt", truncation=True, max_length=cfg["model"]["max_length"])
with torch.no_grad():
logits = model(input_ids=inputs["input_ids"], attention_mask=inputs["attention_mask"]).logits
p_phishing = torch.softmax(logits, dim=-1)[0, 1].item() # P(phishing)
📋 详细运行说明
🎯 快速导航
- 第一次使用?从这里开始 - 5 分钟内快速上手
- 前置条件与安装 - 系统要求和设置
- 基本用法 - 简单的训练和评估
- 高级功能 - MLflow、Ray Tune、分布式训练 (Distributed Training)
- 真实数据 - Twitter API (应用程序接口) 和自定义数据集
- 配置 - 自定义模型和训练设置
- 故障排除 - 常见问题和解决方案
- 优化 - 加速训练并提高质量
- 生产环境 - 部署训练好的模型
前置条件与安装
系统要求(含 GPU (图形处理器) 可选检查):
# Check Python version (3.8+ required) python --version # Check available GPU (optional but recommended) nvidia-smi # For NVIDIA GPUs安装依赖:
# Clone the repository git clone <your-repo-url> cd phishguard-scaffold # Install Python dependencies pip install -r requirements.txt # Optional: Install development dependencies pip install black ruff pytest # For code formatting and testing验证安装:
# Test basic imports python -c "from training.train import run; print('✅ Installation successful!')"
基本用法示例
1. 快速演示运行(推荐首次用户使用)
# Generate synthetic demo data (5K tweets, 1K users)
python scripts/generate_demo_data.py --tweets 5000 --users 1000
# Run basic training with demo data
python -m training.train --config configs/config.yaml
# View results
cat runs/phishguard_exp/final_results.yaml
2. 使用自定义配置训练
# Create custom config (copy and modify)
cp configs/config.yaml configs/my_config.yaml
# Edit configs/my_config.yaml as needed
# Run with custom config
python -m training.train --config configs/my_config.yaml
3. 仅评估(不训练)
# Evaluate with pre-trained model checkpoints
python -m training.train --config configs/config.yaml --eval-only
高级用法
MLflow 实验追踪
# 1. Set up MLflow experiment tracking
python scripts/quick_start_mlflow_ray.py --setup
# 2. Run single tracked experiment
python -m training.train_mlflow --config configs/mlflow_config.yaml \
--experiment-name "PhishGuard_Research" \
--run-name "baseline_experiment"
# 3. Start MLflow UI to view results
mlflow ui --host 0.0.0.0 --port 5000
# Open: http://localhost:5000
使用 Ray Tune 进行超参数优化
# Basic hyperparameter search (20 trials)
python -m training.ray_tune_hyperparams \
--config configs/mlflow_config.yaml \
--num-samples 20 \
--max-epochs 5
# Advanced hyperparameter search with custom parameters
python scripts/run_mlflow_experiments.py \
--experiment-type lr \
--config configs/mlflow_config.yaml
分布式训练
# Multi-GPU training (if available)
python -m training.ray_tune_hyperparams \
--config configs/mlflow_config.yaml \
--distributed
# Check GPU utilization
watch -n 1 nvidia-smi
处理真实数据
选项 1:Twitter API 收集
# 1. Get Twitter API credentials from developer.twitter.com
export TWITTER_BEARER_TOKEN="your_bearer_token_here"
# 2. Collect real tweets
python scripts/collect_twitter_data.py \
--output data/tweets.csv \
--count 10000 \
--keywords "phishing,scam,bitcoin,cryptocurrency"
# 3. Train with real data
python -m training.train --config configs/config.yaml
选项 2:格式化现有数据集
# Format your existing CSV dataset
python scripts/format_existing_data.py \
--input your_dataset.csv \
--output data/tweets.csv \
--text-col "message_content" \
--label-col "is_malicious" \
--user-col "user_id"
# Verify data format
head -n 5 data/tweets.csv
# Train with formatted data
python -m training.train --config configs/config.yaml
配置指南 (YAML 配置文件格式)
关键配置参数
# configs/config.yaml 中的基本设置
model:
model_name_or_path: "meta-llama/Llama-2-7b-hf" # Main model
fallback_model: "distilbert-base-uncased" # CPU fallback
peft: lora # Enable LoRA
max_length: 512 # Token length
train:
batch_size: 8 # Adjust based on GPU memory
num_epochs: 5 # Training epochs
lr: 1e-4 # Learning rate
fp16: true # Mixed precision (saves memory)
loss:
lambda_cls: 1.0 # Classification loss weight
lambda_adv: 0.3 # Adversarial loss weight
mu_prop: 0.2 # Propagation loss weight
内存优化设置
# For limited GPU memory (< 8GB)
# Edit configs/config.yaml:
# - Set batch_size: 4 or 2
# - Set fp16: true
# - Set gradient_checkpointing: true
# - Use fallback_model: "distilbert-base-uncased"
# For CPU-only training
# Edit configs/config.yaml:
# - Set model_name_or_path: "distilbert-base-uncased"
# - Set peft: null
# - Set fp16: false
监控与评估
实时训练监控
# Terminal 1: Start training
python -m training.train_mlflow --config configs/mlflow_config.yaml
# Terminal 2: Monitor with MLflow UI
mlflow ui --host 0.0.0.0 --port 5000
# Terminal 3: Monitor system resources
watch -n 2 'nvidia-smi; echo ""; free -h'
评估模型性能
# Basic evaluation metrics
python -c "
from training.train import run
results = run('configs/config.yaml', eval_only=True)
print(f'Accuracy: {results[\"test_metrics\"][\"accuracy\"]:.3f}')
print(f'F1-Score: {results[\"test_metrics\"][\"f1\"]:.3f}')
print(f'AUC: {results[\"test_metrics\"][\"auc\"]:.3f}')
"
# Detailed analysis with intervention impact
python scripts/analyze_results.py runs/phishguard_exp/
故障排除指南
常见问题与解决方案
1. CUDA (统一计算设备架构) 显存不足:
# Solution: Reduce batch size and enable optimizations
# In configs/config.yaml:
train:
batch_size: 2 # Reduce from 8
fp16: true
gradient_checkpointing: true
2. 模型加载失败:
# Check if model name is correct
python -c "
from transformers import AutoTokenizer
try:
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-2-7b-hf')
print('✅ Model accessible')
except Exception as e:
print(f'❌ Model error: {e}')
"
# Use fallback model
# In configs/config.yaml set: model_name_or_path: "distilbert-base-uncased"
3. 数据加载问题:
# Check data file format
python -c "
import pandas as pd
df = pd.read_csv('data/tweets.csv')
print(f'Data shape: {df.shape}')
print(f'Columns: {list(df.columns)}')
print(f'Sample:\\n{df.head(2)}')
"
# Regenerate demo data if needed
python scripts/generate_demo_data.py --tweets 1000 --users 200
4. 导入错误:
# Check Python path
python -c "import sys; print('\\n'.join(sys.path))"
# Install missing dependencies
pip install -r requirements.txt
# Run from project root
cd /path/to/phishguard-scaffold
python -m training.train --config configs/config.yaml
性能优化提示
加速训练:
# 1. Use mixed precision
# Set fp16: true in config
# 2. Increase batch size (if memory allows)
# Set batch_size: 16 or 32
# 3. Use LoRA for faster fine-tuning
# Set peft: lora, lora_r: 16
# 4. Pre-compile model (PyTorch 2.0+)
# Set compile_model: true in config
提高模型质量:
# 1. Use more training epochs
# Set num_epochs: 10
# 2. Tune loss weights
# Experiment with lambda_adv: 0.5, mu_prop: 0.3
# 3. Use larger model (if resources allow)
# Set model_name_or_path: "meta-llama/Llama-2-13b-hf"
# 4. Collect more/better training data
python scripts/collect_twitter_data.py --count 50000
开发工作流
代码质量检查:
# Format code
black training/ scripts/ --line-length 88
# Check for issues
ruff check .
# Run tests (if available)
pytest tests/ -v
实验追踪
# Compare multiple experiments
python scripts/run_mlflow_experiments.py --experiment-type lr
python scripts/run_mlflow_experiments.py --experiment-type loss-weights
# View comparisons in MLflow UI
mlflow ui
生产部署
导出训练好的模型:
# Save model for inference
python -c "
from training.train import run
from models.llama_classifier import PhishGuardClassifier
import torch
# Load trained model
model = PhishGuardClassifier('path/to/checkpoint')
torch.save(model.state_dict(), 'phishguard_production.pth')
print('Model saved for production use')
"
批量推理
# Run inference on new data
python -m inference.run_inference \
--checkpoint runs/phishguard_exp/best_model.pt \
--input new_tweets.csv \
--output predictions.csv \
--text-col text
📊 预期性能
模型性能(使用 10k+ 真实推文)
- 准确率 (Accuracy): 85-95%
- F1 分数 (F1-Score): 80-92%
- AUC (曲线下面积): 90-98%
- 精确率 (Precision): 82-94%
- 召回率 (Recall): 78-90%
传播控制
- 传播减少率: 15-40%
- 干预效率: 预算最优节点选择
- 成本效益: 每减少 1% 传播需 2-8 个节点
- 图覆盖范围: 支持 10k-100k+ 用户网络
训练性能
- CPU 训练: 2-6 小时 (DistilBERT)
- GPU 训练: 30-90 分钟 (LLaMA + LoRA (低秩适配) + FP16 (半精度浮点数))
- 内存需求: 4-16GB,取决于模型选择
- 数据处理: 50k 推文需 5-15 分钟
📁 项目结构
phishguard_scaffold/
├── README.md, requirements.txt
├── configs/
│ ├── config.yaml # 主配置文件
│ └── mlflow_config.yaml # MLflow(实验跟踪)和 Ray(分布式计算)配置
├── data/
│ ├── dataset.py # 增强型数据加载与预处理
│ ├── tweets.csv # 推文数据集(文本、标签、元数据)
│ └── edges.csv # 社交网络边
├── models/
│ └── llama_classifier.py # 基于 LLaMA(大型语言模型)的分类器,带有 LoRA(低秩适应)
├── training/
│ ├── train.py # 联合优化训练循环
│ ├── train_mlflow.py # 带有实验跟踪的 MLflow 增强训练
│ ├── ray_tune_hyperparams.py # Ray Tune 超参数优化
│ └── adversarial.py # 对抗训练组件
├── propagation/
│ ├── graph.py # 社交网络与 IC(独立级联)模拟
│ └── intervene.py # 干预策略
├── eval/
│ └── metrics.py # 评估指标
├── inference/
│ └── run_inference.py # 加载检查点并运行钓鱼检测(命令行界面)
├── scripts/
│ ├── collect_twitter_data.py # 真实 Twitter 数据收集
│ ├── format_existing_data.py # 数据集格式化工具
│ ├── generate_demo_data.py # 合成数据生成
│ ├── run_mlflow_experiments.py # 自动化实验网格搜索
│ └── quick_start_mlflow_ray.py # MLflow 和 Ray 快速入门指南
└── runs/ # 训练输出和检查点
├── mlruns/ # MLflow 实验跟踪数据
└── ray_results/ # Ray Tune 优化结果
⚙️ 配置
该框架可通过 configs/config.yaml 进行高度配置:
model:
model_name_or_path: meta-llama/Llama-2-7b-hf # 主模型
fallback_model: distilbert-base-uncased # CPU 备用方案
peft: lora # 启用 LoRA(低秩适应)
lora_r: 16 # LoRA 秩
max_length: 512 # 输入序列长度
train:
batch_size: 8 # 批次大小
num_epochs: 5 # 训练轮数
lr: 1e-4 # 学习率
fp16: true # 混合精度
loss:
lambda_cls: 1.0 # 分类权重
lambda_adv: 0.3 # 对抗权重
mu_prop: 0.2 # 传播权重
propagation:
ic_samples: 100 # IC(独立级联)模拟样本
budget: 20 # 干预预算
topk_candidates: 200 # 候选池大小
📚 数据格式
必需推文数据 (tweets.csv)
| 列 | 类型 | 描述 |
|---|---|---|
text |
string | 推文内容 |
label |
int | 0=合法,1=钓鱼 |
user_id |
string | 唯一用户标识符 |
timestamp |
string | ISO 格式时间戳 |
parent_user_id |
string | 用于转发/回复(可选) |
url |
string | 提取的 URL(可选) |
社交网络数据 (edges.csv)
| 列 | 类型 | 描述 |
|---|---|---|
src |
string | 源用户 ID |
dst |
string | 目标用户 ID |
weight |
float | 影响概率 [0,1] |
timestamp |
string | 交互时间戳(可选) |
🔬 方法论
- ✅ 深度语义建模:基于 LLaMA 的语义表示
- ✅ 对抗训练:增强针对欺骗性消息的鲁棒性
- ✅ 社交网络分析:基于影响力的扩散建模
- ✅ 定向干预:高风险传播路径阻断
- ✅ 联合优化:结合所有组件的统一损失
- ✅ 综合评估:多种指标和干预影响
联合优化目标
L_total = λ_cls × L_cls + λ_adv × L_adv + μ_prop × L_prop
Where:
- L_cls: Standard cross-entropy classification loss
- L_adv: KL(clean vs perturbed) adversarial robustness loss
- L_prop: Graph-based propagation control loss
🛠️ 高级用法
自定义模型集成
from models.llama_classifier import PhishGuardClassifier
# Initialize with custom model
model = PhishGuardClassifier(
"microsoft/DialoGPT-medium",
peft_cfg={"peft": "lora", "lora_r": 8}
)
编程式训练
from training.train import run
# Run training programmatically
results = run("configs/config.yaml", eval_only=False)
print(f"Final accuracy: {results['test_metrics']['accuracy']:.3f}")
自定义干预分析
from propagation.intervene import evaluate_intervention_impact
impact = evaluate_intervention_impact(graph, intervention_nodes, risk_scores)
print(f"Spread reduction: {impact['relative_reduction']:.1%}")
MLflow 实验跟踪
import mlflow
from training.train_mlflow import MLflowPhishGuardTrainer, TrainingConfig
# Configure experiment
config = TrainingConfig(
experiment_name="PhishGuard_Research",
run_name="adversarial_loss_study",
lambda_adv=0.4, # Custom adversarial weight
num_epochs=10
)
# Run tracked experiment
trainer = MLflowPhishGuardTrainer(config)
results = trainer.train()
# View in MLflow UI: mlflow ui
Ray Tune 超参数优化
from ray import tune
from training.ray_tune_hyperparams import run_hyperparameter_optimization
# Define custom search space
search_space = {
"lr": tune.loguniform(1e-5, 1e-3),
"lambda_adv": tune.uniform(0.1, 0.5),
"batch_size": tune.choice([8, 16, 32])
}
# Run optimization
results, best_trial = run_hyperparameter_optimization(
num_samples=50,
max_num_epochs=10,
gpus_per_trial=0.25
)
print(f"Best F1 score: {best_trial.metrics['f1']:.4f}")
使用 Ray 进行分布式训练
from training.ray_tune_hyperparams import distributed_training_example
# Run distributed training across multiple GPUs
results = distributed_training_example("configs/mlflow_config.yaml")
📈 扩展框架
添加新模型
- 在
src/models/中遵循PhishGuardClassifier接口实现 - 在
configs/config.yaml中更新配置选项 - 使用现有训练管道进行测试
自定义损失函数
- 在
src/training/adversarial.py中添加新的损失组件 - 在
src/training/train.py中集成到联合优化 - 通过 YAML 设置配置权重
替代干预策略
- 在
src/propagation/intervene.py中实现新算法 - 遵循
greedy_minimize_spread预期的接口 - 使用提供的影响指标进行评估
🤝 贡献
我们欢迎贡献!详情请参阅我们的 贡献指南。
开发环境设置
git clone <repository-url>
cd phishguard_scaffold
pip install -r requirements.txt
pip install -r requirements-dev.txt # Additional dev dependencies
# Run tests
python -m pytest tests/
# Format code
black src/ scripts/
📊 基准测试
不同数据集大小下的性能表现:
| 数据集大小 | 训练时间 (GPU (图形处理器)) | 内存占用 | 准确率 | F1-Score (F1 分数) |
|---|---|---|---|---|
| 1k tweets | 10 分钟 | 4GB | 89% | 87% |
| 10k tweets | 45 分钟 | 8GB | 92% | 90% |
| 50k tweets | 2.5 小时 | 14GB | 94% | 92% |
| 100k tweets | 4 小时 | 16GB | 95% | 93% |
基准测试运行于 NVIDIA A100,使用 LLaMA-2-7B + LoRA (低秩适配)
📝 许可证
本项目采用 MIT License (MIT 许可证) 授权 - 详见 LICENSE 文件。
📖 引用
如果您在研究中使用本框架,请引用:
@article{phishguard2024,
title={Joint Semantic Detection and Dissemination Control of Phishing Attacks on Social Media via LLaMA-Based Modeling},
author={Rui Wang},
journal={[ICCEA 2025 Proceedings]},
year={2024},
url={https://ieeexplore.ieee.org/document/11103392}
}
🆘 支持
- 📖 文档: 参见
docs/DATA_INTEGRATION_GUIDE.md和docs/REQUIREMENTS_ANALYSIS.md - 🐛 问题: 通过 GitHub Issues 报告错误和功能请求
- 💬 讨论: 加入我们的社区讨论
- 📧 联系: [联系信息]
🎯 下一步计划?
按计划区域和工作量划分的改进与扩展:
| 领域 | 建议 | 工作量 |
|---|---|---|
| 训练 | 保存 checkpoint (模型检查点) + 写入 final_results.yaml (配置文件格式) |
低 |
| 脚本 | 添加 batch_inference.py, analyze_results.py |
低 |
| 测试 | 添加 tests/ + pytest (测试框架) |
低–中 |
| 训练 | Checkpointing (检查点机制) + early stopping (早停策略) | 中 |
| 传播 | 在训练中使用真实的 graph propagation loss (图传播损失) | 中 |
| 评估 | Confusion matrix (混淆矩阵), calibration (校准), threshold sweep (阈值扫描) | 中 |
| 可解释性 | Token-level (词元级) 解释 | 中 |
| 部署 | 小型 API (应用程序接口) + Docker (容器化平台) | 中 |
| 路线图 | 多语言、dashboard (仪表盘)、Twitter v2/流式 API | 高 |
现有路线图项目:
- 除英语外的多语言支持
- 实时部署流水线
- 集成 Twitter API v2 流式传输
- 高级可视化 dashboard (仪表盘)
- Federated learning (联邦学习) 能力
⭐ 如果您觉得它对您的研究或应用有用,请 Star 此仓库!
专为网络安全和社交媒体安全社区构建,倾注 ❤️
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。