Report/10月25日本周科研工作进展.md

1.9 KiB
Raw Blame History

10月25日本周科研工作进展

1.对代码进行改进增加了查看loss_inst和loss_proto贡献度的功能

实验设置:

参数名 参数
数据集 mini_imagenet
epoch 100
热身epoch 15
翻倍的倍数 1.7
实例窗口大小 3
原型窗口大小 3
阈值提升 1.7

实验结果:

log4

现象:

Acc_inst 与 acc_proto 的增长相较于之前大幅度下降从loss方面可见loss_inst在热身后减少缓慢而loss_proto下降较快。

思考1

应该是修改loss_proto权重导致的问题原pcl代码中有一段错误的代码

loss_proto /= len(args.num_cluster)

img

此处args.num_cluster对应公式中的M但在PCL代码中是一个字段原作者是想计算字段中不同聚类数目的种类但使用len计算字段长度会导致loss_proto被错误地减小10倍甚至100倍以上但减小的loss_proto反而推动了训练进行。

思考2:

相较于loss_instloss_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.增加下游任务实验,观察不同结果的模型在图像分类/目标检测/聚类评估的任务中的发挥。