Flamingo: a Visual Language Model for Few-Shot Learning
DeepMindの、VLM(Visual Language Model) / LMM(Large Multimodal Model)の論文。文中に画像が現れてるようなものを読んで、画像と文章の両方を加味した文章生成ができる。例えばin-context learningを通じてVisual QAなどができる。
アプローチ
- e2eではない。Vision Encoder (VE)とLanguage Model(LM)を持ってきて、それらの重みはfreezeする。
- VEの出力(W'×H'×C)を、Perceiver Resamplerというモジュールに通し定数長にする。そして、LMの各ブロックの間に、その定数長のベクトルへのcross-attentionを混ぜ込むレイヤーを追加する。
- Perceiver Resamplerは、それはそれでなんというか普通にattentionするだけ。K, Vが各パッチのベクトル(長さC)で、Qはtrainableな固定ベクトルだと理解した。(なおK, VにQをconcatenateする謎テクにより性能が少し上がるらしい)
- 混ぜ込むレイヤーの出力にはgate機能をつけ、これが最初ゼロになっとくことにより最初は元のLMと同じ出力をするのでやさしく学習できる。ControlNetとかに似とるね。
その他
- Perceiver Resamplerの機構はVision側が動画でも適用可能。計算量はやばそう。