はじめに
この記事はマルチモーダルな視覚言語モデルであるFlamingoに関する論文(Flamingo: a Visual Language Model for Few-Shot Learning)の周辺知識を、備忘録として個人的にまとめたものです。内容に誤りがないよう最善の注意を払っていますが、浅学のため万が一内容に誤り・不備がありましたらお知らせいただけますと幸いです。
論文の要旨
マルチモーダル機械学習の分野において、既存手法であるファインチューニングや対照学習には限界がある。そこで、Flamingoという視覚言語モデルを考案する。
FlamingoはLMをベースにしたモデルで、任意にインタリーブ(交互に混ざり合った)されたテキストと画像を含む大規模なマルチモーダルWebコーパスで学習することができる柔軟性を持つ。また、シーンやイベントを説明する能力を評価するキャプションタスクや、複数選択のビジュアル質問応答のようなタスクにおいては、Flamingoのモデル1台で、タスクに特化した例を与えるだけで、Few-shot LearningのSOTAを達成できることを実証している。これらのベンチマークの多くで、Flamingoは、数千倍のタスク固有データでファインチューニングされたモデルの性能を上回った。
ファインチューニング
事前学習済みの機械学習モデルに対し、新しく追加で学習させてパラメータの微調整を行うこと。
-
メリット
既存のモデルを微調整するだけで新しいタスクに適応できるため、新しくモデルを作ることに比べると手間やコストが少ない。 -
デメリット
巨大なモデルに対しては膨大な学習データや計算資源が必要になる。(このデメリットが論文で問題提起されている) -
利用例
わかりやすい例としてChatGPTに対するファインチューニングがある。企業内における利活用では、当然ながらChatGPTが学習していない企業内のデータが必要になってくるケースがある。そこで、企業内のデータを学習させ(もちろん情報漏洩などには十分注意する必要があるが)、その企業独自のタスクに適応させることができる。
対照学習
自己教師あり学習の一種で、データそのものから構造を学習し、類似のデータは類似の特徴量となるように学習すること。
クラスタリングとの違い
クラスタリングは教師なし学習の実用例の一つであるが、こちらはデータを類似するグループで分けるものであり、特徴量を学習するわけではない。クラスタリングの目的はデータそのものを分類することであるのに対し、対照学習はデータごとに類似する特徴量を学習しそれを用いて様々なタスクに応用することが目的である。
Flamingoの文脈における対照学習
本論文で言及される「Contrastive model(CLIPやALIGNなど)」は、これを画像とテキストのマルチモーダルに拡張したものである。「この画像」と「その説明文」を正例ペア、無関係なテキストを負例ペアとして対照学習させることで、画像とテキストを同じ次元の空間で比較できるようになる。ただし、これらはあくまで検索や照合にのみ特化しているため、Flamingoのようにゼロからテキストを生成することはできない。
Few-shot Learning
過去に蓄積したデータをもとに、非常に少ない学習データでモデルが正確な予測を行えるように学習する手法のこと。ここでいうshotとは、学習に使用するデータのこと。文字通り、少ないデータ(few-shot)での学習である。
主に、以下の三つのアプローチがある。
-
転移学習アプローチ
事前学習済みモデルのパラメータを新しく学習したいモデルのパラメータへ移転し、初期値として使う手法。 -
メタ学習アプローチ
モデルのパラメータの学習方法を学習する手法。多種多様なタスクに対する学習を通じて、モデルが新規のタスクに対しても柔軟に対応できることを目指す。 -
コンテキスト内学習アプローチ
LLMをベースとした生成AI(ChatGPTや本論文のFlamingoなど)において、プロンプトを通じて一時的にタスクの規則性に適応させる手法。LLMの「対話の文脈を理解し保持する能力」を使うことにより、モデルのパラメータは一切変更せずに実現できる。
メリット
言わずもがな、データ収集や教師データを作成する時間と費用を大幅に削減できる。
また、医療における希少疾患や生物学の絶滅危惧種といったデータ数が非常に少ない分野においてもAIを導入することが可能になる。
デメリット
転移学習アプローチやメタ学習アプローチといったパラメータを更新するタイプのFew-shotでは、データが少なすぎるためそのデータに過剰に適合してしまい、未知のデータに対応できなくなる過学習に陥りやすい。
参考資料
以下の資料を参考にさせていただきました。
- Sky株式会社,「ファインチューニングとは? 仕組みや実施手順をわかりやすく解説」
- NTTテクノクロス株式会社, 「ファインチューニングとは?基礎を理解する ~LLM活用入門9回~」
- ksonoda(Kenichi Sonoda), Qiita, 「【ChatGPT】ファインチューニングをわかりやすく解説」
- AI Academy, 「【初学者向け】対照学習(Contrastive Learning)とは?」
- Uchiita_27, Qiita, 「Contrastive Learning超入門」
- rinrinpan(HAYASHI), Qiita, 「DINOv2で変わる画像理解:自己教師あり学習とクラスタリングの違いとは?」
- Zulfazli, One Tech Blog by GMO, 「Few-shot Learning : 少ない画像データで学習する【前編】」
- セゾンテクノロジー, 「コンテキスト内学習(ICL: In-Context Learning)」