Slide 1

Slide 1 text

The AI Scientist 解説ウェビナー 高木志郎 2024/10/24

Slide 2

Slide 2 text

名前:高木志郎 専門:機械学習 twt:@takagi_shiro  研究ができる機械が作りたい

Slide 3

Slide 3 text

[Lu+ 2024]

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

[Lu+ 2024]

Slide 6

Slide 6 text

AI Scientist は 機械学習の研究でオープンエンドなアイデアの生成から、実験の実 施/論文の執筆/さらには査読までを一気通貫で自動実行した 先ほど見せたレベルの質の論文の自動生成まで持っていった という点で新規! 「研究するAI」の共通イメージを作ったこと、 「AI Scientist 作ろう」というメッセージを発信したことが重要!

Slide 7

Slide 7 text

Paper Copilot: A Self-Evolving and Efficient LLM System for Personalized Academic Assistance The emergence of Large Language Models (LLM) as a tool in literature reviews: an LLM automated systematic review Towards Automated Machine Learning Research Can Large Language Models Unlock Novel Scientific Research Ideas? Automating the Practice of Science -- Opportunities, Challenges, and Implications Can LLMs Generate Novel Research Ideas? A Large-Scale Human Study with 100+ NLP Researchers Towards Fully Autonomous Research Powered by LLMs: Case Study on Simulations Automated Design of Agentic Systems CodeRefine: A Pipeline for Enhancing LLM-Generated Code Implementations of Research Papers MLR-Copilot: Autonomous Machine Learning Research based on Large Language Models Agents SciAgents: Automating scientific discovery through multi-agent intelligent graph reasoning ....!!! 2024年8月以降 arXiv に投稿された研究 AI Scientist の登場以降、潮目が変わっている!

Slide 8

Slide 8 text

今回のウェビナーの目的 公開されてるコードを眺めなが ら、実際に行われている処理を 大まかに掴んでもらう The AI Scientist の概要や、論 文で行われている実験や関連研 究との関係を理解してもらう

Slide 9

Slide 9 text

概要

Slide 10

Slide 10 text

ai_scientist を呼んでメインの処理を実行 アイデアの生成 実験の実行 査読の実行 論文の執筆

Slide 11

Slide 11 text

論文生成に必要なファイル&テンプレ 実験テンプレコード 可視化テンプレコード タスク説明 初期(実験)アイデア

Slide 12

Slide 12 text

アイデア生成してその全て に対して新規性チェック →新規なものだけ残す 生成したすべての新規なアイデアに対して 実験ファイルの編集 & 実行 & 論文執筆 & (査読)を実行

Slide 13

Slide 13 text

Idea Generation

Slide 14

Slide 14 text

1. 初期設定: 既存のアイデアがある場合は、それらを読み込む。 そうでない場合、新しいアイデアを生成。 2. アイデアの準備: `seed_ideas.json` から初期アイデアを読み込む。 `experiment.py` からコードを読み込む。 `prompt.json` からプロンプト情報を読み込む。 3. アイデア生成ループ: `max_num_generations` 回繰り返す。 各イテレーションで: a. これまでのアイデアをまとめる。 b. LLMに最初のプロンプトを送信し、新しいアイデアを生成。 c. 生成されたアイデアをJSONとして抽出。 4. アイデアの改善: `num_reflections` 回、アイデアを改善するループを実行。 各リフレクションで: a. LLMに改善のためのプロンプトを送信。 b. 改善されたアイデアをJSONとして抽出。 c. "I am done" が含まれていれば、改善を終了。 5. アイデアの保存: 生成されたすべてのアイデアをJSONファイルに保存。 6. 結果の返却: 生成されたアイデアのリストを返す。 アイデア生成時に実験コードを参照してる num_reflections × max_num_generations 個のアイデア これまでの全てのアイデアを見せて新しいものを出させる

Slide 15

Slide 15 text

