見出し画像

自分の好きな仮想生物をデザインする。

2022年もあと数日で終わり。来年の干支は「うさぎ」です。そこで今年たくさんお世話になった仮想生物の実験プラットフォームEvolution Gymでうさぎをデザインしてみました。

🐰をイメージして作った仮想生物

そしてこれをEvolution Gymで動かしてみます。するとぽよぽよと可愛く跳ねながら前に進んでくれる仮想生物ができました。

前に動くように学習したうさぎ

Evolution Gymを使うと2次元のセルに独自の仮想生物をデザインすることができ、いろんなカタチの仮想生物で遊ぶことができます。

デザインの仕方は簡単です。セルのマス目に数字を並べてあげるだけです。うさぎのカタチの場合は、次のようになります。5x5=25個のセルに0,1,2,3,4の数字を並べてあげます。

数字でカタチをデザイン

それぞれの数字が仮想生物の構成要素となっているセルタイプを表しています。「1」は剛体セル。変形せず骨のような役割を果たします。「2」はソフトセル。脂肪のような役割果たします。「3」と「4」はアクチュエーターで、それぞれ水平方向と垂直方向に駆動します。筋肉のような役割を果たします。

独自にデザインした仮想生物は、公開しているライブラリ(NSandPPO)を使って動かすことができます。

ライブラリをダウンロードすると、中にrobot_filesというフォルダがあります。新しくデザインした仮想生物をテキスト保存したファイルをフォルダの中に入れるとプログラムから指定できるようになります。

NSandPPOライブラリの構成

たとえば、さきほどのうさぎのデザインをrabbit.txt という名前で保存し、robot_filesフォルダの中にいれます。その後、プログラムでファイル名を指定して(-r オプション)、動きを学習するプログラム run_ppo.py を実行すると、デザインした仮想生物を使って動きが学習される仕組みになっています。

$python run_ppo.py -r rabbit 

さらに、コンピュータにカタチそのものもデザインしてもらうこともできます。タスクを与えると、それを達成しようとタスクに適したカタチと動きをコンピュータが自動的に探索するのです。結果、タスクをこなすのに適したさまざまなカタチの仮想生物がつくりだされます。

たとえば、次の図は「ブロックを運ぶ」というタスクを与えたときの結果をみてみましょう。みっつうち上の二つは人がデザインしたもの、一番下がコンピュータがみつけたものです。

ブロックを運ぶ仮想生物
Bhatia et al., Evolution Gym: A Large-Scale Benchmark for Evolving Soft Robots, In proc. of NeurIPS 2021, pp. 2201--2214, 2021 (Fig.5より引用)

次は、壁をよじ登るタスクの結果です。一番左がコンピュータがみつけたデザインです。

壁を登る仮想生物
Bhatia et al., Evolution Gym: A Large-Scale Benchmark for Evolving Soft Robots, In proc. of NeurIPS 2021, pp. 2201--2214, 2021 (Fig.5より引用)

どちらの結果も人がデザインしたカタチよりも、コンピュータがみつけたカタチの方がより複雑になっているのが特徴的です。仮想生物の動きは強化学習(Proximal Policy Opimization, PPO)を使って学習し、カタチはCPPN-NEATを使って進化させています。

動きを学習するためのアルゴリズムを変えると、みつかるカタチも異なってきます。たとえば、前回のnoteで紹介した新規性アルゴリズムを使ってひたすら新しい動きを追求するようにカタチも進化させていくとおそらく全く別のカタチが生まれてくるはずです。

あるいは、環境を変えながら進化させていくといった発展も考えられます。いろいろな環境の中で、たとえば前に進むというタスクをクリアするような仮想生物のカタチをコンピュータにデザインさせるとどうなるのか。

人ではなかなか思いつかないようなデザインが生まれてくるかも知れません。環境も仮想生物のカタチもその動きもどんどんと複雑化していく。そんな実験が作れたら、子どものころに昆虫の観察を楽しんだように、あるいは、植えた球根からお花が咲かないかみていたのように、実験の結果を毎日チェックするのが楽しみになりそうです。

2023年にチャレンジしてみたい研究テーマです。

今回も最後まで読んでくださりありがとうございました。
どうぞ良いお年を。
Felice Anno Nuovo!


この記事が気に入ったらサポートをしてみませんか?