2024-10-23 12:39:12 +08:00
# 10月25日本周科研工作进展
## 1.对代码进行改进, 增加了查看loss_inst和loss_proto贡献度的功能
### 实验设置:
| 参数名 | 参数 |
| :----------: | :-----------: |
| 数据集 | mini_imagenet |
| epoch | 100 |
| 热身epoch | 15 |
| 翻倍的倍数 | 1.7 |
| 实例窗口大小 | 3 |
| 原型窗口大小 | 3 |
| 阈值提升 | 1.7 |
### 实验结果:
2024-10-23 13:47:47 +08:00
![log4 ](./pic/log4.png )
### 现象:
Acc_inst 与 acc_proto 的增长相较于之前大幅度下降, 从loss方面可见loss_inst在热身后减少缓慢, 而loss_proto下降较快。
#### 思考1:
应该是修改loss_proto权重导致的问题, 原pcl代码中有一段错误的代码:
```python
loss_proto /= len(args.num_cluster)
```
![img ](./pic/1.jpg )
此处args.num_cluster对应公式中的M, 但在PCL代码中是一个字段, 原作者是想计算字段中不同聚类数目的种类, 但使用len计算字段长度会导致loss_proto被错误地减小10倍甚至100倍以上, 但减小的loss_proto反而推动了训练进行。
#### 思考2:
相较于loss_inst, loss_proto训练速度更快, 而loss_inst收敛似乎停止。这可能是由于两种loss是一种竞争关系导致的。原型对比学习本身就是要寻找出负对中的相似语义, 这本身就与实例学习相冲突, 可能需要后续实验验证哪种loss所代表的意义对不同的下游任务更重要。
### 解决办法与下周安排:
1.将实验视为loss相互竞争的多任务学习, 考虑采用梯度标准化多目标优化( GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks) 或多目标优化( Multi-task learning as multi-objective optimization) 的方式修改代码。
2.增加下游任务实验,观察不同结果的模型在图像分类/目标检测/聚类评估的任务中的发挥。