{task_description} {コード} これまでに生成されたアイデア: ''' {以前のアイデアの文字列} ''' 提供されたコードを使用して実行可能な、影響力のある創造的な研究実験とその 方向性に関する次のアイデアを考え出してください。 追加のリソースやデータセットにアクセスできないことに注意してください。 どのアイデアも特定のトレーニングデータセットやモデルに過度に適合せず、よ り広い重要性を持つようにしてください。 以下の形式で回答してください: THOUGHT: NEW IDEA JSON: ```json ``` では、まずアイデアに関する直感と動機を簡単に説明 してください。高レベルの計画、必要な設計の選択肢、実験の理想 的な結果について詳しく説明してください。このアイデアが既存の ものとどのように異なるかを正当化してください。 では、以下のフィールドを持つJSON形式で新しいアイデ アを提供してください: - "Name": アイデアの短い説明。小文字、スペースなし、アンダー スコア可。 - "Title": アイデアのタイトル。レポート作成に使用されます。 - "Experiment": 実装の概要。例えば、どの関数を追加または変更 する必要があるか、結果をどのように得るか、など。 - "Interestingness": 1から10までの評価(最低から最高) 。 - "Feasibility": 1から10までの評価(最低から最高) 。 - "Novelty": 1から10までの評価(最低から最高) 。 評価には慎重かつ現実的であってください。 このJSONは自動的に解析されるため、フォーマットが正確である ことを確認してください。 アイデアを改良するために{num_reflections}ラウンドがあります が、すべてを使用する必要はありません。

Slide 16

Slide 16 text

新規性の判定 LLMにアイデアを分析させ、関連する可能性のある論文を探す ための検索クエリを生成させる Semantic で論文を複数本検索し、論文のタイトル、著者、掲 載誌/会議名、出版年、被引用数、アブストラクトを取得 それらの関連研究を入力して、アイデアがこれらの既存研究と 重大な重複がない場合に新規であると判断 新規性が判断できない時は次の検索クエリを生成し、新規性の 判断ができるまで(最大試行回数の下で)これを繰り返す

Slide 17

Slide 17 text

Experiment Iteration

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

1. 初期設定と定数: 最大イテレーション数、最大実行回数、最大エラー出力長などの定数を設定。 Coder に与えるプロンプトのテンプレートを定義。 2. `run_experiment` 関数: 指定されたフォルダで実験を実行。 実験コードをコピーし、指定されたコマンドで実行。 実行結果を解析し、次のプロンプトを生成。 タイムアウトや実行エラーを処理。 3. `run_plotting` 関数: 実験結果のプロットを生成するスクリプトを実行。 プロット生成の成功/失敗を処理。 4. `perform_experiments` 関数: 実験のメインループを制御。 以下のステップを最大5回(MAX_RUNS)繰り返し: a. Coder にプロンプトを送信し、次の実験の指示を得る。 b. `run_experiment` を呼び出して実験を実行。 c. 実験結果に基づいて次のプロンプトを生成。 d. "ALL_COMPLETED" が返された場合、実験を終了。 5. プロット生成: 実験完了後、Coder に `plot.py` の修正を指示。 `run_plotting` を呼び出してプロットを生成。 6. 最終ノート作成: Coder に `notes.txt` の作成を指示し、実験結果とプロットの説明を記述。 コード編集 → コード実行 → コード修正 → ... コード編集 → コード実行. 論文執筆のために実験情報を全て保存 実験 & 可視化

Slide 20

Slide 20 text

Paper Write-Up

Slide 21

Slide 21 text

1. 初期設定: 必要なライブラリとモジュールをインポート。 論文の各セクションに関するヒントや指示を定義。 2. LaTeX生成関数 (`generate_latex`): LaTeXファイルの整合性チェック(参考文献、図の存在確認など)を実行。 LaTeXのコンパイルを実行し、PDFを生成。 3. 引用補助関数: 論文に必要な引用を追加するためのプロンプトと処理を定義。 Semantic Scholar APIを使用して関連論文を検索。 4. メイン関数 (`perform_writeup`): a. 論文の各セクションを順番に生成: タイトルと要約、序論、背景、方法、実験セットアップ、結果、結論 b. 関連研究セクションの概要を作成 c. 引用の追加: 定義された回数(デフォルト20回) 、引用を追加するループを実行 各ループで新しい引用を検索し、適切な場所に挿入 d. 各セクションの改善: 全体の文脈を考慮して各セクションを再度改善 e. 最終的なLaTeX生成: 完成した草稿をLaTeXでコンパイルし、PDFを生成 5. メイン実行部分: コマンドライン引数の解析 必要なファイルの読み込み Coder の設定 `perform_writeup` 関数の実行 人間が作成した論文の書き方を参考 一度大まかな構造を作ってから引用の挿入 繰り返すの改善 Aider の Coder で直接編集

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Review

