(論文読み)Sakana AIの新技術「CycleQD」

# はじめに

12月3日に、Sakana AIより以下の記事が投稿されました。

>Sakana AIはLLMエージェントの集団を生み出す新技術「CycleQD」を開発しました。CycleQDは多様性に着目した進化的計算とモデルマージに基づいており、知識やスキルを忘却せず蓄積していく「生涯学習」の実現への第一歩です。

むずかしい。そしておもしろそうです！
いっしょに読み解いていきましょう。

https://sakana.ai/cycleqd-jp/

https://arxiv.org/html/2410.14735v2#S6

https://github.com/SakanaAI/CycleQD


## 用語まとめ

| 用語 | 説明 |
|------|------|
| CycleQD | LLMエージェントの集団を進化させる新技術。交叉にモデルマージ、突然変異にSVDを採用したQuality Diversityベースの進化的アプローチ |
| BC (行動特性) | Behavior Characteristicsの略称。個体の特徴を表す指標 |
| Quality Diversity (QD) | 「最良の解」ではなく、独自の特徴を持つ優れた多様な解の集合を見つけることを目指す進化計算のパラダイム |
| SVD | Singular Value Decomposition（特異値分解）の略称。データを基本的な構成要素に分解する技術 |
| マルチエージェントシステム | 複数のAIエージェントが協力・競争・学習を行うシステム |
| モデルマージ | 複数のAIモデルを組み合わせて新しいモデルを生成する技術 |
| ニッチ | 生態的地位。生物種が持つ独自の能力や特性によって決定される環境との関係性 |
| 交叉 | 進化アルゴリズムにおいて、2つの親から新しい個体を生成する操作 |
| 突然変異 | 進化アルゴリズムにおいて、個体にランダムな変更を加える操作 |
| MBPP | Mostly Basic Python Programmingの略称。プログラミングのベンチマーク |


## 「CycleQD」とは？？

はじめに。論文の序論を読んでみましょう。

```
# 1. 序論
- LLMのエージェントスキル獲得には2つの主要な課題がある
 - データ比率の調整が難しい
   - コードトレーニングは推論生成や思考能力に大きな影響を与える
   - 特定のタスクに偏ることで他のタスクの能力が低下する
 - 従来の目的関数が不適切である
   - 次トークン予測だけでは個別タスクの習得が不十分
   - 報酬の設計とチューニングが複雑

- CycleQDを提案
 - Quality Diversity (QD)フレームワークを活用
 - タスクパフォーメトリクスを品質指標と行動特性として交互に使用
 - モデルマージングによるクロスオーバーを採用
 - SVDベースの変異を導入
 - データ比率調整や目的関数設計の問題を解決
```

ふむふむ。
CycleQDはLLMエージェントの集団を進化させる手法のことなんですね。
その中で、モデルマージを進化的プロセスとして採用しているのですね。

### (補足)
前段として。Sakana AIは自律型エージェントシステム実現を目指されています。モデルマージについては[過去記事](https://qiita.com/ymgc3/items/e2c55066e86f4518c356)参照ください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/d99e1e66-26fa-2079-818b-23fb3718755d.png)

引用：[sakana AI株式会社 GENIAC成果報告会 自社開発モデルプレゼンテーション](https://youtu.be/scPBFjaQjGM?si=-6ZdZ6dmQyMwKkyV&t=836)


## Quality Diversity とは？

Quality Diversity (QD)フレームワークってなんでしょうか？

```
## 基本概念
- 進化計算の一種で、以下の2つの目標を同時に追求
 - 高品質(Quality): タスクにおける高いパフォーマンス
 - 多様性(Diversity): 解の行動特性における多様さ

- 従来の最適化との違い
 - 単一の最適解ではなく、多様な高性能解の集合を目指す
 - 行動特性空間全体をカバーする解を探索

```

ふむふむ。最適解が収束しない課題に対して有効なアプローチなんですね。

## 特異値分解（Singular Value Decomposition, SVD） とは？

特異値分解（Singular Value Decomposition, SVD）ってなんでしょうか？

>SVDベースの突然変異
>モデルにランダムな調整を加える代わりに、「特異値分解（Singular Value Decomposition, SVD）」を使用します。これは、モデルのスキルを基本的な構成要素、いわば「サブスキル」に分解する技術です。例えば、数学を推論能力と計算能力に分解するようなイメージです。この基本要素を調整することで、新しいモデルが親モデルを超えて新たな可能性を探索できるようになります。

```
## SVDベースの突然変異 と 従来の突然変異との比較
- 従来手法
  - ランダムな摂動を加える
  - 事前定義された分布から変化量を抽出
  - 制御が困難で過学習リスクが高い

- SVDベースアプローチ
  - モデルパラメータの本質的構造を維持
  - 意味のある方向への変異を実現
  - 制御可能な探索空間の拡大
```

過学習を回避しつつ、モデルが局所最適解に陥るのを防ぎ全体的な性能向上に寄与するみたいです。



## 「CycleQD」は何がすごい？？

```

- CycleQDの成果
 - 従来のファインチューニングを進化的アプローチで改善
 - 多様なエージェント生成能力
 - クロスドメインでの有効性実証
 - GPT-3.5-turboレベルの性能達成


- 将来性
    - QDは多様で高性能な解を発見する進化的パラダイム
    - モデルマージングは事前学習モデルの能力を低コストで結合
    - マルチエージェントシステムへの応用：エージェント間の協調と競争の可能性
```

モデルチューニングの話は過去の研究からなんとなくわかるのですが、
多様なエージェント生成に効くのはなぜなんだろう？という疑問が湧きました。


## 「CycleQD」の仕組みとは？

CycleQDの仕組みを論文から読み解いてみましょう。

```
# 3. 手法

- CycleQDの3つの革新的特徴
 1. 品質と行動特性の交互切り替え機構
    - タスクメトリクスを品質指標と行動特性の両方に使用
    - 世代ごとに90度回転するように切り替え
    - 各タスクに集中的に最適化可能
    - データ比率調整が不要
    - タスク間の知識共有を促進

 2. モデルマージングによるクロスオーバー
    - 単一タスクのエージェントモデルを初期シードとして使用
    - タスクベクトルをモデルレベルでマージ
    - パラメータ空間でのマージングスキームを採用
    - 負の混合係数を許容し最適化の自由度を確保
    - 正規化により下流層への影響を制御

 3. SVDベースの突然変異
    - モデルのパラメータ行列の主成分に沿った摂動を導入
    - オーバーフィッティングを防止しながら探索空間を拡大
    - ランク1の行列はパススルー
    - 個別コンポーネントの細粒度な制御が可能
    - エージェントモデルの凸領域からの脱出を実現

- モデル集約メカニズム
 - 各アーカイブのエリートモデルを組み合わせて最終モデルを生成
 - タスクパフォーマンスに基づくソフトマックス重み付け
 - タスクベクトルの線形結合による統合
 - ベースモデルを基準とした調整

```

>CycleQDでは、まずK個のスキルそれぞれに特化した専門LLMを用意し、それらをベースに交叉と突然変異を繰り返すことで、品質の高いモデルをコレクションボックスに追加していきます。


ふむふむ。
図にするとこんな感じでしょうか。

```mermaid

sequenceDiagram
    participant Archives as アーカイブ群
    participant TaskRotation as タスクローテーション
    participant ModelMerging as モデルマージング
    participant SVDMutation as SVD変異
    participant Evaluation as 評価システム

    Note over Archives: K個のアーカイブを初期化<br/>（各タスクエージェントを配置）

    loop 世代t=1..N
        TaskRotation->>Archives: i = t mod K で<br/>アクティブアーカイブを選択

        Archives->>ModelMerging: 2つの親モデルを提供<br/>(θp1, θp2)
        
        ModelMerging->>ModelMerging: タスクベクトル計算<br/>τ = θ - θbase
        Note over ModelMerging: クロスオーバー

        ModelMerging->>SVDMutation: マージされたモデルを提供
        
        SVDMutation->>SVDMutation: SVD分解と<br/>コンポーネント変異
        Note over SVDMutation: スケール係数wでの摂動

        SVDMutation->>Evaluation: 変異モデルを評価
        
        Evaluation->>Archives: K個全アーカイブを更新
        Note over Evaluation: 品質指標とBCを評価<br/>グリッドセルの更新

        TaskRotation->>TaskRotation: 次のタスクへローテーション
        Note over TaskRotation: 品質/BC役割の<br/>90度回転
    end

    Note over Archives: モデル集約
```

## CycleQDの特徴

>CycleQDの特徴的な点は、最適化の焦点を周期的に切り替えていく方法です。新しいLLMを生成する際、一つのスキルを品質（Quality）として選び、そのスキルの向上に焦点を当てます。一方、他のスキルは行動特性（BC）として扱われ、多様性の維持に貢献します。教育を例に挙げると、数学→スポーツ→文学→（再び）数学という循環的な順序で、それぞれのスキルを重点的に改善していきます。このアプローチにより、すべてのスキルが順番に「主役」となる機会を得ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/eac74ea8-2a09-0cdf-3998-13ac952749bd.png)

引用：[多様性を重視した集団ベースのモデルマージ](https://sakana.ai/cycleqd-jp/)


実験では、コーディング、DB操作、OS操作の3タスクでCycleQDの性能を検証しています。

>下図の中央の図では、x軸がコーディング（MBPP）の性能、y軸がOS操作の性能を表し、各格子の色の違いはDB操作の性能を示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/804dbc41-e251-f360-09e5-f58c773446ec.png)


>赤い枠で囲まれている箇所は、初期に用意した3つの専門モデルの位置を表しています。ご覧の通り、ボックスは単一のスキルに特化したモデルだけでなく、複数のタスクに対応できる多様なモデルで満たされています。CycleQDが効果的に多様なスキルセットを持つモデル群を生成できることを示しています。


単一タスクに特化したモデルだけでなく、多様なスキルセットを持つモデル群を効果的に生成できることを実証しているんですね。複数のタスクを同時に処理できるモデルの訓練が可能であることを示しています。


# さいごに
Sakana AIの新技術「CycleQD」についてみていきました。

進化型計算は、メタヒューリスティクスに属する最適化アルゴリズムの一種です。 
進化型計算の先行研究や予備知識を把握していると、より深く理解できるのかもしれません。勉強しようと思います。。。


## 論文を読むための用語まとめ

| 用語 | 説明 |
|------|------|
| GA (Genetic Algorithm) | 生物の進化過程を模倣した最適化アルゴリズム |
| 初期収束 | 探索初期に個体群の多様性が失われ、局所解に陥る現象 |
| 島モデル | 複数の部分個体群(島)に分けて独立に進化させる手法 |
| セルラーGA | 格子状空間に個体を配置し、近傍関係に基づいて進化させる手法 |
| MAP-Elites | 性能と多様性を同時に最適化するQDアルゴリズム |
| QD (Quality-Diversity) | 多様かつ高性能な解を探索する進化的手法の枠組み |
| ES (Evolutionary Strategies) | 突然変異と選択に基づく進化的最適化手法 |
| NSGA-II | 代表的な多目的進化型最適化アルゴリズム |
| Lexicase | 複数の目的関数を扱う選択手法 |
| パレート最適解 | 複数目的において、一方を改善すると他方が悪化する解の集合 |
| パレートフロンティア | パレート最適解の集合が形成する境界 |
| BC (Behavior Characteristics) | 多様性維持のために用いる副次的な性能指標 |
| SVD (特異値分解) | 行列を特異値と特異ベクトルに分解する手法 |
| モデルマージング | 複数のモデルを統合して新しいモデルを生成する技術 |
| タスクベクトル | 基盤モデルからの重みパラメータの変化量を表すベクトル |
| エキスパートモデル | 特定タスクに特化して学習されたモデル |
| ReAct | 推論と行動を統合するLLMフレームワーク |
| CMA-ME | 共分散行列適応進化戦略とMAP-Elitesを組み合わせた手法 |
| PGA-MAP-Elites | MAP-Elitesの並列実装手法 |