Skip to content

grow-ai-like-a-child/VLM_MetaCognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VLM Metacognition Analysis

📋 项目概述

本项目研究视觉语言模型(VLM)的元认知能力,通过拟合多种认知模型和校准分析来研究VLM的置信度生成机制。项目包含Python和MATLAB两种实现方式,支持logits和self-report两种置信度测量方法,并提供完整的校准分析(4种校准指标)。

🎯 核心内容

📊 模型拟合

  • 5种认知模型: SDT, PE, WEV, LogN, BCH
  • 两种实现: Python (PyBADS) 和 MATLAB (BADS)
  • 两种数据: Logits-based 和 Self-report confidence

📈 校准分析 (Calibration Analysis)

  • 4种校准指标:
    • ECE (absolute): 绝对误差版本的期望校准误差
    • ECE (squared): 平方误差版本的期望校准误差
    • ROC AUC: 标准ROC曲线下面积
    • Selective Accuracy AUC: 选择性准确率曲线下面积
  • 多维度分析: 按VLM模型、按任务、按VLM-任务组合
  • 可视化: 校准曲线和指标图表

📋 分析结果

  • 模型比较: 基于AIC/BIC的模型选择
  • 校准分析: 置信度校准曲线和指标
  • 统计表格: 模型拟合结果汇总

📁 项目结构

VLM_MetaCognition/
├── README.md                          # 项目说明文档
├── requirements.txt                   # Python依赖
├── data/                              # 📂 数据文件
│   ├── logits/                       # Logits数据
│   ├── self_report/                  # Self-report数据
│   ├── model_fitting_matlab/         # MATLAB拟合数据
│   └── figure_data/                  # 图表数据
├── scripts/                           # 🔧 分析脚本
│   ├── model_fitting_python/         # Python模型拟合
│   ├── model_fitting_matlab/         # MATLAB模型拟合
│   ├── analysis/                     # 校准分析脚本
│   │   ├── calculate_calibration_metrics_full.py
│   │   ├── calculate_calibration_metrics.py
│   │   └── calibration_analysis.py
│   ├── figures/                      # 图表生成
│   └── tables/                       # 表格生成
├── results/                          # 📋 分析结果
│   ├── model_fitting/                # 模型拟合结果
│   │   ├── python/                   # Python结果
│   │   └── matlab/                   # MATLAB结果
│   ├── calibration_full/             # 完整校准分析结果
│   │   ├── calibration_by_model_full.csv      # 按VLM模型分组
│   │   ├── calibration_by_task_full.csv       # 按任务分组
│   │   ├── calibration_overall_full.csv        # 总体统计
│   │   └── calibration_task_model_full.csv     # 按任务-模型组合
│   ├── figures/                      # 图表文件
│   │   ├── calibration_full/         # 校准分析图表
│   │   ├── publication/             # 发表级图表
│   │   └── supplementary/            # 补充图表
│   └── tables/                       # 表格文件
└── model_comparisons 2/              # 参考实现(MATLAB原始代码)

🚀 快速开始

环境要求

  • Python 3.7+
  • MATLAB (可选,用于MATLAB实现)
  • 依赖包: numpy, scipy, pandas, matplotlib, pybads

安装依赖

pip install -r requirements.txt

Python模型拟合

拟合所有模型

# Logits数据
python3 scripts/model_fitting_python/run_fitting.py \
    --data_type logits \
    --output_dir results/model_fitting/python/align

# Self-report数据
python3 scripts/model_fitting_python/run_fitting.py \
    --data_type selfreport \
    --output_dir results/model_fitting/python/align

拟合特定模型

# 只拟合SDT和WEV
python3 scripts/model_fitting_python/run_fitting.py \
    --data_type logits \
    --models SDT WEV \
    --output_dir results/model_fitting/python/align

输出结构

