Now Loading...

Now Loading...

こんにちは!

今回は、自然言語(人間が普段使う言語)による指示をもとに、多様で複雑なタスクを解決する手法「VISPROG」を紹介します。具体的には、自然言語による指示から、大規模言語モデル(LLM : Large Language Models)を用いてプログラムを自動生成し、それを実行することで、タスクを解決します。

大規模言語モデルに興味がある方は、是非この記事を読んでみてください!

この論文はCVPR’23にてbest paperに選ばれています。URL: https://arxiv.org/pdf/2211.11559

VISPROGの推論例

VISPROGは自然言語の指示を受け、プログラムを自動生成し回答を生成します!
青文字が入力された指示、Predictionが予測結果です。

この論文の主な貢献

1.VISPROG
大規模言語モデルの文脈内学習能力を活用し、自然言語の指示からプログラムを生成するシステムを構築しました。このシステムは、複雑な視覚タスクに対応します。

2.複雑な視覚タスクへの柔軟性を実証
VISPROGを活用して、事実知識に基づく物体タグ付け言語指示による画像編集といった、従来の単一のエンドツーエンドモデルでは成功が難しかった、または限られた成功しか得られなかった複雑な視覚タスクに対応する柔軟性を実証しました。

3.指示調整による精度の向上
大規模言語モデルに入力する指示内容を調整することで、VISPROGのパフォーマンスを大幅に向上させる方法を示しました。

研究の背景

近年、汎用AIシステムの研究が進み、ユーザとモデルが自然言語でやりとりをし、様々なタスクを解決する汎用的で高性能なモデルの開発が進められてきました。
これらの多くは、入力から出力までが全て1つのモデルで行われるエンドツーエンドのモデルであり、モデルの学習には各タスクに応じた適切なデータセットが必要でした。そのため、最終的にこれらのモデルに解決させたい無数の複雑なタスクに対応させるのが難しいという課題がありました。

例えば、モデルに「画像に写っている『ハリー・ポッター』の主要キャラクターの名前をタグ付けして」という自然言語による指示を行った場合を考えます。

このタスクを解決するには、まず、モデルが文章から指示の意図を理解し、その後、タスク解決のために一連のステップを順に実行する必要があります。具体的には、画像内の人物の顔を検出し、その顔が誰なのかを分類するために『ハリー・ポッター』の主要キャラクターの情報を取得します。情報を基に顔を分類し、認識されたキャラクターの顔と名前を画像にタグ付けするというステップです。

このような複雑なタスク全体を1つのモデルを学習して解決することは非常に困難です。

そこで、本論文では、大規模言語モデルを活用して、自然言語で記述された複雑なタスクを、専門的なタスクに特化した学習済みモデルや他のプログラムで処理可能な、より単純なステップに分解することで、このような複雑なタスクを解決する方法「VISPROG」を提案しています。

大規模言語モデルに関する基礎知識

大規模言語モデル(LLM)とは

言語に関する幅広いタスクを扱うことができるモデルを大規模言語モデルといいます。最近では多くの人が使用している「ChatGPT」などもその一例で、質問応答や文章生成、言語翻訳など幅広いタスクに対応できる高性能なモデルです。

本文中学習(in-context learning)

大規模言語モデルがもつ特徴の一つとして「本文中学習」という性質が挙げられます。

大規模言語モデルはプロンプトと呼ばれる指示文章を入力するだけでタスクを解くことができます。そして、その指示内容を変更することで、モデルの中身(パラメータ)を変更することなく、処理内容を変更したり、性能を向上したりすることができます。これを「本文中学習」といいます。

図1に本文中学習の例を示します。この例では、英訳してくださいという直接的な指示をせずに、問題と回答の例から求められている出力を理解しています。この性質は、様々な問題に応用可能であり、今回のプログラムの自動生成にも応用されています。

【図1】少数の例を提示することによる本文中学習の例

VISPROGの手法:大規模言語モデルを用いたプログラムの自動生成

