AIによる自律論文作成プロセス:AI Scientistのプロンプト解説
sakana.aiが発表した「AI Scientist(AI科学者)」が話題ですね。このAI Scientistは、機械学習の分野で新しいアイデアを生み出し、実験を行い、論文を執筆し、さらには論文を査読する一連のプロセスを自動化します。
今回AI Scientistシステムのプロンプトを紹介していきます。論文作成にも活用できると思いますので是非ご覧ください。AIによる研究プロセスの自動化は、私たち研究者の仕事を大きく変える可能性を秘めています。
個人的な着目点
1.アイデア発案と新規性評価
AIがアイデアを生成し、既存論文との比較により新規性を評価する機能は注目に値します。特に、Semantic Scholar APIを用いた論文検索システムが詳細に指示されている点は興味深いです。私の理解ではSemantic Scholar APIは医学系は弱いと思いますが、Pubmed APIはポンコツなので医学系の論文でこのシステムを構築するのは難しいと思いました。
2.実験の自動化
機械学習系の研究であれば実験計画から実行、結果分析までをAIが担当することができますが、いわゆるWetな基礎系研究やデータを手動で取るような臨床研究はまだ人間が担当しなくてはなりませんね。
3.論文執筆と改善プロセス
AIによる論文執筆、自己査読、改善のサイクルは革新的です。論文作成自体のpromptは比較的シンプルで一発出しで良い文章を得るのは難しいのでは無いかと思いますが、擬似査読を経てブラッシュアップする過程で、論文の質向上に寄与しているのではと思いました(実際AI Scientistによって作成された論文も読めます)。しかし多数のサイクルを回すシステム設計は、API使用料金の増大につながる可能性があります。実際このシステムを回した清水さんも2日間で300ドル近くかかったようです。まあ論文2本が300ドルで一晩で仕上がれば安いといえば安いと思いますが…
4.文献の後付け
論文本文を先に生成し、後から文献を追加する手法は、AIの文章生成能力を活用する工夫として興味深いです。個人的には先に文献を提示してあげた方がハルシネーションが減ってよいとは考えています。
AI Scientistによる論文生成システム
主な機能は以下の通りです:
アイデア生成:
`generate_ideas` 関数は、与えられた機械学習のコードとタスクの説明に基づいて、新しい研究アイデアを生成します。
`check_idea_novelty` 関数は、生成されたアイデアが既存の文献と重複していないか、つまり新規性があるかをSemantic Scholar APIを用いてチェックします。
実験の実行:
`perform_experiments` 関数は、AI Scientistが生成したアイデアに基づいて、コードを変更し、実験を実行します。
実験結果は自動的に記録され、分析されます。
論文の執筆:
`perform_writeup` 関数は、実験結果に基づいて、LaTeX形式で論文を自動的に生成します。
`generate_latex` 関数は、LaTeXコードをコンパイルし、PDFファイルを生成します。
論文の査読:
`perform_review` 関数は、生成された論文を査読し、NeurIPS形式のレビューを生成します。
`perform_improvement` 関数は、レビューに基づいて論文を改善します。
このシステムは、以下の特徴を持ちます:
複数のLLM(大規模言語モデル)に対応しており、OpenAI APIやAnthropic APIなどを利用できます。
並列処理に対応しており、複数のアイデアを同時に評価することができます。
査読と改善のプロセスを自動化することで、研究の効率化を図ります。
では以下にこのシステムで利用されているプロンプトを中心に見ていきましょう。長いので興味のある部分だけかいつまんで見てください。以下に各工程のプロンプトの要点を書いておきます。
各工程のプロンプトの要点
1. アイデア生成:
`idea_first_prompt` (新規アイデア生成時):
既存のコードやタスクの説明に基づき、新規性・実現可能性・影響力のある研究アイデアをJSON形式で生成。
アイデアの動機、実装方法、評価を記述する「思考」セクションを含む。
専門家による評価結果(Score)をフィードバックとして組み込む。
`idea_reflection_prompt` (アイデア改善時):
直前に生成したアイデアの質・新規性・実現可能性を再検討し、改善点を修正。
改善が不要な場合は、前回のJSONを繰り返し、「終了します」と明記。
2. 実験の実行:
`coder_prompt` (実験計画):
与えられたアイデアとベースライン結果に基づき、最大{max_runs}回の実験計画を`python experiment.py --out_dir=run_i`コマンド形式で立案。
`next_prompt` (実験結果に基づく計画修正):
実験結果を提示し、必要であれば実験計画を見直し、`notes.txt`に実験の詳細を記録。
実験が完了したら'ALL_COMPLETED'と返答。
3. 論文の執筆:
アブストラクト:
論文全体の要約、研究の目的・意義・課題・提案手法・結果などを記述。
スムーズで説得力のある文章で、1つの連続した段落として記述。
各セクション (Introduction, Background, Method, Experimental Setup, Results, Conclusion):
各セクションの執筆ガイドラインを提供。
引用の仕方、実験結果の配置、段落の構成方法などについての指示を含む。
Related Work (初期段階):
関連研究セクションの構造を簡潔にスケッチし、含める論文を明確化。
LaTeXのコメント機能を使用して計画を立てる。
論文改善 (refinement & 2回目のrefinement):
文章の質向上と完成度を高めるための具体的な指示。
LaTeX構文エラー、図表の参照、引用の整合性など、よくある問題点の修正を促す。
引用追加 (citation & citation_second_prompt):
論文全体を通して関連論文の引用を追加。
Semantic Scholar API を用いて適切な引用を見つけ、`references.bib` ファイルに追加。
引用追加後の修正:
追加された引用をドラフトに統合し、引用がテキストに適切に組み込まれていることを確認。
4. 論文の査読:
`reviewer_system_prompt_neg` / `reviewer_system_prompt_pos`:
AI Reviewer に対する基本的な査読方針(肯定的 or 否定的)を指示。
`template_instructions`:
NeurIPS 形式のレビューテンプレートに基づき、具体的なレビュー内容と評価項目を指示。
要約、強み、弱み、新規性、品質、明確さ、重要性、質問、制限、倫理的懸念、健全性、プレゼンテーション、貢献度、全体評価、信頼度、決定を評価。
アイデア生成:
`idea_first_prompt` (新規アイデア生成時):
解説:このプロンプトは、AI Scientistに新しい研究アイデアを生成するよう指示しています。タスクの説明、既存のコード、そして以前に生成されたアイデアを考慮に入れながら、実行可能で影響力のある創造的なアイデアを考え出すことを求めています。回答は「思考」部分とJSON形式のアイデア詳細に分かれており、アイデアの動機、実装方法、そして興味深さ、実現可能性、新規性の評価を含めることを要求しています。
2.`idea_reflection_prompt`(アイデア改善時)
解説:このプロンプトは、AI Scientistに直前に生成したアイデアを評価し、必要に応じて改善するよう指示しています。アイデアの質、新規性、実現可能性を再検討し、改善点があれば修正を加えることを求めています。改善の必要がない場合は、前回のJSONをそのまま繰り返し、「終了します」と明記することで、改善プロセスを終了することができます。
3. `generate_next_idea` 内で用いられる `idea_first_prompt` への追加部分
解説:この追加部分は、過去に生成されたアイデアの評価結果を提供しています。ML(機械学習)の専門家によるレビューに基づくスコアシステムを説明し、スコア0が失敗を意味することを明確にしています。これにより、AI Scientistは過去のアイデアの成功や失敗を考慮しながら、新しいアイデアを生成することができます。
総括:
これらのプロンプトは、AI Scientistが段階的に研究アイデアを生成し、改善し、評価結果を踏まえて新たなアイデアを考案するプロセスを導きます。各段階で求められる思考プロセスと出力形式を明確に指定することで、一貫性のある高品質なアイデア生成を促進しています。また、アイデアの実現可能性や新規性、影響力を常に考慮するよう促すことで、実用的かつ革新的な研究方向性を探索することを目指しています。
実験の実行:
この部分で使用されるプロンプトは、 `perform_experiments` 関数内で動的に生成されるため、コード上に直接記述された形では存在しません。
具体的には、以下の2つの変数に格納されたテンプレートをもとに、実行時の状況に合わせてプロンプトが生成されます。
`coder_prompt`: 各実験の実行前に使用されます。
解説:このプロンプトは、AI Scientist に対して、与えられたアイデア(`title` と `idea`) をもとに、最大 {max_runs} 回の実験計画を立て、`python experiment.py --out_dir=run_i` というコマンド形式で実行するように指示します。ベースラインの結果 (`baseline_results`) も提供されます。
2.`next_prompt`: 各実験の実行後に使用されます。
解説:このプロンプトは、AI Scientist に対して、実験結果 (`results`) を提示し、必要であれば実験計画を見直すように指示します。また、将来の論文執筆のために、`notes.txt` に実験の詳細を記録するように指示します。
総括:
これらのプロンプトは、 `perform_experiments` 関数内でループ処理され、AI Scientist は実験結果に基づいて動的に実験計画を修正しながら、最終的に 'ALL_COMPLETED' を返すまで実験を繰り返します。このように、実験の実行部分のプロンプトは実行時の状況に合わせて動的に生成されます。
論文の執筆
論文の執筆:の部分で使用されているプロンプトは以下の通りです。
1. アブストラクト
解説:このプロンプトは、LaTeX文書のタイトルと要約(Abstract)セクションを作成するための指示を提供しています。
筆者注:「SEARCH/REPLACEブロック」とは、このコード内ではAI Scientistがコードを編集する際に推奨される特定のフォーマットを指しています。具体的には、AI Scientistが論文のLaTeXファイル(template.tex)を編集する際に、直接コードを書き換えるのではなく、以下のような形式で編集指示を出すことを推奨しています。
SEARCH/REPLACE
% ここに検索対象のLaTeXコードを記述する
これは、AI Scientistが生成した編集内容を人間がより容易に理解し、必要に応じて修正できるようにするための工夫です。
latexテンプレートは以下のようなものです。
2. 各セクション (Introduction, Background, Method, Experimental Setup, Results, Conclusion)
解説:このプロンプトは、論文や報告書の特定のセクションを書くためのガイドラインを提供しています。引用の仕方、実験結果の配置、段落の構成方法などについての指示が含まれています
`per_section_tips[section]`について
`per_section_tips[section]` は、論文の各セクション (`Introduction`, `Related Work`, `Background`, `Method`, `Experimental Setup`, `Results`, `Conclusion`) に対する執筆のヒントを提供する辞書 `per_section_tips` から、指定されたセクション `section` に対応するヒントを取り出すものです。以下は、`per_section_tips` に定義されている各セクションに対するヒントです。
3. Related Work (初期段階)
解説:このプロンプトは、論文や報告書の関連研究セクションを書くための具体的な指示を提供しています。セクションの構造をスケッチし、含める論文を明確にすることを求めています。また、簡潔さを重視し、最も関連性の高い研究に焦点を当てることを強調しています。さらに、LaTeXのコメント機能を使用して計画を立てることや、引用の追加に関する注意事項も含まれています。
4. 論文改善 (refinement)
解説:このプロンプトは、文章の質を向上させ、完成度を高めるためのものです。具体的なエラーリストを参照することで、よくある問題点を避け、より洗練された内容にすることを目指しています。
5. 論文改善 (2回目のrefinement)
6. 引用追加 (citation)
citation_system_msg
このメッセージは、AIの博士課程の学生の役割を説明し、論文の引用を追加するタスクの詳細を提供しています。
citation_first_prompt
このプロンプトは、AIに現在の草稿を提示し、新しい引用を追加するための指示を与えています。
citation_second_prompt
このプロンプトは、検索結果を提示し、AIに最も適切な引用を選択させ、その選択理由を説明させるものです。
全体として、このシステムは論文の引用を効果的に追加するためのステップバイステップのプロセスを提供しています。AIは論文を分析し、適切な引用を見つけ、それらを論文に統合する役割を果たします。
7. 引用追加後の修正
このコードは、論文のドラフトに新しい引用を追加するためのフォーマットとプロンプトを定義しています。
これらのプロンプトによって、AI Scientist は論文を段階的に作成し、完成度を高めていくことができます。
論文の査読
論文の査読:の部分で使われているプロンプトは以下の3つです。
`reviewer_system_prompt_base`: すべてのレビューに共通する基本的な指示
2.`reviewer_system_prompt_neg` / `reviewer_system_prompt_pos`:
このコードは、先ほどのreviewer_system_prompt_baseに基づいて、2つの異なる査読方針を定義しています。
reviewer_system_prompt_neg:
これは否定的(ネガティブ)な査読方針を定義しています。
基本のプロンプトに加えて、論文が悪いか査読者が確信を持てない場合は、低い評価を与え、論文を拒否するよう指示しています。
この方針は、より厳しい査読プロセスをシミュレートし、品質に疑問がある論文を排除することを目的としています。
reviewer_system_prompt_pos:
これは肯定的(ポジティブ)な査読方針を定義しています。
基本のプロンプトに加えて、論文が良いか査読者が確信を持てない場合は、高い評価を与え、論文を採択するよう指示しています。
この方針は、より寛容な査読プロセスをシミュレートし、潜在的に価値のある論文を受け入れることを目的としています。
これらの異なる方針を使用することで、査読プロセスにおける異なるバイアスや判断基準をシミュレートし、それらが論文の評価にどのような影響を与えるかを検討することができます。
3.`template_instructions`:
これらのプロンプトは `perform_review` 関数内で使用され、生成された論文をAIが査読する際に具体的な指示を与えます。
具体的な動作:
`perform_review` 関数は、まず `reviewer_system_prompt_neg` または `reviewer_system_prompt_pos` を用いて、AIにレビューの基本的な姿勢を指示します。
次に、`neurips_form` と呼ばれるNeurIPS形式のレビューテンプレートと `template_instructions` を組み合わせて、具体的なレビュー内容と評価項目を指示します。
AIはこれらのプロンプトに基づいて論文を評価し、JSON形式でレビュー結果を出力します。
追加情報:
`perform_review` 関数は、Few-shot learning のために過去のレビュー例 (`get_review_fewshot_examples` 関数) をプロンプトに含めることもできます。
複数のAIによるレビュー結果を統合するために、`get_meta_review` 関数が用意されています。
`get_meta_review` 関数
は、複数のAI Reviewerによるレビュー結果を統合し、メタレビューを作成する関数です。
複数のAI Reviewerがそれぞれ独立に論文を査読し、`perform_review` 関数によってJSON形式のレビュー結果を出力します。
`get_meta_review` 関数は、これらのレビュー結果をまとめて入力として受け取ります。
各レビュー結果をフォーマットして結合し、`meta_reviewer_system_prompt` と `neurips_form` を用いて、メタレビューを作成する指示をAIに与えます。
AIはこれらの指示に基づいて、個々のレビューを考慮し、全体的な評価と意見をまとめたメタレビューをJSON形式で出力します。
プロンプト:
`meta_reviewer_system_prompt`: メタレビュー作成の基本的な指示
主な役割:
多様な意見の統合: 複数のAI Reviewerによる異なる視点や意見をまとめ、よりバランスの取れた包括的な評価を可能にします。
合意形成: 個々のレビュー間の矛盾や相違点を調整し、可能な限り合意に基づいたメタレビューを作成します。
最終判断の支援: メタレビューは、論文採択の最終判断を行う際に重要な参考資料となります。
利点:
より客観的で公平な評価が可能になる。
個々のReviewerの偏りを軽減できる。
最終的な判断の精度を高めることができる。
`get_meta_review` 関数は、AIによる論文査読プロセスにおいて、複数の評価を統合し、最終的な判断を支援する重要な役割を果たします。
まとめ
AI Scientistシステムは、研究プロセスを大きく変革する可能性を秘めています。アイデアの発案から論文執筆まで、AIが支援してくれることで、私たち研究者はより創造的な思考に時間を割くことができるかもしれません。
研究の本質的な部分や倫理的判断は依然として人間が担う必要がありますが試みとしてAIが自律してアイデアの発案から論文執筆まで行うというのは革新的と思います。
今後、AI技術はさらに進化し、研究プロセスにおける役割も変化していくと考えられます。私たち研究者は、こうした技術の発展に注目しつつ、それらを効果的に活用する方法を模索し続ける必要があります。AI Scientistシステムのプロンプトを活用した論文作成は、その第一歩となるかもしれません。
こちらではほとんど手動ですが現状では人間がAIに対してコントロールを握っている感じの方が良いと思います
論文を査読するpromptについても記事を書いています。
こちらChatGPTの基本から仕事への応用まで書かれたNote深津さんのChatGPT本。生成AIへの導入としてとてもわかりやすい本だと思います。