Fusic Tech Blog

Fusicエンジニアによる技術ブログ

画像と言語を跨いだ機械学習 VLTaskについて
2024/02/19

画像と言語を跨いだ機械学習 VLTaskについて

機械学習といえば

  • 画像処理
  • 自然言語処理

に関するところが代表的な分野であり、それぞれ発展してきた分野であります。

一方で、画像に写っている情景を自然言語で説明する文章を生成する(Image Captioning)などは

  • 画像内の被写体
  • 被写体の状態
  • 状態を説明する文章を構成する

といった具合に、画像ドメインだけでも、自然言語ドメインだけでも解けないようなタスクです

このようなタスクに対して学習することを目指した機械学習モデルはこれまでも研究されていましたが、ここ2年くらいで、BERTのように大規模データでpre-trainしたモデルをタスクに向けてfine tuningするという流れのものが公開されてきました。

その中でも代表的なものの一つがViLBERTです。

ViLBERT

この論文は、

  • ジョージア工科大学
  • Facebook AI
  • オレゴン州立大学

が著者になっている論文です。(私の叔父がジョージア州に住んでいて、叔父の友人でジョージア工科大学OBの達と食事に行ったことがありますが、みなさん聡明で技術力の高い方が勢揃いで楽しかった思い出があります。)

https://arxiv.org/pdf/1908.02265.pdf

実装も、事前学習済みモデルも公開されていました

https://github.com/facebookresearch/vilbert-multi-task

pre-trainは英語で行われているため、日本語をそのまま使うことはできないので自前データを使って手元で動作検証する際は工夫が必要です。

論文内では

このFig.4のようなことが、ViLBERTを用いることでできるタスクらしいです

  • VQA、VCR:画像に関する自然言語の質問に答える
  • Referring Expressions:文章に合致しそうな被写体の検出
  • Caption-Based Image Retrieval:文章と画像の合致度を比較する

どれも面白いタスクですね!

より人間の感覚に近い質問の方法で画像を探したりもできそうな気がします

「街中で大きなプラモデルが写っている」

とかで、ガンダムの実寸台展示の写真とかが探せるんだろうなぁ

公開されているコードを実際に動作させるための環境構築はちょっと骨が折れましたが、なんとか自前で学習回すことができるようにはなって嬉しい今日この頃です。

データ用意

一方で、このようなモデルを学習させられるようなデータが蓄積しているのはかなり珍しいんじゃないかなとも思います

原則、画像 + テキストのペアのデータセットが必要なので この組み合わせのデータが大量に蓄積しているのはかなりレアでしょう。

しかし、逆にそのようなデータが集まっているとこのような一般的な機械学習とは一風違った面白い実験ができます。実証実験(PoC、概念検証)からスタートすることもできるので、お気軽にお問い合わせいただければと思います。

ちなみに、日本語での公開データセットでは stair captionsというMS COCOの日本語キャプション版を千葉工業大学の研究室の方々が作成してくださっています。 こちらでモデルを学習させるのを試してみるとかも選択肢にはなり得ますね。

おまけ

どうやらこの分野で、大規模データをpre-trainしてfine tuningするというモデルのデファクトスタンダードはViLBERTなのかなぁという印象を持っています。

例えば12-in-1: Multi-Task Vision and Language Representation Learningも、ViLBERTを改善してより便利に使えるための研究なので、自然言語処理でいうところのBERTみたいなのかもしれませんね。

https://arxiv.org/pdf/1912.02315.pdf

また、InterBERTというモデルも提案されています。

https://arxiv.org/abs/2003.13198

こちらはアリババグループの公開している論文で、画像と自然言語のembedderのストリームが前半から繋がっているモデルです。ViLBERTは、それぞれのストリームがある程度の長さあるのですが、interBERTでは入力に近いところから繋がっています。

またhard negativeを用いた学習も論文内で提案されていました。

hard negative自体はわりと前からあったそうですが、VL Taskで導入したのはかなり早い段階だったのかと思います。

(ViLBERTもhard negativeに関する言及がありますが、ViLBERTの論文はなどか書き直されているので最初からhard negativeを導入していたかは確認できませんでした。知っている方いたらコメントで教えてください)

愛媛大学で開催されたセミナーにて

2021年8月24日(火)16:30~18:00 に愛媛大学で開催された第10回愛媛大学DS研究セミナーに参加してきました。 https://www.cdse.ehime-u.ac.jp/

牛久 祥孝さんをお招きして、「マルチモーダル理解~Vision and Languageとその先へ」というテーマで貴重なお話をたくさん聞けました。

私は最近このVision and Languageに関する論文調査をし始めたばかりだったので、近年の手法ばかり目にしていたのですが、このセミナーで歴史的な背景から学び直すことができました。

さらに、質疑応答の時間で

「英語pre trainモデルが大半を占めている中で、日本語で利用する際にどのような選択肢があるのでしょうか」と質問しました。

質問前に僕が思いついていたのは

  • 日本語でデータを集めて日本語で学習を回す
  • 日本語のデータを英訳して学習を回す

の2つだったのですが、先生の回答では

「英語で学習し獲得した表現は日本語でも再利用できるかもしれない」というものです。 このアイデアはメジャー言語で学習した自然誤処理モデルをマイナー言語に転用する際に利用されるテクニックとしてこれまでもあったそうで、それをVision and Languageでも利用できる可能性があるということです。

これはぜひ、実験でどの程度利用できるか試してみたいですね。

ちょうど、メジャー言語のマイナー言語の潜在空間を近づける研究をしている方がインターンで来てくれているので、教えを乞いたいと思います。

Ryu Ishibashi

Ryu Ishibashi

機械学習/Vue/React/Laravelとかやってます