リインフォースメントラーニングを用いたAIによるコードによる絵画制作の訓練

AI生成アートを編集可能なコードとして

Surya Narreddiと研究チームは、ピクセルを生成するのではなく、コードを書くことで画像を作成する言語モデルを訓練する方法を開発しました。コードを主な成果物として扱うことで、画像の細かい直接編集が可能になります。これは、従来のAI画像生成器ではプロンプトが唯一のインタラクションポイントであるのに対し、大きな違いです。

リインフォースメントラーニングのループ

このシステムは、訓練中に数千回繰り返される4段階の反復ループを用いて、モデルが美的な結果を生成する能力を洗練させます。

  1. 生成: モデルはプロンプト(例: "水彩で桃色のヒブイスカスを描いてください")を受け取り、完全な p5.brush JavaScriptスケッチを生成します。
  2. レンダリング: スケッチはサンドボックス化された Puppeteer 環境で実行され、PNG画像が生成されます。
  3. 判断: 別の判断モデルが、生成されたPNG画像と、手動で評価されたプールからランダムに選ばれた2つの参照絵画を比較し、より優れた水彩画を選択します。
  4. 更新: 判断結果が報酬信号に変換され、Group Relative Policy Optimization (GRPO) を用いてモデルが更新されます。

美的品質のための報酬関数の設計

美的品質は主観的であり、数学の問題のように「正解」または「不正解」として検証できないため、このプロジェクトの主な課題は報酬関数の設計にあります。研究者たちは、報酬関数が慎重にバランスされている必要があることを発見しました。厳しすぎるとモデルが早期に収束し、緩すぎるとモデルが逸脱します。

参照プール

報酬信号を基盤に保つために、チームは581点の参照絵画のプールを構築しました。これらは1,664回の生成から得られ、3つのレベルに分類されています:117点の「愛着レベル」、266点の「まあまあ」、198点の補完用(色の表現のギャップを埋めるために使用)。

人間が作成した p5.brush ライブラリの使用例が限られていたため、参照プールは2つのパイプラインで構成されました:

  • AutoResearch: VLM(視覚言語モデル)の判断基準のもと、Opus 4.6、GPT-5.4、Gemini 3.1 Pro を用いて参照写真に対して反復的に最適化。
  • Batch Run: Gemini 3.1 Pro を用いた大規模な生成実行。

システムプロンプトの進化とAPIの幻覚

このプロジェクトの重要な技術的発見の一つは、システムプロンプトに豊富なAPIドキュメントを含めると、むしろ幻覚を増加させることです。初期バージョンのプロンプトには400行の p5.brush APIリファレンスが含まれており、モデルが存在しないAPIを自信を持って創出していました。

これを解決するために、チームはGEPA(プロンプト最適化ライブラリ)を用いて、味覚を基準とした7ショットの判断モデルに対して200回の反復でプロンプトを進化させました。最適化の結果、8つのブラシメソッドのみを許可する厳格な許可リストを備えた、非常に制限されたプロンプトが得られました。APIドキュメントや例は一切含まれていません。この最小限で明確なアプローチは、幻覚を大幅に削減し、実際の視覚的出力の質を向上させました。

コミュニティの知見の統合

このプロジェクトに関するコミュニティの議論は、生成アートと現代のRL技術の交差点を浮き彫りにしています。一部の参加者は、2018年のブラシストローク学習に関する初期研究(例:GANベースの手法)と類似していると指摘し、このアプローチがSVGやボクセルなどの他のフォーマットにも応用可能である可能性を示唆しています。

コメント欄で提起された技術的な反論として、RLは訓練分布外のスタイルや新規性を生成する際には非効率である可能性があると指摘されています。同様のタスクでは、ベースモデルに対するSupervised Fine-Tuning (SFT) が行動学習の大部分を担うことが多いとされています:

"RLはスタイルや少なくとも分布外の新規性を生成する際、非常に非効率です。"

結論

コードによる画像生成は従来の拡散モデルよりも遅いですが、編集可能な成果物を提供することで、ユーザーを観客から創造的な参加者へと変えることができます。このプロジェクトは、創造的タスクにおけるRLが本質的に設計問題であることを示しています。つまり、人間の好みがモデルの好みに一般化できる構造を構築することです。

Sources

関連

  • プロジェクト
  • プロジェクト
  • Dispatch
  • Dispatch