美文网首页
ClipCap【用到Prefix Tuning】

ClipCap【用到Prefix Tuning】

作者: zilla | 来源:发表于2023-11-08 18:09 被阅读0次

任务

Image captioning,即看图说话,对输入图像做有意义且有效的文字描述。应用可以是:目标检测。

方法

ClipCap
  1. 使用CLIP的image encoder(冻结)将图片转换为embedding;
  2. 将embedding和学习得到的常量输入到mapping network(轻量,基于transformer),得到Prefix embedding;
  3. (推理时)将Prefix embedding输入到语言模型(冻结的GPT2),得到Caption tokens。
    只有mapping network需要训练,一张1080使用300万样本训80小时即可。

训练

给定(image,caption)数据集合\{x^i, c^i\}^N_{i=1},我们的目标是从没见过的image生成有意义的caption(看成padding到定长的token序列c^i = c^i_1,\cdots,c^i_\mathcal{l})。训练目标:
\mathrm{max}_\theta\sum\limits^{N}_{i=1}{\text{log}\ p_\theta(c^i_1,\cdots,c^i_{l} |\ x^i)}
\theta是可训练的参数(mapping network的参数)。
我们将图片语义(由CLIP的image encoder提供语义丰富的embedding)这一condition作为caption的前缀。由于图片语义已经包含在了前缀中,我们可以使用自回归语言模型,在不考虑未来token的情况下,预测下一个token。
所以训练目标就是:
\mathrm{max}_\theta\sum\limits^{N}_{i=1}\sum\limits^{l}_{j=1}{\text{log}\ p_\theta(c^j_i|\ x^i, c^i_{1}, \cdots, c^i_{j-1})}
怎么把图片语义转化成前缀用作自回归的condition呢?这里用到mapping network,它以\text{CLIP}(x^i)为输入),输出p_1^i, \cdots, p_k^ik个embedding vector),每个embedding vector和语言模型的token embedding形状相同。
在训练中,我们拼接p_1^i, \cdots, p_k^ic^i_1,\cdots,c^i_{l}得到Z^i = p_1^i, \cdots, p_k^i, c^i_1,\cdots,c^i_{l}。损失函数用了二分类交叉熵:
\mathcal L_X = -\sum\limits^{N}_{i=1}\sum\limits^{l}_{j=1}{\text{log}\ p_\theta(c^j_i|\ p_1^i, \cdots, p_k^i, c^i_{1}, \cdots, c^i_{j-1})}

语言模型微调

训练中最大的挑战在于,怎么互译CLIP和语言模型的给出的表征。即便语义都很丰富,表征空间仍是不同的,并且训练数据集也会带来差异。因此要在训练mapping network的同时对语言模型做微调。但微调会让训练的参数量大大增加。所以作者参考Prefix Tuning设计了一个附加的量,而让语言模型在训练中冻结。(作者还解释了下为什么不对CLIP的image encoder做微调,因为试了没用)

Prefix Tuning还没看完

。。。。。。。。。。。。。。。。。

相关文章

网友评论

      本文标题:ClipCap【用到Prefix Tuning】

      本文链接:https://www.haomeiwen.com/subject/frmqwdtx.html