本記事は、当社オウンドメディア「Doors」に移転しました。
約5秒後に自動的にリダイレクトします。
今回は、第3回でも取り上げたツール拡張をテーマに、新たな論文を4つご紹介します!
目次
- 今回のテーマ
- In-Context Retrieval-Augmented Language Models
- Active Retrieval Augmented Generation
- Solving Challenging Math Word Problems Using GPT-4 Code Interpreter with Code-based Self-Verification
- Prompt2Model: Generating Deployable Models from Natural Language Instructions
- まとめ
こんにちは、アナリティクスコンサルティングユニット所属の羽田です。
前回の記事にもあるように、現在ブレインパッドではLLM関連の論文の調査を行っています(LLM論文レビュー会)。
第5回となる今回は第3回に引き続き、ツール拡張のトピックから、新たに取り上げた4つの論文をご紹介します。
今回のテーマ
In-Context Retrieval-Augmented Language Models
選定理由
LLMの性能は飛躍的に向上している一方で、LLM単体では全ての知識を網羅することができず、往々にしてhallucinationを起こしてデタラメを言う問題があります。
そのような問題の解決方法として外部情報を元に文章を生成するという手法が挙げられます。
外部情報を参照する際には何を外部から取ってくるか(単語,文章チャンク,etc…)、検索結果をどのように用いるか(入力層、中間層、出力層)、どのくらいの頻度で検索を行うか、などを考える必要があります。
今回紹介する論文は文章チャンクをLLMの入力層に前置して文章を生成するIn-Context学習の代表的な論文であると思い、選定しました。
論文概要
- 言語モデルおよびRetrieverの追加学習を必要としないシンプルな手法を提案している
- 様々な言語モデル、Retrieverの組合せに対して数値実験を行っており、ほとんどの場合で密なRetriever(NN系)よりも疎なRetriever(BM25)を用いた方が性能が向上した
- 文章生成時にどのくらいの頻度で外部情報を参照するかを変えて数値実験を行っており、外部情報を参照する頻度が高ければ高いほど性能が向上した
提案手法
従来の研究では外部情報を参照して文章を生成する際に、言語モデルやRetrieverをファインチューニングする手法について焦点が当てられていました。
この論文ではそのような言語モデルやRetrieverに対するファインチューニングの必要がない文章生成のアルゴリズムについて検討しています。
ざっくりとしたイメージとしては下図のように文章生成をする際に予測する前までの文章をもとに外部情報を検索して、検索結果と生成中の文章を結合させて言語モデルに入力するという流れになっています。
ここで
- Retrieverとしてどのようなモデルを用いるか
- どのくらいの頻度で外部情報をRetrieverが取ってくるか (Retrieval Stride)
- Retrieverが検索を行う際に直近何トークンをクエリとして用いるか (Retrieval Query Length)
といったようなパラメータが存在します。
まず一つ目のどのようなRetrieverが良いのかに対してはBM25のような疎なRetrieverの方が他のニューラルネットベースのRetrieverよりも高性能を示すことが報告されています。
今回はRetrieverのファインチューニングをしないという問題設定でしたが、ファインチューニングをした場合はまた結果が変わってくると予想されます。
二つ目のRetrieval Strideに対しては下図のようにRetrieverで外部情報を取ってくる頻度が高ければ高いほど性能は高くなるという結果が得られています。
一方で毎単語予測するのにRetrieverで検索を行ってしまっては文章の生成速度が遅くなってしまうというトレードオフが存在します。
三つ目のRetrieval Query Lengthに対しては下図のような結果が得られています。
実験結果より外部情報を取得する際のクエリが長すぎると、生成したい単語に対して昔の情報がノイズとして働いてしまい、短すぎると生成する際のコンテキストが十分伝わならいという問題があり、短過ぎず長過ぎないちょうど良いクエリの長さが存在することがわかります。
レビュー会FB
Q. 数値実験における評価指標は何を用いているのか
- データセットに応じて単語ごとのPerplexityとトークンごとのPerplexityを用いて評価を行っている
関連論文
タイトル | 概要 |
---|---|
REALM: Retrieval-Augmented Language Model Pre-Training | 文章を生成する際に一回のみ外部情報を参照して生成 |
Active Retrieval Augmented Generation | 次の論文紹介で説明 |
Active Retrieval Augmented Generation
選定理由
本論文もRAGにおけるIn-Context学習の代表的な論文であると思い、選定しました。
さらにこの論文は、先ほど説明した論文の問題点を解決を試みた論文でもあります。
論文概要
- 先ほど紹介した論文のようにnトークンごとに外部情報の検索を行うような受動的なRetrieverではなく、どのタイミングで何の情報を検索するかを能動的に判断するFRARE(Forward-Looking Active REtrieval augmented generation)と呼ばれるRetrieverを提案した
- 提案手法である能動的なRetrieverが従来の受動的なRetrieverよりも概ね高い性能を出していることを数値実験を通して確認している
- 提案手法の中のハイパーパラメータの変化による性能の違いについても考察している
提案手法
本論文では既存のnトークンごとに外部情報を取得するようなRetrieverとは異なり、言語モデルが出力した単語ごとに、その出力が自信がありそうならそのまま出力として採用して、自信がなさそうなら外部情報を検索してもう一度単語を生成するという手続きを踏むFLAREというモデルを提案しています。
モデルの出力の自信の有無を判断する基準として、論文中では以下の2種類の手法を提案しています。
Instruction FLARE
この手法では言語モデルに以下のようなプロンプトをInstructionとして与えます。
すると言語モデルが文章を生成する際に自信がない際には”[Search(query)]”のような検索クエリを出力します。
そのようなクエリが出力された際に初めてRetrieverが外部情報を検索して、取得した文章を結合して文章の生成を続けるというような手続きを踏みます。
Direct FLARE
こちらの手法は言語モデルが予測した次単語のlogitの値を見ることで出力に対する自身の有無を判断します。
予め、適当な閾値を定めておきlogitがその閾値以上ならばその出力を採用し、そうでないならばRetrieverを用いて取得した結果を結合して改めて次単語を出力させるという手続きを踏みます。
実験結果
下図の実験結果よりFLAREが既存モデルに比べて高い性能を出していることがわかります。
レビュー会FB
Q. ここでのRetrieverはどのようなモデルを使用しているのか
- WikiAspについてはBing、それ以外の実験でBM25を使って実験を行っています。
コメント. FRAREはLangChainにも実装されている
関連論文
タイトル | 概要 |
---|---|
Learning to Retrieve In-Context Examples for Large Language Models | Retrieverを学習させる方向性の論文 |
Solving Challenging Math Word Problems Using GPT-4 Code Interpreter with Code-based Self-Verification
選定理由
最近では、GPT4のAdvanced Data Analysis(=旧Code Interpreter)やOSSのOpen Interpreterの登場によってLLMにコードを生成させて、生成させたコードを実行までさせることが可能になっています。
この論文ではGPT4がCode Interpreterを使用することでどの程度性能が向上するかを考察しており、今後Advanced Data AnalysisやOpen Interpreterを使用する上で有用な知見が書かれていると思い、選定いたしました。
論文概要
- MATH datasetにおいて、コード実行環境を与えられた状況(Code Interpreter)ではGPT4単体よりも大幅に性能を向上させることができる
- さらにコードを実行しながら推論するだけでなく、出力した結果を検証するプロンプトを与えることでさらに性能が向上することを確認
提案手法
本論文では以下の4つプロンプトを用いてMATH datasetの問題を解かせて正答率の違いを見ています。
- 「コードの使用せずに答えてください」
- 「コードを一回だけ使って答えてください」
- 「何回でもコードを使用して答えてください」
- 「何回でもコードを使用して答えてください、最後に結果を検証してください」
3番の状況設定は普通に手元のGPT4のAdvanced Data Analysisを使って問題を推論させるような状況に対応しています。
特に4番の状況としては以下のようなものが論文中で例示されています。
この例ではコードを使って予測した解に対して、LLM自身が検証コードを作って先ほど出力した解が誤りだと気づいて最終的に正しい答えを導き出しています。
数値実験の結果を下に示します。
結果よりコードの使用回数が増えるほど正答率が上がることが見て取れます。
さらに言語モデル自身に出力結果を検証させる手続きによっても正答率が大幅に向上していることが分かります。
このようにして不等式の問題や方程式の問題に対しては、誤った回答を正すのに非常に強力な手続きのように思えます。
最近は、似たような検証作業を通して性能を上げる方向性の論文として以下の論文も挙げられます。
Chain-of-Verification Reduces Hallucination in Large Language Models
レビュー会FB
コメント. 最近だと似たような方向性の論文として"GPT Can Solve Mathematical Problems Without a Calculator"が提案されているこちらの論文はRAGを用いないモデルを考えている
関連論文
タイトル | 概要 |
---|---|
Chain-of-Verification Reduces Hallucination in Large Language Models | 文中で紹介 |
GPT Can Solve Mathematical Problems Without a Calculator | 文中で紹介 |
Prompt2Model: Generating Deployable Models from Natural Language Instructions
選定理由
実際に特定のタスクをLLMで解こうと思った際には、モデル, 学習データセット, 評価方法など様々決めなければならないことが存在します。
この論文では自然言語で解きたいタスクを説明すると、自動的に言語モデル学習のためのパイプラインを作成してくれるというモデルを提案しています。
論文概要
- 自然言語で解きたいタスクを入力すると、自動的にパイプラインを作り学習済みのモデルを出力してくるモデル(Prompt2Model)を提案
- Prompt2Modelは指示された特定のタスクにおいてgpt-3.5-turboよりも優れた性能を持つ小さなモデルを出力することに成功
提案手法
Prompt2Modelは以下のように解きたいタスクを与えられた際に、モデルやファインチューニング用のデータセット、さらには必要ならば学習データを生成して最終的に評価指標とともに学習済みモデルを出力してくれます。
Prompt2Model細かいアーキテクチャは以下のようになっております。
ModelやデータセットはHugging上の説明文を参考にして取得してきます。
ちなみにこの論文の著者の方が今月末に行われる国内機械学習分野のワークショップであるIBIS2023の招待講演にてPrompt2Modelを話されるようです。
関連論文
タイトル | 概要 |
---|---|
A Survey on Large Language Model based Autonomous Agents | AgentベースLLMのサーベイ論文 |
MetaGPT: Meta Programming for Multi-Agent Collaborative Framework | 複数のエージェントをコラボレーションさせることで、より複雑な問題な対処させる研究 (詳しくは第3回の記事をご覧ください) |
まとめ
今回はRAGやAgentなどLLMのツール拡張に関する技術論文を4つ紹介させていただきました。
今後も、社内で実施しているレビュー会での発表内容をブログで発信させていただくつもりですので、ご期待ください。