Slide 24

Slide 24 text

1. 初期設定: 必要なライブラリとモジュールをインポート。 査読者のシステムプロンプトや査読フォームのテンプレートを定義。 2. `perform_review` 関数: a. 査読の準備: フューショット学習用の例を準備(指定された数だけ) 。 査読対象の論文テキストを準備。 b. 査読の実行: 単一の査読か、アンサンブル査読(複数の査読を集約)かを決定。 LLMを使用して査読を生成。 c. 査読の改善(リフレクション): 指定された回数だけ、査読の改善を試みる。 各リフレクションで、前回の査読を基に改善。 d. 結果の返却: 最終的な査読結果を返す(オプションでメッセージ履歴も) 。 3. 補助関数: `load_paper`: PDFから論文テキストを抽出。 `load_review`: 既存の査読をJSONファイルから読み込み。 `get_review_fewshot_examples`: フューショット学習用の例を準備。 `get_meta_review`: アンサンブル査読の結果を集約。 4. アンサンブル査読のプロセス: 複数の独立した査読を生成。 それぞれの査読からJSONデータを抽出。 メタレビューアー(エリアチェア)として、これらの査読を集約。 数値スコアは平均を取り、テキスト部分は統合。 5. 査読の改善プロセス: 各リフレクションで、前回の査読を批判的に検討。 必要に応じて査読を修正し、改善し、改善の必要がなくなれば、プロセスを終了。 ICLR のレビューの結果を例に使用 メタレビュアーを置くことも可能 査読も繰り返し改善

Slide 25

Slide 25 text

Respond in the following format: THOUGHT: REVIEW JSON: ```json ``` In , first briefly discuss your intuitions and reasoning for the evaluation. Detail your high-level arguments, necessary choices and desired outcomes of the review. Do not make generic comments here, but be specific to your current paper. Treat this as the note-taking phase of your review. In , provide the review in JSON format with the following fields in the order: - "Summary": A summary of the paper content and its contributions. - "Strengths": A list of strengths of the paper. - "Weaknesses": A list of weaknesses of the paper. - "Originality": A rating from 1 to 4 (low, medium, high, very high). - "Quality": A rating from 1 to 4 (low, medium, high, very high). - "Clarity": A rating from 1 to 4 (low, medium, high, very high). - "Significance": A rating from 1 to 4 (low, medium, high, very high). - "Questions": A set of clarifying questions to be answered by the paper authors. - "Limitations": A set of limitations and potential negative societal impacts of the work. - "Ethical Concerns": A boolean value indicating whether there are ethical concerns. - "Soundness": A rating from 1 to 4 (poor, fair, good, excellent). - "Presentation": A rating from 1 to 4 (poor, fair, good, excellent). - "Contribution": A rating from 1 to 4 (poor, fair, good, excellent). - "Overall": A rating from 1 to 10 (very strong reject to award quality). - "Confidence": A rating from 1 to 5 (low, medium, high, very high, absolute). - "Decision": A decision that has to be one of the following: Accept, Reject. For the "Decision" field, don't use Weak Accept, Borderline Accept, Borderline Reject, or Strong Reject. Instead, only use Accept or Reject. This JSON will be automatically parsed, so ensure the format is precise. + NeurIPS の査読の指示

Slide 26

Slide 26 text

おわりに

Slide 27

Slide 27 text

機械学習の研究でオープンエンドなアイデアの生成から、実験の実 施/論文の執筆/さらには査読までを一気通貫で自動実行した 高いレベルの質の論文の自動生成まで持っていった 比較的シンプルな実装・プロンプト・研究過程の構造化 繰り返しの改善や多数のアイデアの生成 実験コードを参照したアイデアの生成 テクニカルに難しい部分を Aider などで外部化 人間レベルの論文が生成できるようにするための泥臭い工夫