今回は去る8月26日にワテラスコモンホールにて開催された、EA SEED部門所属のプロシージャル アーティスト Anastasia Opara 様及びアルゴリズミック・デザイナー の堀川 淳一郎 様をお招きして開催されたセミナーの内容について紹介します。
この記事は堀川 様 の「Houdiniで人工生命的アプローチによる造形手法の考察」講演についての紹介、第2部になります。
第1部は堀川様がこれまでに行ってこられた、Houdiniを媒体に人工生命の研究で使われているアルゴリズムを用いた3次元デザインについての紹介となりました。
第2部では、Flocking (群知能)や拡散反応系(Gray-Scott model)、遺伝的アルゴリズムなどの三次元造形への活用についての紹介になります。
まず紹介されたのが、スウァーミングシステム、別名マルチエージェントシステムです。これは鳥の群れをなどの個々の意思しか持たない群衆を数式化したもので、群衆の中のエージェントに対してそれぞれ別個に行動ルールを設けることで、群全体がまるで意思を持っているかのように振る舞うシステムです。
ルールの例としては赤いエージェントを基準とした際に、「赤に近づきすぎたら離れる」であったり、「赤に近づく」であったり「ある範囲の中にいれば青と同じ方向に動く」などが挙げられます。これらを組み合わせることによって群衆そのものの動きを制御しようという手法になります。これをHoudiniで再現したものがこちらになります。
ここでは基準となるポイントに対して周りの群衆が近づいてきて、一定を超えると基準のポイントを追従したり、近すぎたら離れたり、というルールに基づいて群衆を構成するポイント一個一個が個別に動いています。
次に紹介されたのがGA(遺伝的アルゴリズム)です。GAは生物の交配と世代交代によって優秀な遺伝子を残していく進化の過程をアルゴリズムに落とし込んだものです。
この図ではランダムにいくつかのエージェントを歩かせて、歩いた距離によってエージェントの優秀さを判定し、優秀な者同士のパラメータを配合してそれらの子供となる第2世代のエージェントを生成します。この第2世代を第1世代と同様に判定、配合というのを繰り返して優秀な歩行エージェントを生成する手法です。また、一定の確率で親の遺伝を一切受けない突然変異体を誕生させることによって歩行の進化を狭い視野で終わらせない(局所解に収束させない)ようにしています。
堀川様はこのアルゴリズムを利用して、モデルのコピーを生成するシミュレーションを作成されました。上の数字が評価値(低いほど近い)となっており、最初は右のコピー元のモデルに対して大きく異なったモデルが作成されていましたが、時間がたつにつれて、だんだんとコピー元に近い形のモデルが生成されるようになっていることが確認できるかと思います。
最後に紹介されたのがニューラルネットワークになります。これはディープラーニングに代表されるような人工知能においても、よく使われる手法です。これは人間の神経細胞を模して作られたもので、画像や音声における共通点を探し出してカテゴライズ化するような処理を得意とするものです。事前にカテゴライズされたデータを学習データとして学習を行うことで、何かに特化したカテゴライズ化を行うネットワークを形成することができます。
堀川様は今回、動的な造形を目指していたので、これを強化学習(RL)に応用することにしました。RLとはエージェントのある行動に対して評価を行い、それを積み重ねていくことでエージェントに行動の学習をさせる人工知能の一分野です。先述したGAが行動の積み重ねによる最終的な結果のみを評価して、数ある中から最適なエージェントを選りすぐるのに対して、RLはエージェントの行動ひとつひとつに対しての評価を逐次与えて、ひとつのエージェントを強化していくものになります。
この例では、目の前に穴があったときに「穴を飛び越えられたらプラスの評価」、「穴に落ちたらマイナスの評価」という評価基準を与えて、その結果をエージェントの脳にインプットします。ここでエージェントは複数の思考パターンを生み出すために、複数の脳を持っていたりするので、そのすべての脳が得た答えを統合してニューラルネットワークにインプットして出力するという構造です。
ニューラルネットワークはHoudini上では作成が困難なため、基本的に外部のソフトウェアにPythonでコードを記述して外部ソフトウェアに送信することになります。そして最後にそこから得られた結果をまたエージェントにフィードバックする、というシステムです。ニューラルネットワークは学習した結果を別のネットワークに流用するのが容易という利点があります。
今回堀川様は、Houdiniを用いて作成した山の地形を最短で登るエージェントの学習をUnityを使って実験されていました。
ここではHoudiniは強化学習におけるデータ生成ツールという位置づけになっています。
また、もうひとつ、堀川様はHoudini上で造形そのものを強化学習で変更する試みも実践されました。これはボロノイを利用した部屋作成ツールで任意の点を基準としてボロノイを作成し、ボロノイによって部屋を区切り、この部屋の大きさがすべて均等になるような部屋の区切り方を学習するというものです。
このあたりの詳細については堀川様が技術書典5において出版された冊子にて記述されているとのことでした。
最後に堀川様は今度の展望について、このプロシージャルという分野は、特にニューラルネットワークについて、さらなる可能性があるということに言及され、マルチエージェントとの連携や堀川様の本職である建築分野に応用できるシミュレーションをしたり、それを物理空間、つまり現実にフィードバックできるような仕組みを作りたいと仰られました。
以上がご講演の内容となります。ご講演は、受講者からもたくさんの質問が寄せられ、大盛況となりました。