phishguard-scaffold

GitHub
1k 169 中等 2 次阅读 1个月前语言模型其他
AI 解读 由 AI 自动生成,仅供参考

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
GPU
  • 非必需,推荐 NVIDIA GPU(用于 LLaMA 训练),支持 CPU 部署(DistilBERT)
  • 显存建议 8GB+
内存

未说明(建议 16GB+ 以处理大规模数据及模型)

依赖
notes使用真实 Twitter 数据需配置 API Token;LLaMA 模型权重需单独下载;支持 LoRA 微调以降低资源需求;首次运行需下载模型文件
python3.8+
torch>=2.0
transformers
mlflow
ray
tweepy
peft
accelerate
phishguard-scaffold hero image

快速开始

PhishGuard: 联合语义检测与传播控制

Python 3.8+ PyTorch License: MIT

一个基于 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.ptmodel.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)

📋 详细运行说明

🎯 快速导航


前置条件与安装

  1. 系统要求(含 GPU (图形处理器) 可选检查):

    # Check Python version (3.8+ required)
    python --version
    
    # Check available GPU (optional but recommended)
    nvidia-smi  # For NVIDIA GPUs
    
  2. 安装依赖:

    # 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
    
  3. 验证安装:

    # 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")

📈 扩展框架

添加新模型

  1. src/models/ 中遵循 PhishGuardClassifier 接口实现
  2. configs/config.yaml 中更新配置选项
  3. 使用现有训练管道进行测试

自定义损失函数

  1. src/training/adversarial.py 中添加新的损失组件
  2. src/training/train.py 中集成到联合优化
  3. 通过 YAML 设置配置权重

替代干预策略

  1. src/propagation/intervene.py 中实现新算法
  2. 遵循 greedy_minimize_spread 预期的接口
  3. 使用提供的影响指标进行评估

🤝 贡献

我们欢迎贡献!详情请参阅我们的 贡献指南

开发环境设置

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.mddocs/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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

74.9k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|2天前
开发框架其他