机器学习笔记(20.8): CD-CCA
可能更好的阅读体验 Jeefy's Blog: CD-CCA
核心解决的问题就是如何充分利用云端的大模型指导边缘的小模型适应边缘的特定环境。
- 如何判决小模型对于某个数据表现得不好,并且有较高的训练价值?
依旧是输出的香农熵(UTS):
\[U = \sum - p \log p
\]
但是这里还有一个指标,用于判断模型是否对于数据的输入有相对较高的敏感度(VIS):
\[\sigma^2 = \frac 1 M \sum (F_m - \bar F)^2
\]
其中 \(F_m\) 表示采用了随机蒙特卡洛 dropout 后,模态的 Encoder 的输出的 token。
这里的 dropout 应该不是指的是对于 Encoder 的参数进行 dropout。而是对于输入的模态进行部分 mask 的 dropout 进行数据增强。根据公开代码,是 直接对 Q-Former 输出的
image_tokens做F.dropout
这里 UTS 和 VIS 共同作用,既对于需要训练的数据进行了剪枝,同时也对 “随机性” 带来的噪声有一定的鲁棒性,使得训练更关注值得被训练的数据。
- 损失函数
分为三部分:
- \(L_{query}\) 用于对齐 S(student) 和 T(teacher)的中间表示。也就是 UT 进入 Encoder 和 Q-former 后的输出
- \(L_{repr}\) 用于强化 S 的 LLM 注意力
- \(L_{CE}\) 用于保证答案正确(

也就是说,分别对齐的是 Embd,Hidden State 和 Answer 三部分内容。
也就是三阶段蒸馏。
其中可训练参数有:
- Embd 的映射矩阵 \(\phi\)
- Q-Former 的 token 映射
- LLM 的
adapter 和FFN 中的 LoRA 参数
- 如何在 Cloud 和 Device 之间传递训练后的参数?
采用 DWC,\(\Theta_{compressed} = \Theta_{updated} - \Theta_{base}\)
虽然论文中说的是 Adapter,但是根据公开代码,更多采用的是 LoRA 旁路,而不是 Adapter block。所以最后这个微调还是 LoRA
最后,就:

循环就达成了。

浙公网安备 33010602011771号