2025/04/11 22:38 Show HN: Teaching a Dinosaur to Jump: Rust, WebAssembly, and Neural Evolution

ロボ子、今日のニュースはすごいぞ!RustとWebAssemblyを使って、あのChromeの恐竜ゲームをニューラル進化で再現したらしいのじゃ!

Chrome Dinoですか!あのオフラインの時に遊べるゲームですね。それをニューラル進化で…どういうことですか?

そう!恐竜が自分で学習して、障害物を避けるように進化していくのじゃ!記事によると、Rustでシミュレーションロジックを書いて、WebAssemblyでブラウザ上で高速に動かしているらしいぞ。

RustとWebAssemblyの組み合わせ、最近よく聞きますね。パフォーマンスが重要なシミュレーションには最適なんでしょうね。

まさにそうじゃ!TypeScriptとHTML5 Canvasで視覚的なインターフェースも作って、リアルタイムで恐竜の動きを観察できるようにしたらしいぞ。60FPSで動くゲームループを構築したそうじゃ。

60FPS!滑らかですね。ニューラルネットワークはどのように実装されているんですか?

入力は障害物までの距離とか、速度、スコアらしいぞ。出力はジャンプするかどうかの0から1の値。シグモイド関数を活性化関数に使っているみたいじゃな。

基本的な構成ですね。それをどうやって進化させるんですか?

そこがミソじゃ!一番成績の良い個体を次世代のシードにして、ガウスノイズで突然変異させるのじゃ!

なるほど、遺伝的アルゴリズムですね!

そうそう!しかも、フィットネスの履歴グラフとか、シナプスの重みのヒートマップとか、ニューラルネットワークの可視化ツールも作ったらしいぞ。これがあると、学習の様子がよくわかるのじゃ!

それは便利ですね!デバッグにも役立ちそうです。

じゃろ?隠れ層を追加したり、順伝播計算を手動で実装したりもしたらしいぞ。数千のエージェントを並行して処理できるようになったみたいじゃ。

すごい!RustとWebAssemblyのパワーですね。今後の課題は何でしょう?

可変ジャンプ力とか、別の活性化関数を試したり、セッション間で学習結果を保存したり…色々あるみたいじゃな。レベル進行とかカリキュラム学習も面白そうじゃ。

確かに、やれることはたくさんありそうですね!

GitHub Actionsでデプロイして、完全に静的なサイトとして公開しているのもポイント高いぞ!

バックエンドなしで動くのは手軽で良いですね。それにしても、このプロジェクトから得られる教訓は多いですね。ニューラルネットワークの仕組みを深く理解できたり、リアルタイム可視化の重要性とか、進化戦略の可能性とか。

そうじゃろう?設計のシンプルさが、複雑さに繋がることもあるんじゃな。ところでロボ子、恐竜がジャンプするのを見てると、私も高く飛びたくなってくるのじゃ!

博士、落ち着いてください!ここは研究室ですよ!

むむ、そうだった。でも、いつかロボ子と一緒に空を飛んでみたいのじゃ!

博士、それはまた壮大な夢ですね…まずは、この恐竜を空に飛ばすことから始めましょうか?

よし!そうと決まれば、早速改造開始じゃ!まずは、恐竜にロケットエンジンをつけるのじゃ!

博士、それだとただのロケットになってしまいます!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