タスクに関する指示文の入力から、実行結果の出力までの流れは以下のように示せます。

  1. 本文中学習用の例と実際の指示文を含んだプロンプトを大規模言語モデルに入力
  2. 大規模言語モデルによるプログラムの自動生成
  3. 実行結果の出力

以降では、各ステップの詳細を説明します。

大規模言語モデル(LLM)への入力

大規模言語モデルへの入力は、「本文中学習のための指示文とプログラムの例」「実際に解決したいタスクの指示文」の2部に分かれています。図2に具体的なプロンプトを示しています。図中の赤い部分が本文中学習のための例であり、青い部分が指示文となっています。

本文中学習の説明の際にも記述したように、質問とその回答の例を示すことで大規模言語モデルが質問に対する回答を生成できるという性質を利用し、今回では質問に該当する部分を指示文に、回答に該当する部分をプログラムにしています。

提示する例について見ていきます。わかりやすい例として、3つ目の例では「赤い車を青い車に置き換えてください」という指示があり、それを解決するためのプログラムが示されています。このプログラムは手動で作成したものであり、詳しい内容については後述します。

このようなプロンプトを大規模言語モデルであるGPT-3に入力することで、指示文に対応するプログラムを自動生成することができます。

【図2】大規模言語モデルへのプロンプトの例

大規模言語モデル(LLM)が自動生成するプログラムと実行結果

大規模言語モデルからの出力は、各行で対応するモジュールを呼び出す、Pythonライクなプログラムになっています。図3には出力されたプログラムの例を示しています。このプログラムでは、1行目にSeg() モジュールを、2行目にSelect() モジュールを呼び出しています。

【図3】大規模言語モデルが出力するプログラムの例

図4にプログラムの各行がどのように動作しているのかを示しています。左上にタスクの指示文と対象画像があり、左下に実行結果の画像(Prediction)があります。この例では、「地面を雪のある地面に、クマをホッキョクグマに置き換えてください」という画像編集タスクを行っています。

画像右側には、プログラムの各行と、その行で実行されている処理内容が示されています。例えば、3段目の Select() モジュールでは、2行目で作成したセグメンテーション(領域分割)の中から ‘ground’ に該当する領域を選択するという処理が行われています。その後、4段目で Replace() モジュールによって、選択された ‘ground’ が ‘white snow’ に置き換えられています。

このように、プログラムの各行で個別のタスク(セグメンテーションや画像の置換)が行われており、それらを組み合わせることで、最終的に複雑なタスクを解決しています。

【図4】プログラムの実行結果の例

【実験・結果】

論文内では、4つのタスクに対して実験が行われていましたが、その中でもわかりやすいと感じた「言語指示による画像編集」事実知識に基づく物体タグ付け」における実験結果を紹介していきます。

言語指示による画像編集

実験方法を簡単に説明すると、65枚の画像とそれらを対象とした107種類の編集指示文を用意し、手動で出力結果の正確性を評価しました。また、プロンプトには手動で作成した10組の「本文中学習のための例(指示+プログラム)」を使用しました。

【図5】画像編集タスクの実行例

図5に画像編集タスクの実行例を示しています。この例では、「砂漠を草原に置き換えて」という指示文が与えられています。実行結果が右の画像であり、「砂漠」が「草原」に置き換えられていることがわかります。

本論文では、画像編集タスクにおける精度(図6)を人が評価しており、指示調整を行う前の精度は59.8%になっており、全体の6割の指示に対応した画像編集が実行できるとう結果になりました。

また、大規模言語モデルに入力する指示文章を調整した場合の精度が66.4%になっており、6.6%の精度向上を達成しました。

【図6】画像編集タスクの実験結果

具体的な指示調整の内容としては、指示文にカテゴリ名を付与するといった、編集対象を明確化する説明が追記されています。図7では、Originalではカーペットが置換されてしまったのに対し、テーブルというカテゴリ名を設定することで、適切な処理が行われるようになりました。

【図7】指示調整の例(画像編集タスク)

事実知識に基づく物体タグ付

