Merged code repo (CompanionGuard-RL) into single project-level git. Reorganized root: docs/, reference/, experiments/, tmp/active|archives/. Gitignored: data/, checkpoints/, .venv, experiment logs, tmp/archives. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
618 lines
20 KiB
Markdown
618 lines
20 KiB
Markdown
# 多模态情感模型优化研究执行方案
|
||
|
||
> 文档作用:本文是本课题唯一主工作文档,记录“当前有效方案”。它应当能直接指导后续实验执行、代码开发、基线选择、结果验收与论文写作。历史判断、废弃方案和变更原因只写入变更日志,不在本文反复展开。
|
||
>
|
||
> 当前版本:v3.1
|
||
> 更新日期:2026-04-24
|
||
> 当前主线:D2 RL 对话图结构优化为主要贡献;D1 RL 自适应模态融合作为辅助实验、鲁棒性分析和负结果讨论保留。
|
||
> 当前限制:本轮只修文档和代码口径,不启动 GPU 训练。
|
||
|
||
## 1. 研究目标
|
||
|
||
本课题研究多模态情感识别中的动态决策问题。核心问题不是简单把文本、音频、视觉拼接起来,而是在不同样本、不同噪声、不同对话上下文下,让模型学会“当前应该信任哪种模态、应该参考哪些历史发言”。
|
||
|
||
最终论文建议围绕一个统一叙事组织:
|
||
|
||
> Reinforcement Learning for Adaptive Multimodal Emotion Recognition: From Modality Fusion to Conversation Graph Topology
|
||
|
||
中文表述:
|
||
|
||
> 面向多模态情感识别的强化学习动态决策框架:从模态融合权重到对话图拓扑优化。
|
||
|
||
两个技术层次:
|
||
|
||
1. D1 话语级动态融合:RL agent 根据每路模态的可靠性动态分配 text/audio/vision 权重。
|
||
2. D2 对话级动态图结构:RL agent 根据当前发言状态动态选择上下文窗口、历史发言边权重和说话人关系。
|
||
|
||
当前优先级:
|
||
|
||
| 方向 | 定位 | 当前状态 | 优先级 |
|
||
|---|---|---|---|
|
||
| D1 RL 自适应模态融合 | 辅助实验、鲁棒性分析、负结果讨论 | bug 已修,待 GPU 空闲后重跑 | 中 |
|
||
| D2 RL 对话图结构优化 | 主贡献、主实验、论文核心 | 等待 COGMEN 依赖与公平基线 | 高 |
|
||
|
||
## 2. 当前资源与目录
|
||
|
||
服务器:
|
||
|
||
| 项目 | 内容 |
|
||
|---|---|
|
||
| SSH | `ssh -p 20083 root@10.82.3.180` |
|
||
| `$ZSY` | `/root/siton-data-2849d4ce327c4ccfb233ce33868fe7fe/zsy` |
|
||
| 项目目录 | `$ZSY/multimodal_affect` |
|
||
| 环境 | `$ZSY/envs/multimodal_affect` |
|
||
| 数据盘 | 1TB,当前约 788GB 可用 |
|
||
| GPU | 4 x RTX 5090,当前暂不占用 |
|
||
|
||
本地目录:
|
||
|
||
| 项目 | 路径 |
|
||
|---|---|
|
||
| 本地研究目录 | `D:\Myresearch\多模态情感模型优化` |
|
||
| 主方案 | `2026-04-22-研究执行方案.md` |
|
||
| 变更日志 | `2026-04-24-变更日志.md` |
|
||
|
||
服务器数据状态:
|
||
|
||
| 数据 | 当前状态 | 用途 | 注意事项 |
|
||
|---|---|---|---|
|
||
| IEMOCAP 预提取特征 | `data/iemocap`,GloVe 300 + COVAREP 74 + FACET 35 | D1 修复后重跑 | 扁平特征,不适合 D2 图结构 |
|
||
| IEMOCAP 原始数据 | `data/raw/IEMOCAP_full_release`,已解压 Session1-5 | D2 重建对话级样本、必要时提取新特征 | 不覆盖现有 `data/iemocap` |
|
||
| COGMEN IEMOCAP 4 类数据 | `baselines/COGMEN/data/iemocap_4` | D2 公平基线首选入口 | 需要 PyG 等依赖 |
|
||
| MELD CSV | `data/meld`,当前主要是文本/标签 | 后续 D2 泛化实验 | 已解压 MELD.Raw,可补音频/视频 |
|
||
| MELD.Raw | `data/raw/MELD/MELD.Raw`,已解压 | 后续多模态特征 | 暂不运行耗时提取 |
|
||
| MOSI | `data/mosi` | D1 或补充实验 | audio 中有少量 `-inf`,使用前必须清洗 |
|
||
| IEMOCAP noisy | `data/iemocap_noisy` | D1 鲁棒性实验 | 已重新生成三模态噪声文件 |
|
||
|
||
## 3. 当前代码状态
|
||
|
||
已修复内容:
|
||
|
||
| 模块 | 文件 | 修复内容 | 状态 |
|
||
|---|---|---|---|
|
||
| 噪声生成 | `scripts/preprocess/generate_noise.py` | 统一输出 `*_vision.npy`,兼容 `visual` 配置别名 | 已同步本地与服务器 |
|
||
| 数据加载 | `src/data/dataset.py` | noisy variant 加载 text/audio/vision,缺失文件回退 clean 同索引模态 | 已同步服务器 |
|
||
| D1 训练 | `scripts/train_d1_fixed.py`、服务器 `scripts/train/train_d1.py` | 噪声 batch 使用同一索引加载 text/audio/vision/labels | 已同步 |
|
||
| D1 评测 | `scripts/run_eval_ablation.py`、服务器 `scripts/eval/eval_d1.py` | 噪声评测替换三模态,修复最后 batch 索引 | 已同步 |
|
||
| 噪声数据 | 服务器 `data/iemocap_noisy` | 8 个变体均含 train/val/test 的 text/audio/vision/labels | 已验证 |
|
||
|
||
已完成检查:
|
||
|
||
- 本地相关 Python 文件 `py_compile` 通过。
|
||
- 服务器相关 Python 文件 `py_compile` 通过。
|
||
- 服务器噪声数据形状检查通过。
|
||
- 未启动任何训练。
|
||
|
||
旧结果使用规则:
|
||
|
||
| 结果 | 是否可用于论文正式表格 | 用途 |
|
||
|---|---|---|
|
||
| 修复前 D1 Stage A/B 数值 | 否 | 仅用于说明 bug 发现前的诊断过程 |
|
||
| 修复前 D1 噪声鲁棒性数值 | 否 | 视觉噪声相关结果无效 |
|
||
| 修复后重新训练结果 | 待产生 | 可作为正式 D1 结果 |
|
||
| COGMEN 论文引用数值 | 不能作为主表唯一基线 | 可放 Related Work 或参考表 |
|
||
| 本地复现 COGMEN-Ours | 待产生 | D2 主基线 |
|
||
|
||
## 4. 总体技术路线
|
||
|
||
整体路线分为两个层次:
|
||
|
||
```text
|
||
输入:text / audio / vision 多模态情感数据
|
||
|
||
D1:话语级动态融合
|
||
预提取特征 -> 模态 projector -> 置信度/不确定性状态 -> RL fusion agent -> 分类
|
||
目标:验证 RL 是否能在噪声/缺失模态下优于固定融合
|
||
|
||
D2:对话级动态图结构
|
||
对话序列 -> COGMEN 基线图 -> RL window/topology agent -> 动态 GNN -> ERC 分类
|
||
目标:学习“该看哪些历史发言”和“边权重应该多强”
|
||
```
|
||
|
||
研究策略:
|
||
|
||
1. 先保证 D1 训练和评测口径正确,重跑后决定其论文位置。
|
||
2. D2 必须先跑通 COGMEN-Ours,建立公平基线。
|
||
3. D2 先做小动作空间的 `RL-Window`,再做完整 `RL-Topo-Soft`。
|
||
4. 最终论文以 D2 主结果为核心,D1 作为辅助实验或 analysis 章节。
|
||
|
||
## 5. D1 方案:RL 自适应模态融合
|
||
|
||
### 5.1 任务定义
|
||
|
||
输入为单条 utterance 的三模态特征:
|
||
|
||
| 模态 | 当前特征 | 维度 |
|
||
|---|---|---|
|
||
| Text | GloVe 平均/预提取文本特征 | 300 |
|
||
| Audio | COVAREP | 74 |
|
||
| Vision | FACET | 35 |
|
||
|
||
输出为 4 类 IEMOCAP 情感分类。
|
||
|
||
当前 D1 不声称使用 BERT/Wav2Vec2/ResNet。若未来要写“大模型特征提取”,必须另做特征提取与重跑。
|
||
|
||
### 5.2 当前模型结构
|
||
|
||
```text
|
||
text/audio/vision feature
|
||
-> modality projector: low-dim feature -> 1024-d shared space
|
||
-> confidence estimator: 每个模态输出一个置信度
|
||
-> RL fusion agent: 输出三路融合权重
|
||
-> weighted fusion
|
||
-> MLP classifier
|
||
```
|
||
|
||
Stage A:监督预训练。
|
||
|
||
- 使用均匀融合训练 projector、confidence estimator、classifier。
|
||
- 训练时注入噪声。
|
||
- 置信度目标按实际噪声模态设置:被污染模态为 0.1,干净模态为 0.9。
|
||
|
||
Stage B:PPO 融合权重学习。
|
||
|
||
- encoder 冻结。
|
||
- agent 根据状态输出三路权重。
|
||
- classifier 可轻量刷新。
|
||
- 该版本作为 `RL-Decoupled`,用于验证两阶段 RL 的局限。
|
||
|
||
### 5.3 D1 状态、动作、奖励
|
||
|
||
当前状态:
|
||
|
||
```text
|
||
s = [conf_text, conf_audio, conf_vision, noise_est]
|
||
```
|
||
|
||
动作:
|
||
|
||
```text
|
||
a = [w_text, w_audio, w_vision], sum(a)=1
|
||
```
|
||
|
||
当前奖励:
|
||
|
||
```text
|
||
R = alpha * (-CE) + beta * consistency(weights, confidence) - gamma * instability
|
||
```
|
||
|
||
后续增强状态候选:
|
||
|
||
| 状态项 | 说明 |
|
||
|---|---|
|
||
| 三路 confidence | 现有 |
|
||
| 三路单模态预测熵 | 衡量每个模态自身不确定性 |
|
||
| 三对跨模态 cosine similarity | 衡量模态一致性 |
|
||
| 三路 feature norm / variance | 检测异常特征 |
|
||
| 分模态 noise estimate | 替代单一 `audio.std` |
|
||
|
||
目标是从 4 维状态扩展到 12-16 维状态,前提是 `RL-Decoupled` 重跑后仍有继续价值。
|
||
|
||
### 5.4 D1 噪声实验
|
||
|
||
当前 IEMOCAP 噪声变体:
|
||
|
||
| 变体 | 噪声设计 | 应影响模态 |
|
||
|---|---|---|
|
||
| `gaussian_light` | 轻度高斯噪声 | text/audio/vision |
|
||
| `gaussian_heavy` | 重度高斯噪声 | text/audio/vision |
|
||
| `missing_audio` | 音频全置零 | audio |
|
||
| `missing_visual` | 视觉全置零 | vision |
|
||
| `text_word_drop_30` | 文本 30% dropout 或特征置零 | text |
|
||
| `audio_masking_50` | 音频 50% 维度遮蔽 | audio |
|
||
| `realistic_mixed` | 文本轻度损坏 + 音频噪声 + 视觉遮挡 | text/audio/vision |
|
||
| `audio_time_mask` | 音频样本级时间遮蔽 | audio |
|
||
|
||
验收要求:
|
||
|
||
- 每个变体必须有 `train/val/test` 的 `text/audio/vision/labels`。
|
||
- 评测时 noisy 文件存在就替换对应模态;不存在才回退 clean 同索引模态。
|
||
- 不允许 batch 内跨样本替换模态。
|
||
|
||
### 5.5 D1 对比基线
|
||
|
||
D1 不以 COGMEN 为主基线。建议基线:
|
||
|
||
| 类别 | 方法 |
|
||
|---|---|
|
||
| 基础融合 | concat + MLP、Fixed-Equal、Fixed-Learned-Weight |
|
||
| 动态融合 | Attention Fusion、Gated Fusion |
|
||
| 多模态情感经典方法 | TFN、LMF、MFN、MulT、MISA、Self-MM |
|
||
| 鲁棒/缺失模态 | GCNet、MMIN、M2R2、GSDNet 或同类方法 |
|
||
| 本方法 | RL-Decoupled、RL-Joint、RL-Joint-16dim |
|
||
|
||
最小可执行矩阵:
|
||
|
||
| 变体 | 必做 | 说明 |
|
||
|---|---|---|
|
||
| Stage-A-Only | 是 | 修复后监督基线 |
|
||
| Fixed-Equal | 是 | 固定融合 |
|
||
| Gated-Fusion | 是 | 非 RL 动态融合 |
|
||
| RL-Decoupled | 是 | 当前两阶段 RL |
|
||
| RL-Joint | 视结果 | 如果 decoupled 仍弱,做联合训练 |
|
||
| RL-Joint-16dim | 视结果 | 状态增强版本 |
|
||
|
||
### 5.6 D1 后续执行顺序
|
||
|
||
触发条件:GPU 空闲。
|
||
|
||
1. 确认 `data/iemocap_noisy` 三模态文件完整。
|
||
2. 重跑 Stage A。
|
||
3. 重跑 Stage B `RL-Decoupled`。
|
||
4. 重新运行修复后的 `eval_d1.py`。
|
||
5. 汇总 clean 与 8 种噪声下的 WF1/Acc。
|
||
6. 判断是否进入 `RL-Joint`。
|
||
|
||
D1 成功标准:
|
||
|
||
- clean test 不显著低于 Stage-A-Only。
|
||
- 至少在多数噪声场景中优于 Fixed-Equal 或 Gated-Fusion。
|
||
- 若无法达成,D1 写为负结果与设计反思,不作为主贡献。
|
||
|
||
## 6. D2 方案:RL 对话图结构优化
|
||
|
||
### 6.1 任务定义
|
||
|
||
D2 是论文主线。目标是在多模态对话情感识别中,让 RL agent 动态决定当前发言应参考哪些历史发言。
|
||
|
||
输入为一个 dialogue:
|
||
|
||
```text
|
||
u1, u2, ..., ut
|
||
每个 ui 有 text/audio/vision feature、speaker id、label
|
||
```
|
||
|
||
输出为每个 utterance 的情感类别。
|
||
|
||
核心问题:
|
||
|
||
```text
|
||
固定图结构:每个当前发言使用固定窗口或固定全局连接
|
||
改进目标:根据当前语义、说话人、历史情绪变化,动态选择上下文边
|
||
```
|
||
|
||
### 6.2 D2 与 COGMEN 的关系
|
||
|
||
COGMEN 是 D2 的直接前身,不跳过。
|
||
|
||
当前策略:
|
||
|
||
1. 先跑官方 COGMEN `iemocap_4`,得到 `COGMEN-Ours`。
|
||
2. 在同一数据、同一 split、同一指标下实现固定窗口变体。
|
||
3. 再加入 RL window selector。
|
||
4. 最后实现 soft topology agent。
|
||
|
||
不能只引用 COGMEN 论文表格,因为:
|
||
|
||
- 论文数值和当前本地环境、特征、依赖版本可能不同。
|
||
- D2 的改进必须建立在可复现同口径基线上。
|
||
- 后续固定窗口和 RL 图结构需要直接改 COGMEN 图构建逻辑。
|
||
|
||
### 6.3 D2 环境依赖
|
||
|
||
当前阻塞:
|
||
|
||
| 依赖 | 状态 |
|
||
|---|---|
|
||
| `torch_geometric` | 未安装 |
|
||
| `torch_scatter` | 未安装 |
|
||
| `torch_sparse` | 未安装 |
|
||
| `sentence_transformers` | 未安装 |
|
||
| `comet_ml` | 未安装 |
|
||
|
||
解决方案:
|
||
|
||
1. 优先离线安装与 `torch 2.7.1+cu128` 兼容的 PyG wheels。
|
||
2. 如果 PyG wheel 不好配,先用 COGMEN 官方预处理数据做评测脚本适配,减少训练依赖。
|
||
3. `comet_ml` 只作为日志依赖,必要时 stub 或禁用。
|
||
4. `sentence_transformers` 若只评测官方 pkl,可避免重新提取 SBERT 特征;若训练流程强依赖则离线安装。
|
||
|
||
### 6.4 D2 阶段一:COGMEN-Ours
|
||
|
||
目标:跑通本地 COGMEN 4 类 IEMOCAP。
|
||
|
||
任务:
|
||
|
||
1. 阅读并定位 COGMEN 图构建逻辑:
|
||
- `cogmen/model/COGMEN.py`
|
||
- `cogmen/model/GNN.py`
|
||
- `cogmen/Dataset.py`
|
||
- `preprocess.py`
|
||
2. 确认官方 `data_iemocap_4.pkl` 与 `IEMOCAP_features_4.pkl` 的结构。
|
||
3. 安装或绕过缺失依赖。
|
||
4. 跑原始评测,记录 WF1/Acc。
|
||
5. 保存基线结果到 `outputs/results/d2_cogmen_ours.json`。
|
||
|
||
验收:
|
||
|
||
- 可以在服务器上复现实验。
|
||
- 有固定 random seed。
|
||
- 有完整命令、日志和结果文件。
|
||
|
||
### 6.5 D2 阶段二:固定窗口基线
|
||
|
||
目的:确认 COGMEN 固定图结构中上下文窗口的影响。
|
||
|
||
实验:
|
||
|
||
| 变体 | 描述 |
|
||
|---|---|
|
||
| `COGMEN-Ours` | 原始 COGMEN |
|
||
| `FixedWin-3` | 只连接历史 3 句 |
|
||
| `FixedWin-5` | 只连接历史 5 句 |
|
||
| `FixedWin-7` | 只连接历史 7 句 |
|
||
| `FixedWin-All` | 全历史连接 |
|
||
|
||
输出:
|
||
|
||
- 每个窗口的 WF1/Acc。
|
||
- 不同对话长度下的性能分组。
|
||
- 后续 RL action space 的依据。
|
||
|
||
### 6.6 D2 阶段三:RL-Window
|
||
|
||
这是最小可行创新版本。
|
||
|
||
状态设计:
|
||
|
||
```text
|
||
s_t = concat(
|
||
h_t, 当前发言表示
|
||
mean(h_1...h_{t-1}), 历史均值
|
||
speaker_embedding, 说话人嵌入
|
||
delta(h_t, h_{t-1}) 情绪变化估计
|
||
)
|
||
```
|
||
|
||
动作空间:
|
||
|
||
```text
|
||
a_t in {3, 5, 7, all}
|
||
```
|
||
|
||
奖励:
|
||
|
||
```text
|
||
R = task_reward + lambda_sparse * sparsity_bonus + lambda_stable * stability_bonus
|
||
```
|
||
|
||
可实现版本:
|
||
|
||
| 奖励项 | 实现 |
|
||
|---|---|
|
||
| task_reward | batch-level `-CE` 或 validation WF1 改善 |
|
||
| sparsity_bonus | 窗口越短越稀疏,但不能牺牲任务性能 |
|
||
| stability_bonus | 相邻 utterance 的窗口选择不要剧烈抖动 |
|
||
|
||
验收:
|
||
|
||
- `RL-Window` 超过 `COGMEN-Ours` 或超过最优固定窗口。
|
||
- 至少有 3 个对话案例显示 RL 选择了不同窗口。
|
||
- 若没有提升,分析是否状态信息不足或奖励过稀疏。
|
||
|
||
### 6.7 D2 阶段四:RL-Topo-Soft
|
||
|
||
完整版动态图结构。
|
||
|
||
动作:
|
||
|
||
```text
|
||
对当前 utterance u_t,输出每条历史边 e_{i,t} 的连续权重 w_{i,t} in [0,1]
|
||
```
|
||
|
||
为什么用 soft topology:
|
||
|
||
- 硬 0/1 边不可导,PPO 信号稀疏。
|
||
- soft edge 可以让分类 loss 通过消息传递影响边权。
|
||
- 可解释性仍保留:边权可视化即可。
|
||
|
||
模型候选:
|
||
|
||
```text
|
||
history/current sequence
|
||
-> transformer/state encoder
|
||
-> edge scorer
|
||
-> weighted graph message passing
|
||
-> classifier
|
||
```
|
||
|
||
奖励:
|
||
|
||
```text
|
||
R = alpha * task_reward
|
||
+ beta * sparsity
|
||
+ gamma * emotion_coherence
|
||
- eta * graph_instability
|
||
```
|
||
|
||
解释性输出:
|
||
|
||
- 每个 utterance 选择的 top-k 历史边。
|
||
- 同说话人/不同说话人边权统计。
|
||
- 情绪转折点前后的图结构变化。
|
||
- 噪声 utterance 是否被降低边权。
|
||
|
||
### 6.8 D2 主基线矩阵
|
||
|
||
论文主表建议至少覆盖:
|
||
|
||
| 类别 | 方法 | 必要性 |
|
||
|---|---|---|
|
||
| 经典 ERC | DialogueRNN | 基础对话上下文基线 |
|
||
| 图 ERC | DialogueGCN | 图结构基础基线 |
|
||
| 多模态图 | MMGCN | 多模态 ERC 图基线 |
|
||
| 直接前身 | COGMEN | 必做 |
|
||
| 近年图方法 | M3Net | 建议 |
|
||
| 近年图方法 | AdaGIN | 建议 |
|
||
| 近年图方法 | DER-GCN | 建议 |
|
||
| 直接竞争 | DGODE | 必做 |
|
||
| 补充竞争 | GASMER | 可做 |
|
||
| 本文 | FixedWin / RL-Window / RL-Topo-Soft | 主结果 |
|
||
|
||
R1-Omni、AffectGPT-R1、EMO-RL、AffectAgent 放 Related Work,不强行放主表,除非任务设置、数据集、指标完全对齐。
|
||
|
||
## 7. 数据集与指标
|
||
|
||
### 7.1 数据集
|
||
|
||
| 数据集 | 用途 | 当前策略 |
|
||
|---|---|---|
|
||
| IEMOCAP 4-class | 主数据集 | D1 用扁平特征;D2 用 COGMEN 对话级数据 |
|
||
| MELD | 泛化验证 | 先补齐音频/视频或使用已有对话结构 |
|
||
| CMU-MOSI | D1 可选补充 | 使用前清洗 audio 的 `-inf` |
|
||
|
||
### 7.2 指标
|
||
|
||
主指标:
|
||
|
||
- Weighted F1
|
||
- Accuracy
|
||
|
||
辅助指标:
|
||
|
||
- Macro F1
|
||
- per-class precision/recall/F1
|
||
- 噪声场景下相对下降率
|
||
- 多 seed 均值与标准差
|
||
- paired t-test 或 bootstrap confidence interval
|
||
|
||
实验规范:
|
||
|
||
- 主结果至少 3 个 seed。
|
||
- IEMOCAP 必须明确 4-class 或 6-class。
|
||
- 所有表格必须标明特征来源和 split。
|
||
- COGMEN 论文引用数值和本地复现数值分开写。
|
||
|
||
## 8. 当前时间线
|
||
|
||
### 已完成
|
||
|
||
| 阶段 | 内容 | 状态 |
|
||
|---|---|---|
|
||
| P0 | 环境搭建、数据上传、初步特征整理 | 完成 |
|
||
| P0-data | IEMOCAP/MELD 原始数据解压 | 完成 |
|
||
| P1-fix | D1 噪声生成、训练采样、评测 bug 修复 | 完成 |
|
||
| P1-check | 本地/服务器语法检查、噪声数据形状检查 | 完成 |
|
||
|
||
### 下一阶段
|
||
|
||
| 阶段 | 内容 | 触发条件 | 预计耗时 |
|
||
|---|---|---|---|
|
||
| P1-rerun | D1 修复后 Stage A/B 重跑 | GPU 空闲 | 0.5-1 天 |
|
||
| P2-env | 安装/适配 COGMEN 依赖 | CPU/环境窗口 | 0.5-1 天 |
|
||
| P2-base | 跑 COGMEN-Ours | 依赖就绪 | 0.5 天 |
|
||
| P2-win | 固定窗口与 RL-Window | COGMEN-Ours 完成 | 2-4 天 |
|
||
| P2-topo | RL-Topo-Soft | RL-Window 有效 | 1-3 周 |
|
||
| P3 | 多 seed、消融、可视化、写作 | 主结果稳定 | 3-4 周 |
|
||
|
||
## 9. 后续命令草案
|
||
|
||
仅在 GPU 空闲后执行。
|
||
|
||
D1 重跑:
|
||
|
||
```bash
|
||
cd $ZSY/multimodal_affect
|
||
export ZSY=/root/siton-data-2849d4ce327c4ccfb233ce33868fe7fe/zsy
|
||
export PYTHONPATH=$ZSY/multimodal_affect
|
||
export WANDB_MODE=offline
|
||
|
||
$ZSY/envs/multimodal_affect/bin/python scripts/preprocess/generate_noise.py \
|
||
--config configs/noise_configs.yaml \
|
||
--data_dir data/iemocap \
|
||
--out_dir data/iemocap_noisy
|
||
|
||
$ZSY/envs/multimodal_affect/bin/python scripts/train/train_d1.py \
|
||
--stage supervised \
|
||
--dataset IEMOCAP \
|
||
--config configs/d1/stage_a.yaml \
|
||
--output outputs/checkpoints/d1_stageA_fixed \
|
||
--gpus 0
|
||
|
||
$ZSY/envs/multimodal_affect/bin/python scripts/train/train_d1.py \
|
||
--stage rl \
|
||
--dataset IEMOCAP \
|
||
--checkpoint outputs/checkpoints/d1_stageA_fixed/best.ckpt \
|
||
--config configs/d1/stage_b.yaml \
|
||
--output outputs/checkpoints/d1_stageB_fixed \
|
||
--gpus 0
|
||
```
|
||
|
||
D2 COGMEN-Ours:
|
||
|
||
```bash
|
||
cd $ZSY/multimodal_affect/baselines/COGMEN
|
||
|
||
# 依赖就绪后:
|
||
$ZSY/envs/multimodal_affect/bin/python eval.py \
|
||
--dataset iemocap_4 \
|
||
--modalities atv
|
||
```
|
||
|
||
注意:以上命令是草案,执行前先检查 GPU 占用和依赖状态。
|
||
|
||
## 10. 风险与应对
|
||
|
||
| 风险 | 概率 | 影响 | 应对 |
|
||
|---|---|---|---|
|
||
| D1 修复后仍无收益 | 中 | D1 不能作为贡献 | 写作中定位为负结果和设计反思 |
|
||
| COGMEN 依赖安装困难 | 中 | D2 延迟 | 离线 wheels、禁用 comet、优先评测路径 |
|
||
| RL-Window 不超过固定窗口 | 中 | 创新不足 | 调整状态与奖励;分析对话长度分组 |
|
||
| RL-Topo-Soft 训练不稳定 | 中 | 主结果风险 | 从 RL-Window 热启动,先做 soft edge supervised pretrain |
|
||
| MELD 多模态特征提取耗时 | 中 | 泛化实验延迟 | 先 IEMOCAP 完整,MELD 作为补充 |
|
||
| 基线过多导致时间失控 | 高 | 写作延期 | 先确保 COGMEN、DGODE、DialogueGCN、MMGCN |
|
||
|
||
## 11. 论文结构草案
|
||
|
||
```text
|
||
1. Introduction
|
||
- 多模态情感识别中的动态选择问题
|
||
- 模态噪声与对话上下文冗余
|
||
- RL 作为动态决策机制
|
||
|
||
2. Related Work
|
||
- Multimodal sentiment/emotion recognition
|
||
- Emotion recognition in conversation
|
||
- Graph-based ERC
|
||
- RL for affective computing
|
||
|
||
3. Method
|
||
- Overview
|
||
- D1: RL adaptive fusion
|
||
- D2: RL graph topology optimization
|
||
- Training objective and reward design
|
||
|
||
4. Experiments
|
||
- Datasets and metrics
|
||
- Baselines
|
||
- Main results on IEMOCAP
|
||
- Generalization on MELD
|
||
- Ablation study
|
||
- Robustness under noise/missing modality
|
||
- Visualization and case study
|
||
|
||
5. Analysis
|
||
- Why two-stage D1 is limited
|
||
- How RL graph policy changes with dialogue context
|
||
- Error analysis by emotion class and speaker dynamics
|
||
|
||
6. Conclusion
|
||
```
|
||
|
||
## 12. 当前执行原则
|
||
|
||
必须遵守:
|
||
|
||
- 主方案只维护本文;变更原因只进日志。
|
||
- 旧 D1 结果不进入论文正式结果表。
|
||
- 不覆盖 `data/iemocap` 预提取特征。
|
||
- 不用扁平 `data/iemocap` 训练 D2 图模型。
|
||
- 不只拿 COGMEN 论文数值做主对比。
|
||
- GPU 忙时只做文档、代码、CPU 检查、依赖准备。
|
||
|
||
下一步最优先事项:
|
||
|
||
1. 等 GPU 空闲后重跑 D1 修复版,确认辅助实验结论。
|
||
2. 准备 COGMEN 依赖,跑通 `COGMEN-Ours`。
|
||
3. 实现 `FixedWin` 与 `RL-Window`,尽快拿到 D2 第一组可写结果。
|