Slide 1

Slide 1 text

プログラム⽣成・実⾏による構成的推論 Shumpei Miyawaki keywalker,inc. / Tohoku Univ. @catshun_ 地理空間情報 × ⾃然⾔語処理 への応⽤

Slide 2

Slide 2 text

P.1 LT ⽬的 • ReAct, function calling とは異なる推論⽅法として プログラムベース構成的推論 を紹介 • 発表を通して「推論⽅法の⻑所・短所の議論」「これ出来そう」のような議論ができると嬉しい https://note.com/catshun_/n/na18e2c470b2f

Slide 3

Slide 3 text

プログラム⽣成・実⾏による構成的推論 Gupta+’23 - Visual Programming: Compositional Visual Reasoning Without Training (CVPR 2023 Best Paper) https://github.com/allenai/visprog/tree/main

Slide 4

Slide 4 text

P.3 構成性 [Marelli+’14; Partee+’84; Frege 1892] ⽂や句の意味は、単語の意味と⽂の構造に従って構成的に理解される プログラム ⽣成・実⾏ による 構成的推論 複雑なタスク は構成性を仮定して サブタスク に分解 [Krishnamurthy+’13; Andreas+’16] (従来)既製パーサ性能 [Andreas+’16]、⾼い学習コスト [Hu+’17] が問題であった (現在)汎⽤性の⾼い LLM の出現 によって 既製パーサ性能依存・学習コスト の問題が緩和 (現在)プロンプトによるタスク分解 [Khot+’22; Dua+’22; Zhou+’23; Press+’23] も有効性が検証されている 参考︓岡崎 (東北⼤) +’15 – 単語の分散表現と構成性の計算モデルの発展 https://www.slideshare.net/naoakiokazaki/20150530-jsai2015

Slide 5

Slide 5 text

P.4 プログラム ⽣成・実⾏ による 構成的推論 Gupta+'23 - Visual Programming: Compositional Visual Reasoning Without Training (CVPR) ① 物体検出(ヒト) ② 物体検出(ラクダ) ⑤ 算術演算 2 = 1 + 1 〜 〜 ʢ72"ʣώτͱϥΫμͷ߹ܭ਺͸ʁ 物体1 = localize ( img=画像in , query=“ヒト” ) 物体2 = localize ( img=画像in , query=“ラクダ” ) 個数1 = count ( boxes=物体1 ) 個数2 = count ( boxes=物体2 ) 答え = eval ( expr= “{個数1 } + {個数2 }” ) ① ② ③ ④ ⑤ 1. プログラム⽣成︓ 事前に定義された関数集合を⽤いて LLM がプログラムを⽣成 2. プログラム実⾏︓ ⽣成したプログラムを実⾏し最終出⼒を得る タスク⼊⼒

Slide 6

Slide 6 text

P.5 プログラム ⽣成・実⾏ による 構成的推論 Gupta+'23 - Visual Programming: Compositional Visual Reasoning Without Training (CVPR) GPT-3 に few-shot のプログラム事例を与えて 対象タスクのプログラムを⽣成(右図) BMW を Audi に修正、曇り空を晴れ空に修正 ⾚い⾞を⻘い⾞に修正 ⽩い Audi をポップに彩って Nicole Kidman の顔を :p に修正して

Slide 7

Slide 7 text

P.6 プログラム ⽣成・実⾏ による 構成的推論 Gupta+'23 - Visual Programming: Compositional Visual Reasoning Without Training (CVPR) ③ の⽂字列を解析 { ”kwargs”: { ”boxes”: ”物体1 ” }, ”function”: ”count”, ”output”: ”個数1 ” } 物体1 = localize ( img=画像in , query=“ヒト” ) 物体2 = localize ( img=画像in , query=“ラクダ” ) 個数1 = count ( boxes=物体1 ) ① ② ③ GPT-3 が⽣成したプログラムを逐次実⾏ 実⾏結果を保存 ”物体1 ”: , ”物体2 ”: , program.state key = kwargs[“boxes”] boxes = program.state[key] program.state[output] = len(boxes) ③ を実⾏ ③ の結果を保存

Slide 8

Slide 8 text

P.7 結局どれが良いの︖(個⼈的妄想) 推論⽅式 ⾔語 (柔軟性) LLM 呼出 内省・検証 リスク ReAct ボトムアップ ⾃然⾔語 (⾼い) 思考回数分 Reflexion hallucination snowballing function calling ボトムアップ ⾃然⾔語 (⾼い) 思考回数分 (×1~2) ︖ プログラマ依存 プログラム 構成的推論 トップダウン プログラム⾔語 (低い) プログラム⽣成分 PEARL プログラマ依存 A. タスク設計に応じて柔軟に使い分けるのが良い プログラムベース推論が優れるのは︓ ・タスク間で多くのサブタスクが共通する場合(視覚タスクでいうと detect, crop など) ・⼊⼒と出⼒の型が⼀意に定まる再現性のある処理(読書感想⽂などは不向き)

Slide 9

Slide 9 text

アプリケーションの簡単な紹介 モチベーション > 詳細 の話をするので共感いただけた⽅、 後ほどお話しできると幸いです︕ https://note.com/catshun_/n/na18e2c470b2f

Slide 10

Slide 10 text

P.9 どんなアプリケーションか︖ 🙆 ⾸都圏の⼋⽉に⾏われる花⽕⼤会 (動機)地理空間情報の関連タスク(旅⾏計画・マップ作成など)ではサブタスクが共通している (概要)マップ作成アプリケーション(ToDo: 旅⾏計画) 1. ユーザからのクエリ解析 2. “⾸都圏 ⼋⽉ 花⽕⼤会” で Google 検索 3. 検索結果からクエリに該当する場所情報を取得 4. 各場所に対してジオコーディング 5. 結果を Google Map 上にプロット これらのサブタスクは旅⾏計画等でも共通する → プログラムベース構成的推論 を採⽤

Slide 11

Slide 11 text

P.10 アプリケーション構成図

Slide 12

Slide 12 text

P.11 興味︓マルチモーダル × ⾔語媒介推論 ⾔語 Enc 記憶領域 ⾔語 Dec 多くのアプリケーションの対象範囲 実世界の事象 実世界へ投影 ここをやりたい ここ × 時間変化 空間変化 旅⾏先到着など GPS 情報が変化したらユーザ嗜好に合わせて 歴史情報、アニメ聖地、飲⾷店マップ等の旅⾏ガイドを⾃動で作成する → 旅⾏計画~旅先~振り返り をサポートしてくれる旅⾏代理エージェント

Slide 13

Slide 13 text

P.12 動機︓「検索からマップ表⽰まで」のシームレスな接続をしたい じゃらん AI や Google Map などは素晴らしいアプリケーションだが、 検索結果と地理空間情報が必ずしもマッチしている訳ではない ⾔語 Enc 記憶領域 ⾔語 Dec 実世界の事象 実世界へ投影

Slide 14

Slide 14 text

P.13 さいごに もしモチベーションに共感された⽅がいましたら、 後ほどお話しできると幸いです︕