実験方法を簡単に説明すると、外部知識を必要とする100種類のタグ付け指示を46枚の画像に対して用意し、それぞれの指示に対して、タグ付けの対象をうまく特定できているかを示す指標(Localization)と、タグ付けの内容が正しいかを示す指標(Tagging)をF1スコア(適合率と再現率を基に計算)で評価しています。

また、プロンプトには手動で作成した14組の「本文中学習のための例(指示+プログラム)」を使用しました。

この知識タグ付けタスクでは、事実知識を調べ、その知識を画像内のオブジェクトにタグ付けする必要があります。VISPROGでは、その知識のデータベースとして大規模言語モデル(GPT-3)を使用しています。具体的には、図8のような国旗のタグ付けタスクを行う場合、スカンジナビアの国名のリストを大規模言語モデルから取得し、画像内の国旗オブジェクトと取得した国名を結びつけています。

【図8】知識タグ付けタスクの実行例

実験結果を図9に示します。指示調整前の精度はTagging(タグ付けの精度)が63.7%、Localization(位置特定)が80.6%といった結果になっており、特に位置特定において高い精度を達成しました。

また、画像編集タスクと同様に指示調整によって精度の向上が可能なことがわかりました。調整後、特に、Tagging(タグ付けの精度)が10%以上精度が向上しており、所望のプログラムを生成する際に、指示文の内容が非常に重要であることがわかりました。

【図9】知識タグ付けタスクの実験結果

具体的な指示調整の内容としては、位置特定がしやすいよう場所に関する情報を追記したり(図10)、タグ付けするオブジェクトの数を指定したり(図11)などが挙げられます。

【図10】場所に関する情報の追記
【図11】タグ付けするオブジェクトの数を指定

まとめ

今回は、特定のタスクに特化した学習をすることなく、大規模言語モデルの「文脈内学習能力」を用いて、複雑な視覚的タスクを解くためのプログラムを自動生成する手法を紹介しました。様々な種類の複雑なタスクに対して、自然言語による指示を与えるだけで解決できるという画期的な方法でした。

実験結果からは、所望のプログラムを生成する上で、大規模言語モデルへ入力する指示文の内容が重要であるということもわかりましたね!

現在、大規模言語モデルの研究が発展し、GPT-4oなどが登場したことにより、ChatGPTでも画像が扱えるようになりました。しかし、画像と指示文だけを与えて複雑なタスクを解決するのはまだ難しい段階です。複雑なタスクを処理するためには、モデルへのプロンプトに工夫が必要になります。

大規模言語モデルのプロンプトを研究した「プロンプトエンジニアリング」と呼ばれる分野も存在するので、興味が湧いた方は是非調べてみてください!

文献

Gupta, Tanmay, and Aniruddha Kembhavi. “Visual programming: Compositional visual reasoning without training.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023. https://arxiv.org/pdf/2211.11559

\ シェア /

E資格スピードパッケージ2023#2修了者合格率100%達成

zero to one E資格 jdla

zero to oneの「E資格」向け認定プログラム

日本ディープラーニング協会の実施するE資格の受験ならzero to oneの「E資格」向け認定プログラム (税込165,000円) をおすすめします。当講座は、東京大学大学院工学系研究科の松尾豊教授と東北大学大学院情報科学研究科の岡谷貴之教授が監修する実践的なプログラムとなっています。
厚生労働省の教育訓練給付制度対象のE資格認定プログラムの中では最安値※となり、実質負担額49,500円~(支給割合70%の場合)で受講可能です。※2023年弊社調べ zero to one E資格 jdla

人工知能基礎講座を提供中

人工知能の第一人者である東京大学の松尾豊教授が監修した人工知能基礎講座を受講してみませんか? 人工知能の歴史から自然言語処理、機械学習、深層学習といった最先端のトピックやAIに関わる法律問題まで網羅しているので全てのビジネスパーソン・AIの初学者におすすめです。

サンプル動画

人工知能基礎講座はこちら↓ zero to one G検定 人工知能基礎 jdla

AI初学者・ビジネスパーソン向けのG検定対策講座

G検定受験前にトレーニングしたい方向けの問題集「G検定実践トレーニング」も提供中です。 zero to one E資格 jdla