Nao Tokui
11 min readJan 2, 2015

--

NEXT WORLD SYMPHONY — Webサイト上での大規模対話型進化計算によるメロディーの生成

2015年1月. 新年から5回にわたって放送されたNHKスペシャル、「NEXT WORLD 私たちの未来」のWebコンテンツ、NEXT WORLD SYMPHONY人工知能を使ったメロディー生成のアルゴリズムを担当しました. 全体のテクニカルディレクションはライゾマ真鍋大度くん、テーマ曲がサカナクションの曲をAOKI Takamasa君がリミックスした曲、ということで、昔からの友人と参加できたという意味でも感慨深いプロジェクトです。今回はこの企画の技術的な背景、アルゴリズムについて書きます。

サイトから説明文を引用します。

人工知能「SYMPHONY」が、サカナクションによる番組テーマ曲の音源を組み合わせ、無数のリミックスを生成します。ユーザーはその中から気に入ったフレーズを選びます。「SYMPHONY」は、多くのユーザーに選ばれたフレーズを学習し、より複雑なリミックスを生成します。このようにユーザーの参加とともに進化する「SYMPHONY」のリミックスは、Webサイトだけでなく、毎回の放送でも紹介されます。

平たく言うと、テーマ曲として使われているAOKIくんのリミックスにのせるメロディーをWebサイトを訪れた視聴者の参加で生成しようという企画です。

サイト上では、ざっくり人工知能とだけ説明されていますが、具体的には生物の進化の仕組みを応用した最適化計算手法、いわゆる進化計算(Evolutionary Computation)を応用しています。各メロディーが「生物個体」、Webサイトを訪れる人の評価が「環境」となり、環境に「適合」した個体 = 評価が高い個体が「適者生存」で生き残って行きます。「世代交代」の際に「交叉」や「突然変異」が起きることでメロディーが進化していく… というものです。

対話型進化計算

詳細は省略しますが、進化計算のアルゴリズムは、多数生成される解の候補がそれぞれどのくらいもっともらしいかという評価さえできればいいという点に特徴があります。生物の進化同様、なぜそれがうまくいくのか完全に説明できなくてもいいのです。環境に適した生物が生き残り、突然変異などで確率的に遺伝子に変化が起きるならば、世代交代を繰り返すことで「進化」がうまれます。

こうした特徴から進化計算はさまざまな工学的な最適化の問題に応用されてきました。 「工場の中で機械の配置をどうすれば無駄なく作業が進められるか?」、「空力的にもっとも効率の良いプロペラの形状は?」といった、多数のパラメータを調整することで最適に近い設定を求めるような問題とは非常に相性がいいと言えます (進化計算の概論は私の大学時代の恩師、伊庭先生の著書がおすすめ!)。いずれも解の候補を定量的に評価できることが前提に鳴っています。

では音楽やグラフィックのように、アルゴリズムによる評価が難しい対象に対して進化計算の手法を応用するためにはどうしたらよいでしょうか。そこで考えられたのが人間が直接解の候補を評価する方法です。こうした人間が評価に介入する進化計算の仕組みを対話型進化計算(Interactive Evolutionary Computation)と呼びます。実は自分の大学院時代の研究がまさにこの対話型進化計算を使った音楽の生成でした。

2001年に書いた文章から対話型進化計算に関する部分を下記に転記します。

遺伝的アルゴリズム (Genetic Algorithms/GA)に代表される進化論的計算手法 (Evolutionary Computation/EC)は、生物の進化のメカニズムをまねてデータ構造を変形、合成、選択する手法である。

…. 遺伝的アルゴリズム (Genetic Algorithms/GA)に代表される進化論的計算手法 (Evolutionary Computation/EC)は、生物の進化のメカニズムをまねてデータ構造を変形、合成、選択する手法である。
例として、飛行機の設計を考えてみよう。飛行機などのもの作りで大切なのは必ずしも新奇な物を作ることではない。独創的な天才肌の職人は確かに必要だが、多くの場合奇抜なデザインは成功しない。それよりも重要なのは、過去の設計物のマイナーチェンジ、合成、そして取捨選択である。これはまさにライト兄弟らの飛行機の設計に用いられていた原理である。上で述べた過程は、生物の(遺伝子の)突然変異、交差、及び選択淘汰と同じといえる。 つまり、人間は知らず知らずのうちに生物の進化の考えを導入し、最適な人工物の設計に用いていたのである。 このように、進化的な手法は各種のパラメータ最適化問題や設計に広く利用可能な手法といえる。

人工物の設計と進化 (伊庭研究室のHPより)

GAでは、解空間内の解を何らかの方法によってコーディングした文字列の集団を扱う。この文字列は遺伝子型 (GTYPE)と呼ばれ、その名の通り細胞内の染色体に相当する。これに対し、解そのものは表現型 (PTYPE)と呼ばれ、染色体の情報に基づいて発現した個体に対応付けられる。ある世代の遺伝子型の集団はその集団内での掛合せ (交叉、crossover)や突然変異 (mutation)によって、次世代の集団を生み出す。このとき、表現型がいかに環境に適応しているか、すなわち最適解にどれだけ近いかよって、各遺伝子型が子孫を残せる確率が決定される。これは、環境に適合した個体のみがその遺伝子を次世代に残していくという淘汰 (選択とも呼ばれる)の考え方に対応している。従って、表現型に解としての好ましさを示す指標、適合度 (fitness value)を与える関数の存在が必要になる。

遺伝的アルゴリズムの流れ

それでは、コンピュータに似顔絵を描かせると言った問題の場合の適合度関数はどうなるだろう。まず考えられるのは、顔写真から抽出した構造情報とコンピュータが描いた似顔絵とのユークリッド距離を適合度計算に用いる方法であろう。しかし、似顔絵とは、写真そっくりな顔を描くことではない。顔の特徴を捉え、デフォルメして描くことに似顔絵の面白さがある。それでは、コンピュータにその人ならではの顔の特徴を捉えたり、デフォルメされて描かれた似顔絵と写真を同定するといった判断が可能だろうか。現在の技術水準では非常に困難であると言わざるを得ないだろう。しかし、我々の身近にはこのような判断を瞬時に行えるものがある。それは、我々自身の脳である。
このように、コンピュータによる計算が困難な人間の感性や主観などを、ECで扱うために考え出されたのが、対話型進化的計算手法 (Interactive Evolutionary Computation/IEC)である。

端的に言うと、IECはECの適応度関数を人間に置き換えたものである。IECでは、集団内の各個体をあらかじめ定められた適応度関数によって評価するのではなく、ユーザーが各個体を直接評価する。すなわち、各個体は、環境にいかに適合するかではなく、利用する人間 (ユーザー)にとっての「好ましさ」によって評価され、次の世代での生存度が決定される。こうすることで、個人の好みや感覚などのユーザーの主観に基づく評価系をモデル化することなく、ブラックボックスのままでシステム内に取り込むことができる。従来のECが、生命がその誕生から現在に至るまで何十億年もの間、繰り広げてきた生存競争の結果としての進化の歴史に発想を得ているのに対して、IECは人間が行ってきた農作物や家畜の品種改良にヒントを得た方法であると考えることもできる。

端的に言うと、対話型進化計算は進化計算の適応度関数を人間に置き換えたものである。対話型進化計算では、集団内の各個体をあらかじめ定められた適応度関数によって評価するのではなく、ユーザーが各個体を直接評価する

このようなIECの手法をMax上に実装したのがGA4MAXである。GA4MAXを用いることで、対話型遺伝的アルゴリズムに基づく探索がMax/MSP上で可能になる。
Max上で多数のパラメータの最適化を行いたいという場合がある。例えば、音の合成 (FMなど)やフィルタの設定などを考えてみればよい。パラメータの数が少ないときは、自分で少しずつ値を変化させて、その影響をみるといった方法が可能であろう。しかし、パラメータの数が増えれば増えるほど、個々のパラメータの変化が他の要素に与える影響が複雑に絡み合い、欲しい効果を得るのが難しくなる。

そのような場合に、GA4MAXが役に立つものと考えている。複数通りのパラメータ・セットをGAで扱う遺伝子としてコーディングしたのものを集団として持ち、ユーザはそれぞれのセットについて、全体 (フィルタの効果、合成される音など)を聴いて/見て評価を与える。そして、GA4MAXはユーザの与えた評価に基づいて、次の世代の集団を生み出す。このサイクルを繰り返すことで、始めランダムに生成したパラメータのセットがやがて望みのものに近づいていくことが期待できる。
この手法の利点は、各パラメータの意味、全体に与える影響などを全く知らなくても、各個体を評価するだけで最適解に近いパラメータのセットを得ることができる点である。

と、長くなりましたがここまでは対話型進化計算の解説でした。

NEXT WORLD SYMPHONY

ここからは今回の企画の技術的な説明になります。今回の企画を簡略化すると…

  • 最適化の対象 = 短いメロディー (2小節 = 8分音符16個)
  • 評価方法 = webサイトの訪問者による選択

以下、実際に実装チームに送った資料をもとに解説します。

まずメロディーの文字列表現(遺伝子表現)はこのようにしました。各8分音符は和音を構成する音のピッチ(音高)と音色(16の音色をあらかじめ用意しました)、ボリュームから成り立っています. これを16個ならべたものが一つの遺伝子です.

遺伝子表現
遺伝子表現

遺伝子の集団のサイズは 200としました。webサイトの訪問者数 (= メロディーが評価される頻度)と進化のスピードのバランスから決めた数字です。ランダムに生成したメロディーの中らから、ウェブサイトの訪問者には 4つのメロディーを提示します。この四つの中からどれかお気に入り(少なくとも一番ひどくないもの)を一つ選んでもらい、選ばれたものに一票入る (= 適応度が+1される) 仕組みです。評価が一定数たまったところで世代交代のプロセスが走ります。

初期化
webサイトのビジターによる評価
世代交代
交叉と突然変異
世代交代

とまぁ、こんな具合です。

で、結果はどうなったか…? それはNHKのサイトをご覧ください. 最初は完全にランダムだった音のつながりから徐々にメロディーらしきものが生まれていくのが確認できると思います (この「らしさ」と予想不可能性のバランスをどうとるのか、最適なバランスをキープするためのパラメータの調整が、進化計算のアルゴリズム、システムを設計する上でのキモであり、醍醐味だったりします)

プロジェクトの話を聞いたのが12月1日. サイトのローンチが15日と二週間しかない中での実装でした。サーバサイドの実装を担当したマウントポジションさん、2bitくんには頭が下がります… 面白い企画に誘ってくれたダイトくんにも感謝!またこのメンツでなにかやりましょう!

--

--