结果保存在 results/model_fitting/python/align/ 目录下:

  • logits/ - Logits数据拟合结果
    • SDT.csv
    • WEV.csv
    • BCH.csv
    • PE.csv
    • LogN.csv (如果运行)
  • self/ - Self-report数据拟合结果
    • SDT.csv
    • WEV.csv
    • BCH.csv
    • PE.csv
    • LogN.csv (如果运行)

MATLAB模型拟合

数据预处理

% 在MATLAB中运行
cd scripts/model_fitting_matlab/matlab
restructureData_logits_vlm  % 预处理logits数据
restructureData_vlm         % 预处理self-report数据

拟合模型

% 拟合SDT模型
runFitting_vlm

% 拟合LogN模型(需要先运行SDT)
runLogN_logits_vlm  % logits数据
runLogN_vlm         % self-report数据

校准分析

计算校准指标

# 计算完整校准指标(4种方法)
python3 scripts/analysis/calculate_calibration_metrics_full.py

输出结果

校准分析结果保存在 results/calibration_full/ 目录下:

  • calibration_overall_full.csv: 总体校准指标
  • calibration_by_model_full.csv: 按VLM模型分组的校准指标
  • calibration_by_task_full.csv: 按任务分组的校准指标
  • calibration_task_model_full.csv: 按任务-模型组合的校准指标

校准指标说明

  • ECE (absolute): 绝对误差版本的期望校准误差,衡量置信度与准确率的绝对差异
  • ECE (squared): 平方误差版本的期望校准误差(论文方法)
  • ROC AUC: 标准ROC曲线下面积,衡量置信度区分正确/错误决策的能力
  • Selective Accuracy AUC: 选择性准确率曲线下面积(论文方法),衡量基于置信度的选择性决策性能

🔬 认知模型

1. SDT (Signal Detection Theory)

  • 假设: 决策和置信度基于同一个感觉证据分布
  • 特点: 无元认知噪声,最简单的模型
  • 参数: 16个 (7个μ + 1个c + 8个置信度标准)

2. PE (Positive Evidence)

  • 假设: 置信度只考虑与决策一致的(正)证据
  • 特点: 完全忽略与决策不一致的证据
  • 参数: 16个 (7个μ + 1个c + 8个置信度标准)
  • 方法: 模拟(100万次试验)

3. WEV (Weighted Evidence Visibility)

  • 假设: 置信度基于SDT证据和刺激可见性的加权和
  • 特点: 同时考虑感觉信号和可见性信号
  • 参数: 18个 (7个μ + 1个c + 8个置信度标准 + 1个metaNoise + 1个w)

4. LogN (Log-Normal Meta Noise)

  • 假设: 元认知噪声遵循对数正态分布
  • 特点: 信号依赖的元认知噪声(远离决策标准的置信度标准有更大的噪声)
  • 参数: 17个 (7个μ + 1个c + 8个置信度标准 + 1个metaNoise)
  • 方法: 数值积分

5. BCH (Bayesian Confidence Hypothesis)

  • 假设: 置信度是正确选择的后验概率
  • 特点: 置信度标准定义在后验概率空间(而非证据空间)
  • 参数: 16个 (7个μ + 1个c_threshold + 8个confThresholds)

📊 主要发现

校准分析结果

基于24,192个试验的总体校准指标:

  • 平均置信度: 4.304 (1-5量表)
  • 平均准确率: 0.567 (56.7%)
  • ECE (squared): 0.113 (平方误差版本的期望校准误差)
  • ROC AUC: 0.544 (置信度区分正确/错误决策的能力)
  • Selective AUC: 0.569 (基于置信度的选择性决策性能)

关键发现

  • Grid任务校准最好 (ECE_squared = 0.019, Selective AUC = 0.946)
  • qwen2.5-vl-7b校准表现最好 (ECE_squared = 0.024)
  • Brightness和Gabor任务校准较差 (ECE_squared > 0.24)

模型分布统计

