2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
リンクをコピー
記事をブックマーク
蒲生弘郷氏(以下、蒲生):時間的にはあと5分しかないんですが、すみません、延びるのを前提でやらせてもらいます。
外部情報を取得して文脈として与える考え方に「Grounding」というものがあります。いきなり出てきて何なのかという話になってくるんですが、いわゆるBing Chatに近いものです。
Bingは基本的にサーチをかけていって、そのサーチした結果をGPTに返してくるんですが、次のステップに進む前にこの動きを(まず)理解してもらおうかなと思います。
これって実際にはGPTが勝手に解釈して勝手につなぎにいっているわけではなくて、例えば「2023年のWBC優勝国はどこ?」と聞かれた場合には、バックエンドプログラムが処理を1回受け取っています。バックエンドプログラムの処理を受け取って、チャット内容をGPTに1回渡して、「クエリ化をしなさい」という指示を出します。
これをクエリ化して、「WBC、2023年、どこ?」とそのまま打ってもいけないので、「WBC 2023 優勝国」みたいなかたちにクエリに直してあげて、その検索結果を返させて、バックエンドプログラムで再び質問する。
「ユーザーが書いている質問と、(その)検索結果はこういうものが得られています」というところを加味した上で回答させるといった動きをしているんですね。
こういう外部ツールに接続をさせていくような考え方をGroundingと呼んでいるんですが、Groundingという言葉はけっこう曖昧性が残っています。あくまでこの発表内ではGroundingという言い方をしていますが。これを使った新しいプロンプティングが出てきています。
それが「ReAct」という考え方です。ReAct自体は名前がけっこうひとり歩きしていて広義な意味で扱われるケースも多いんですが、厳密に言うと「必要なGroundingをGPTに考えさせて、動的にタスク実行するようなプロンプティング」です。
具体的にどうなるのか、まずイメージからつかんでもらいます。「今から野球を始めるんだけど、おすすめの野球用具一式を教えて」と聞くと、先ほどGroundingが走っていったようなかたちでバックエンドプログラムが受け取りつつ、まずはWeb検索を走らせます。クエリ化をして、「初心者 野球用具 一覧」(の結果)を持ってきます。
この初心者の野球用具リスト。例えばバットとボールとかですね。この返ってきたリストに基づいて、今度はGPTが考えて次に何をするのかを決めて、商品DBや検索エンジンに初心者向けの情報を取りにいきます。ここは社内DBとかの位置付けですね。社内で持っている商品データベースみたいな位置付けだと思います。
単純に聞かれたものを検索して答えるんじゃなくて、「商品情報を受け取った上で、回答させるクエリに応じて、何をすべきなのかを判断して、GPTが回答を変えた」という振る舞いができるようなプロンプティングがあるんですが、それがReActというものです。
例えば「これを3つずつ買うと、いくらぐらいになります?」と聞かれた場合には、検索とか商品DBとかを見るんじゃなくて、計算機を呼び出してあげて、合計金額を返させた上で「53,000円です」と回答できます。
さっきPhase 3で紹介しましたが、動的にGPTが振る舞えるようになるというのは、こういったかたちが将来像として見えてきているということになります。
(スライドを示して)具体的にこれは何が動いているのかというと、発表向けに抽象化してけっこう省略はしているんですが、裏ではこんな感じに動かしているという例を出しました。
「あなたはスポーツ用品メーカーの購入アシスタントです」と役割を普通に渡してあげて、使えるツールは「Search」と「Lookup」と「Calculate」と、「こういうことができるツールですよ」とGPTにあらかじめ教えておきます。
「回答形式としてあなたがやることは、目的を達成するために必要なことを考えて記載しなさい。そして、必要なActionとActionのために必要なinputを入れた上で、もしActionの内容がなくなれば結論を書いてください」という渡し方をしてあげる。
例えばユーザーからの「Question」。ここはあえて回答をしっかりさせるために、Questionを「野球を始めようと思っています。グローブが欲しいのですが、どんなものを買ったらいいのでしょうか。最も安価なものだとうれしいです」と書きました。
とりあえずこの「Question」に対して、チャットボットはまず考えます。「野球のグローブの種類や価格帯を調べる必要があるな」「『Action』は『Search』が必要だ。そして『Action input』はこれでやろう」というかたちでチャットボットが決めてくれます。
決めた内容をバックエンドプログラムが受け取って、「Action」と「Action input」の内容を受け取り、「あっ、GPTはこう言っているから、私はその言うとおりに『Search』を動かします」というかたちで、Web検索に「野球用グローブ 種類 価格 初心者向け」といった検索を走らせて、Web検索結果を得る。
Web検索結果を得たら今度はその内容を「Observation」というところに、「初心者であっても、グローブは1万円以上のものを選んだほうがいいでしょう。本革のグローブを使うべきです」といったかたちで、今までの「Question」とか「Thought」とかも全部含めた上で、もう1回GPTに投げるという動きをします。
これらを含めてあげると、GPTは今までの思考過程と検索の結果、得られた内容を考えた上で、「じゃあ次にしていくものは何だろうな? Thought、本革のグローブで1万円前後の商品情報を取得する必要があるな」というかたちから、「Lookup」というアクションが必要だと考える。
「Lookupに必要なインプットはこれだな」というかたちで出してあげて、また商品DBの検索にかかって結果を返してということを繰り返し繰り返しやっていく。以降、結論が出るまでやり続けるんですが、このReActのプロンプトの流れは、設計しようとすると非常に大変です。
ここ(スライドの内容)もだいぶはしょっている部分はあります。実際には「Action」の入れ方みたいなところも指示をしているし、例示にもいわゆるFew-shotも入れていたりします。
こういうReActをやって、最終的には動的なタスク認識も含めてできるようなかたちになるんですが、今のを全部組んでいると大変だということで、そこのバックエンドの処理をある程度自動化してくれるというか、よろしくやってくれるツールとしていくつかライブラリが出てきています。
1つはけっこう有名ですが、「LangChain」と呼ばれるライブラリです。LangChainのライブラリはReActみたいに動的な実行だけじゃなくて、例えばプロンプトのテンプレート機能であったり、プロンプトを覚えていくメモリ機能みたいなところも含めて全般的に提供してくれる、非常に便利なツールになっています。
このLangChainを使ってあげると、ReActを自動化する「Agent」と呼ばれる機能みたいなところに、さまざまな先端機能が実装されるかたちになります。
それからあとは、「Semantic Kernel」。これはマイクロソフトがOSSとして最近発表したものです。やれることはLangChainと似たようなかたちにはなってくるんですが、Planner機能でAgent機能と同じようなパイプライン生成も可能になっています。
「ReActのような」と書いたのは、中身の生成ロジックとかがちょっと違うかなと私は思っているからです。いずれにしても、AIが何をすべきなのかを自分で考えてアクションを決めてくれるといったところがやり取りの中でできるようなライブラリになっています。同じくメモリーとか、プロンプトのテンプレートみたいな機能も提供されています。言語系のツールはこれからどんどん出てくるかなとは思うんですけれども、やはりいずれも開発速度が非常に速いです。
次々に論文が出てきてそれを次々に実装しているようなかたちになるので、確かに未来感がるし「すげぇ!」と思うんですが、やはり適切なバージョン管理をしておかないと、もう次のバージョンでは使えなくなっている機能がある。
あるいは、本番利用をしていく上では、本当に自分のさせたい振る舞いができているのかどうかを、やはり検証していく必要が出てくるので、注意しながら使っていくことが必要かなと思います。
こういったGPTを何回も呼び出していってパイプラインを組んでいくことは、今後けっこう重要になってきています。
ちょうど、ReActの中でもちゃんと順を追って考えていかないと何をしているのか中身がぜんぜんわからない。「GPTを何回呼んでんねん」みたいな話が出てきたと思いますが、「どこにどういう指示を与えた上で、与えるべきプロンプトは設定時点で(何が必要か」という)想定が必要になってきます。
(スライドを示して)先日、BabyAGIさんと呼んだほうがいいのか、アレかもしれないですが……。Twitter上で公開をされていたものになります。GPT-4を呼び出していくような流れとかパイプラインは非常によく設計されています。
例として非常に参考になる情報になっているので、これから新しいサービスを作っていきたい場合には、GPTのパイプラインをどう組んでいくのがいいのか、実際にはどう組まれているのかみたいなところをちょっと意識しながら考えてみるといいかなと思います。
ここまで長くしゃべってきましたが、Fine tuningとPrompt Engineeringの位置付けがだんだん見えてきたのかなと思います。Fine tuningというのは、何度か言っているように主観がだいぶ含まれる部分もあるんですが、あくまで内部の長期記憶や基礎の言語能力のようなものを獲得するようなイメージになります。
プロンプトを与えてあげることによって、いわゆる情報参照的、教科書持ち込みの試験的みたいなかたちで、細かい内容にもある程度対応できるようになってくるかたちになっています。学習側の工夫がすべてだった今までのML開発とは違って、プロンプト側の工夫がだいぶ重要になってきているというところがハイライトです。
Fine tuningもまだまだリソースが確保されていないし、1回やろうと思うと数百のデータとかを使っていかなければならないので、そのコストも必要になってくるという話になってきます。
まずはプロンプトでどうにかできないのかを考えていきながら、「まったく新しいタスクとか、タスクそのものの精度を絶対に向上させていかなければならない」みたいな話になってきたら、Fine tuningを含めた改良を検討していくようなかたちになります。それぞれの特徴みたいなものを捉えて、全体的にAIの学習を考えていければいいのかなと思います。
(次回に続く)
関連タグ:
「Azure OpenAI Service」の一般提供から始まった“ビジーな”進化 マイクロソフト製品におけるGPT機能組み込みの流れ
「GPTが動的な“タスク計画と実行”をする方向に進歩していく」 日本マイクロソフトの蒲生氏が語る、GPTで描かれる未来
「OpenAI APIの安定稼働版のようなイメージを持ってもらえればいい」 Azure OpenAI Serviceの特徴と、プレイグラウンドのデモ
例示で精度を高める「Few-shot Learning」、思考の連鎖「Chain of Thought」… 新しいパラダイム「プロンプトエンジニアリング」に対するアイデア
GPTが単純に回答するだけでなく、動的に振る舞えるようになる Groundingを使ったプロンプティング「ReAct」の流れ
日本マイクロソフトの社員が教える、GPT×ReAct活用のコツ トークン制限がある場合は分割格納、自然言語の履歴管理にはNoSQLデータベースを
AzureでGPT活用するためのシステムの参考アーキテクチャ “金太郎飴的に複製できる”管理構成のすすめ
Azure OpenAI ServiceやGPTなどに関するQ&A 「マイクロソフトから“監視していない証明”は出してもらえる?」「プロンプトエンジニアリングは重要視されるスキルとなる?」
2024.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには