MLエンジニアへの道 #73 - 間接符号化

Last Edited: 1/13/2026

このブログ記事では、ニューロエボリューションにおける間接符号化について紹介します。

ML

前回の記事では、NEATを中心に、ニューラルネットワークに進化的アルゴリズムを適用するアプローチについて説明しました。 NEATは、主に歴史的マーキングを伴う直接符号化を用いることで、ネットワークトポロジーの進化を実現しました。 これは、堅牢で最小限の解を見つける上でのニューロエボリューションの可能性を示しただけでなく、 進化的アルゴリズムの効果における遺伝子の符号化手法の重要性も実証しました。

しかし、直接符号化は、生物(四肢、脳など)やニューラルネットワークにも観察される対称性を捉えることに失敗することが多いです。 例えば、NEATの直接符号化は、ニューラルネットワークの順列不変性を完全に扱うことができません。 また、直接符号化における遺伝的変異と交叉は、通常、表現型の小さな変化しかもたらさないため、 集団が局所最小値に陥りやすくなる可能性があります。そこで、この記事では、 主に生物学における発生・発達を模倣する間接符号化のアプローチについて議論します。

細胞化学と文法的符号化

間接符号化への最も直感的な発生学的アプローチは、DNAとそのようなコンパクトな遺伝的表現がどのように異なって転写され、 様々な細胞運命をもたらすかから着想を得ることです。生物学における基礎となる転写のメカニズムは、 転写因子と呼ばれるタンパク質が特定のDNA断片と結合・相互作用し、遺伝子転写(転写因子や細胞構築に必要なその他のタンパク質を含む特定のタンパク質の合成) の活性化と阻害を制御するというものです。これらの因子は、生物の様々な部分にわたって複雑な関係を形成し、 遺伝子制御ネットワーク(GRN)と呼ばれるネットワークによってモデル化されます。

これらの転写因子の活性化と位置は、モルフォゲン(転写因子自体でもあり得るタンパク質の一種)の濃度によって決定されます。 モルフォゲンは最初はランダムに分布していますが、チューリング反応拡散モデルで記述されるように、 反応と拡散を通じて複雑なパターンを形成します。(私はこの分野の専門家では決してなく、上記は細胞化学の私の解釈に過ぎず、 不正確である可能性があります。)そこで、このチューリング反応拡散モデル(拡散のためのニューロンの初期位置とパラメータ)やGRNを抽象化して、 ニューロエボリューションの間接符号化として利用することができます。 実際に、Reisinger, J., & Miikkulainen, R. (2007)による簡略化されたルールベースのGRNを用いたアプローチなどの例が存在します (ただし、再現のための実装の詳細を見つけることはできませんでした)。しかし、間接符号化への細胞化学的アプローチの多くは、 まだ十分に探求されていません。

低レベルな発生のメカニズムの抽象化を用いる細胞化学的アプローチとは対照的に、 文法的符号化は文法的書き換えシステムを利用して発生の高レベル抽象化を行います。 L-システムはそのような文法的書き換えシステムの例で、対称性と規則性を持つ植物様構造を生成することができます。 実際に、わずかな確率性の追加により現実的な木を生成でき、直接符号化よりも優れたより自然なテーブル設計を進化によって導き出せることなどが示されています。 セルラーエンコーディング(CE)は、ニューラルネットワークの進化のために特別に設計され文法的符号化手法のもう一つの例であり、 木構造で文法を符号化し(各中間ノードはニューロンの構造的修正に対応)、遺伝的プログラミングを用いて進化させます。 他の手法も提案されていますが、適切な文法的符号化の発見にはまだ課題が残っています。

学習

前節で議論した2つのアプローチは生物学的システム(特に分子と細胞)の物理的発達に基づいていますが、 環境との相互作用からの学習(構造やパラメータの適応)は生物学的発達の不可欠な部分であり、 間接符号化の一つと言えます。したがって、ニューロエボリューションを勾配降下法のような学習メカニズムと組み合わせることで、 間接符号化を実現することもできます。

Backprop NEAT

学習を進化アルゴリズムに統合する方法は主に2つあります。1つは、ラマルク進化(学習された身体的特徴が遺伝するという反証された理論) とエピジェネティクス(環境が遺伝子活動に影響を与え、さらに子孫にも影響を与える可能性について研究する学問)を反映し、 学習されたパラメータを次世代の繁殖のためにゲノムに符号化し直す方法です。このアプローチはある程度生物学的に妥当でない可能性がありますが、 進化計算、特に画像処理における進化計算で一定の成功を納めています。集団が同じ方向に更新されることによる早期収束の潜在的な課題は、 個体を異なるデータバッチで訓練することや、多様性を維持するための他の技術によって軽減できます。

もう1つのアプローチは、ダーウィン進化におけるボールドウィン効果(学習能力に優れた個体を自然選択が好むという生物学的に妥当な理論) を尊重し、学習された表現型を適応度計算にのみ使用し、繁殖には使用しない方法です。 この生物学的により妥当なダーウィン的アプローチは、BackpropNEATとして実装され、円データセット分類(教師あり課題) において通常のNEATと並んでテストされました。BackpropNEATは、Adamオプティマイザを用いたミニバッチ勾配降下法(バッチサイズ32)を利用し 512の点からなる訓練データでニューラルネットワークを訓練した後、200の点のテストデータセットで適応度を計算しましたが、 重みはゲノムに符号化し直されませんでした。(訓練と適応度計算はすべてベクトル化によって並列化されました。 私の実装をここで公開することはできませんので、練習としてラマルク的アプローチとダーウィン的アプローチの両方を自分で実装してみることを強くお勧めします。)

その結果、通常のNEATが100世代以上かけても約88%のテスト精度しか達成できなかったのに対し、ダーウィン的BackpropNEATは、 パラメータ調整に勾配降下法を利用し、進化的探索をアーキテクチャ最適化に集中させることで、 わずか7世代で98%のテスト精度を達成しました。この結果は既に、ニューロエボリューションと他の学習アルゴリズムとの相乗効果の可能性を実証しています。 また、REINFORCE(詳細はMLエンジニアへの道 #43 - ポリシー勾配法の記事で確認可能)などのポリシー勾配法を使用することで、 制御課題において勾配ベース学習とNEATを組み合わせることもできます。他のアルゴリズムと併せて実装を試してみることを強くお勧めします。

ヘブ学習 vs. 再帰性

学習を通じた間接符号化は、再帰性(推論中に前の状態に応じて活性を適応させる)やヘブ学習などの適応メカニズムでも実現可能です。 ヘブ学習は式Δwij=αijoiojβijwij\Delta w_{ij} = \alpha_{ij}o_io_j - \beta_{ij}w_{ij}に従い、実際の出力を使用せずに重みを局所的に更新します。 ここで、Δwij\Delta w_{ij}はノードiijjを接続する重みの更新、oio_iojo_jは対応する活性化、 αij\alpha_{ij}βij\beta_{ij}は(学習可能または固定の)学習率と減衰率です。これは、 接続の両側が同時に活性化している時にその接続が重要であるという考えに基づいており、生物学的学習により近いものです。

学習可能なアルファとベータを持つヘブ学習と再帰性の両方が実装され、Cart Poleタスクでテストされました。 (通常のNEATの結果は前の記事MLエンジニアへの道 #72 - NEATで確認可能です。 実装はここでは提供できませんので、ご自身で実装することをお勧めします。ヒント:活性化が無限大/NaNになることを防ぐため、 クリッピングの使用を検討すると良いかもしれません。)結果として、ヘブ学習は最も性能が悪く、 画面上に留まることやポールを上に持ち上げることさえできませんでした。再帰接続を持つNEATは、 通常のNEATと比較してほんの少しわずかに悪い解を見つけました。ヘブ学習でのこの性能低下は、 最適化すべきパラメータ数の劇的な増加(実質的にパラメータ数が3倍になる)が原因である可能性があり、 再帰性のわずかに悪い性能は、1より小さいまたは大きい再帰重みによって、 活性化関数によっては活性化の消失や爆発が引き起こされかねないことが原因である可能性があります。 しかしこれらの結果は、これらのアプローチが他のタスクで効果がないことを意味するものではなく、 適応を必要とするより複雑なタスクで有用である可能性もあることに留意が必要です。

結論

この記事では、生物学にインスパイアされたアプローチ:細胞化学アプローチ、文法的アプローチ、 および学習アプローチによる間接符号化について説明しました。間接符号化への多くのアプローチが対称性をより良く活用し、 (BackpropNEATが行ったように)ニューロエボリューションを改善する可能性を示していますが、 その潜在能力を完全に実現するためには、より多くの研究と発見が必要でしょう。 次の記事では、間接符号化への別の潜在的により柔軟で堅牢な、生物学にインスパイアされていないアプローチについて議論します。

リソース