基于45个(VLM, task)组合的最佳模型统计(MATLAB结果):

  • SDT: 71.1% (32/45) - 主导模型
  • BCH: 22.2% (10/45)
  • PE: 4.4% (2/45)
  • LogN: 2.2% (1/45)

数据类型差异

  • LOGITS数据: SDT占66.7% (12/18),BCH占16.7% (3/18)
  • SELF数据: SDT占74.1% (20/27),BCH占25.9% (7/27)

理论意义

  • VLM的元认知机制更简单: 大部分任务符合SDT模型,说明VLM的置信度是决策证据的直接反映,没有额外的元认知噪声
  • 与人类行为差异: 人类需要更复杂的模型(LogN、PE等),而VLM更接近"理想观察者"
  • 方法依赖性: 不同置信度测量方法(logits vs self-report)可能揭示不同的元认知机制

🔧 技术细节

优化算法

  • Python: PyBADS (Bayesian Adaptive Direct Search)
  • MATLAB: BADS (Bayesian Adaptive Direct Search)
  • 策略:
    • 模拟模型(PE): 自动运行5次,选择最佳结果
    • 解析模型(SDT, WEV, LogN, BCH): 运行1次

数据格式

输入CSV文件格式:

  • stimulus_type: S1 或 S2
  • difficulty_level: 难度等级 (1-7)
  • choice: S1 或 S2 (响应)
  • confidence: 1-5 (置信度评分)
  • model: VLM模型名称
  • task: 任务名称 (Grid, Gabor, Brightness)
  • qid: 问题ID

VLM模型

  • gemma3_27b (Google)
  • kimi-vl-a3b (Moonshot)
  • ovis2_34b (OpenGVLab)
  • qwen2.5-vl-32b (Alibaba)
  • qwen2.5-vl-72b (Alibaba)
  • qwen2.5-vl-7b (Alibaba)
  • claude-sonnet-4-5 (Anthropic)
  • gpt-4o (OpenAI)
  • gpt-5 (OpenAI)

视觉任务

  • Grid: 网格模式识别任务
  • Gabor: Gabor滤波器模式任务
  • Brightness: 亮度比较任务

📈 输出文件说明

模型拟合结果

每个模型生成一个CSV文件,包含以下列:

  • task: 任务名称
  • vlm: VLM模型名称
  • model: 认知模型名称
  • nll: 负对数似然度
  • AIC: Akaike信息准则
  • BIC: Bayesian信息准则
  • n_params: 参数数量
  • n_trials: 试验数量
  • delta_AIC: 与最佳模型的AIC差异
  • delta_BIC: 与最佳模型的BIC差异

校准分析结果

校准分析结果包含4种校准指标,保存在 results/calibration_full/ 目录下:

  • calibration_overall_full.csv: 总体校准指标(所有VLM和任务)
  • calibration_by_model_full.csv: 按VLM模型分组的校准指标(9个VLM)
  • calibration_by_task_full.csv: 按任务分组的校准指标(3个任务)
  • calibration_task_model_full.csv: 按任务-模型组合的校准指标(27个组合)

每个文件包含以下指标:

  • mean_confidence: 平均置信度
  • mean_accuracy: 平均准确率
  • ECE_absolute: 绝对误差版本的期望校准误差
  • ECE_squared: 平方误差版本的期望校准误差
  • ROC_AUC: ROC曲线下面积
  • Selective_AUC: 选择性准确率曲线下面积

📚 参考文献

本项目基于以下研究:

  • Shekhar, M., & Rahnev, D. (2024). How do humans give confidence? A comprehensive comparison of process models of perceptual metacognition. Journal of Experimental Psychology: General.

🤝 贡献

欢迎提交Issue和Pull Request来改进本项目。

📄 许可证

本项目采用MIT许可证。


注意: 本项目提供了完整的模型拟合和分析流程,确保研究的可重现性和透明度。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages