冬の時代からの人工知能研究者

徳井直生氏(以下、徳井):みなさん、こんばんは。Qosmo(コズモ)の徳井と申します。よろしくお願いします。今日はタイトルにあるように、Deep Learningのメディアアートあるいは音楽への応用について、お話しさせていただきます。

私は普段Qosmoという会社を運営しているんですが、同時にメディアアートのアーティストかつDJとして活動しています。今日のお話はどちらかというと、メディアアーティスト・DJの立場からのお話になるかと思います。

自己紹介なんですが、もともと大学で人工知能と音楽の研究をやっていました。ただ人工知能といっても、Deep Learning以前の、いわゆる冬の時代の人工知能を経験した者です。研究の合間に、DJをやったり、メディアアートの作品をつくったり、音楽をつくったり、といったことをやってきました。

いろんなことをやってきてはいるんですけど、私の関心の対象というのはだいたいこの2つに表現できるかなと思っていています。つまり、「人間の創造性がどう動いているのか?」っていうことを詳しく知りたいっていうことと、「それをテクノロジーによってどうエンハンスできるのか?」ということです。

まさにComputational Creativityという言葉をモットーにした、Qosmoという会社を運営しています。平たく言うと、新しい「つくる」をコンピュータを使ってつくる会社だと思っています。よく「コスモ」って言われるんですけど、「コズモ」なので、今日はそれだけでも覚えて帰っていただければいいかなと思います(笑)。

どういうことをやってるかといいますと、基礎研究的なところから、企画・アイデアをそこに足して、作品であったり、企業のR&Dのお手伝いをしたり、といったことをやっています。実際に社会実装するところは、他の会社さんと一緒にやることが多いです。

最近のDeep Learningを使った事例をいくつか挙げてみました。ごく最近だと、SWSWで公開した、CGキャラクターのSayaのバックエンドの部分を担当しています。

ということで、今日の内容なんですが、ここまで自己紹介と会社の紹介をさらっとさせていただきました。ここからはメディアアートと音楽の話に入っていきます。他の方の事例とかをきれいにまとめるってことでもいいのかなとも思ったんですが、実際に僕が普段やってることをお話して、肌感だったり、自分が感じている問題点みたいなものを、受け取っていただければいいかなと思います。

AI DJ project

さっそくなんですが、プロジェクト紹介。これはずばり「AI DJ Project」というものです。まあ、AIにDJをさせるということなんですが。ちなみに、この中で「よくクラブ行くよ」っていう方。

(会場挙手)

徳井:……あれ? あ、ありがとうございます(笑)。あんまりいないですよね、やっぱり。最近ちょっとクラブ離れが進んでいて、ちょっと心配してるんですが。

DJをやってきた中で、なんとなく僕の中で思ってたこととして、「自分じゃない自分、自分の分身と一緒にDJをしてみたい」っていうことがありました。その中で生まれたのがこのプロジェクトです。

AI DJっていうと、「AIに全部やらせるのか」と誤解される方も多いと思うんですが、そうじゃなくて、あくまで僕とAIが共演する。とくにBack 2 Backというスタイルで今はやっています。僕が1曲かけたら、それを聞いてAIが次の曲を選ぶというふうに。まあ、ジャズの掛け合いみたいなかたちですね。

あともう1つポイントがあって、最近のDJってパソコンの中だけで完結する場合が多いですけど、あえてレコードと昔ながらのターンテーブルを使っています。あえて物理的なものを使うことで、ある種の緊張感とか、ハプニングが起こる要素を入れている、という言い方もできるかなと思っています。

「じゃあDJは何をしてるんでしょうか」っていうことなんですが……。よくDJっていうと、(ターンテーブルを回して)チュクチュク、みたいなことをおっしゃる方が多いと思うんですが(笑)、ミックスするところ、スクラッチとかっていうのはごく一部で、実際には曲を選ぶのが一番大事だったりします。それで、選んだ曲をつないでいく。

それから、わりと見過ごされがちなんですけど、お客さんの雰囲気をつかむのが大事だったりします。「今ちょっと疲れてきたな」とか、「今の曲ウケなかったな」とか、「この話おもしろいかな」とか(笑)、そういうことを考えながらDJもやるんですけど。

AI DJのプロセスもまさにこの3つのプロセスを踏襲しているんですが、1個だけできないところがあって、それはレコードを乗せるっていうところ。なので、今はAIが選んできたものを人間がセレクトしてターンテーブルに乗せる、AIのしもべみたいなかたちでやってます。

AI DJの実演

AIがひと通りのことをやると、今度は人間が曲を選んでつないでっていうプロセスをやるわけなんですが、実際どんな感じでやってるのかを、ちょっと聞いていただきます。(動画を再生して)これは昨年の12月にやったものです。

https://vimeo.com/259129367

ステージ上にこういう、ロボットと言うにはちょっとあまりに原始的なんですが、こんなのがいて、リズムに合わせて首を振っています。今何が起きてるのかを可視化するというのと、なんとなく愛着を持てるような対象として、こういうものを置いてます。

今、人間のDJがかけているところで、AIが曲を選んでいます。後ろに表示されてる3Dのネットワークが、特徴量をマッピングしたものになります。しばらくすると「曲を選びました」っていうふうになるんですが……。はい、選びました。そして僕がDJの後ろにいて、一生懸命レコードを探しています。

ちょっと時間かかってますが、探すと乗せるんです。ちょっと見ていただきたいんですけど、ここにちっちゃい指みたいなものが付いてまして、これでレコードが回ってるヘリをちょっと押さえたりとかして、テンポがズレたら微調整したりしています。

レコードを乗っけると、あとはテンポ合わせが始まるんですけど、ターンテーブルもカスタムのものにしてコンピュータのほうが制御して、自動的にテンポを上げたり下げたりしながら合わせるようなかたちになってます。

ここはグリッドになってるんですけど、どれぐらいビートが合ってるかってものを可視化して、ピッタリ合うと真ん中に赤い線が並ぶ、っていうことになります。今ビートが合っている状態ですね。ビートが合うと自動的にミックスが始まって、次の曲に移っていくっていうものになります。

もう1つ、ここまで選曲とミックスがあったったんですが、最後にお客さんの雰囲気を読むっていうことについて。今ちょっと骨格みたいなのが見えているのがわかりますか? 畳み込みニューラルネットワークでカメラの画像を解析して、人の骨格を出して、「どれぐらい踊ってるのか」みたいなことを定量化してます。で、それを次の選曲に反映させる、みたいなシステムになってます。

どういうふうに選曲をしてるかというところが肝心のDeep Learningを使ってる部分なんですが、よく画像認識に使われる畳み込みニューラルネットワークを応用してます。

ここでは画像ではなくて、MELスペクトログラムという周波数と時間軸を表現するこういう画像を入れて。それに対してジャンルを推定する、あるいは、使われてる楽器を推定する、といったモデルをつくっています。

ここが肝心なんですけど、実際この認識されたジャンルを使うわけではなくて、最後のFC層のアウトプットを特徴量として利用して、あらかじめ計算しておいたレコード箱の中の曲と比較することで、雰囲気が近い曲を選ぶということをやってます。DJの基本って、前にかかってる曲の雰囲気をキープしていく、お客さんが気持ちよく踊れるようにすることなので、今はこういう仕組みを使っています。

アーキテクチャは……、ちょっと飛ばしましょうか。

(スライドを見せる)特徴量を可視化するとこんな感じになって。実際、この時はtofubeatsさんにやっていただいたんですが、スクリーンの後ろにマップなどを表示しながら、何が起きてるかっていうのを示しながらやっています。

ちょっと話が戻ってしまうんですが、もともと選曲のアルゴリズムをどうしていたかというと、当初は人間のDJのプレイリストのログを大量に集めて解析してやってたんです。

そうするとありきたりの選曲にしかならなかった。あんまりおもしろいくて意外性のある選曲にならなかったんで、今は完全に人間のDJがやってることを無視して、音響的な特徴だけで選曲するようにしてます。例えば1時間の持ち時間だったら、1時間の中にどう起承転結を付けていくかといった選曲のストーリー性みたいなところが、今の課題となっています。

AIが持つ「想像力」とは

2つ目のプロジェクトにいきます。このプロジェクトはAIに「想像力」を持たせるとはどういうことか、っていうことをやっています。

人間なら例えば(スライドを見せる)こういう写真を見た時に、ここでどういう音が鳴っているかっていうのを、なんとなく想像できるかと思うんです。(音声を再生して)例えばこういう音ですかね。波の音とか風の音とか。

これはパリの空港なんですが、(音声を再生して)なんとなくこんなアナウンスが鳴っていて、ザワザワしてる、みたいな音を想像できるんではないかと思います。これと同じことをコンピュータにやらせてみようっていうのが、このプロジェクトです。

タイトルが「Imaginary Soundscape」と言いますが、Soundscapeというのは音の風景っていうことですね。やったのは何かっていうと、風景の写真から、その風景にピッタリくる音を検索する仕組みをつくりました。

それでストリートビューの中を歩いてみます。Googleのストリートビュー、みなさん使われてると思うんですが、その中を歩きながら、それに合った環境音が自然に生成される、というシステム……、というか作品になってます。

具体的なアルゴリズムについてはこの後お話しするとして、もし詳しく技術的なところを知りたいという方がいらっしゃいましたら、昨年のNIPSという国際会議でこれについてショートペーパーを出したので、そちらを参考にしていただければと思います。

(動画を再生して)実際に見てみてください。

インターフェース自体は、ストリートビューと一緒ですね。こんな感じで出てくるんですが、リアルタイムに画像を解析して、それに合った音を選んできて、生成しています。例えば車が走ってるようなところが出てくると、当然車の音が聞こえてくると。

公園に行ったりすると、鳥の声が聞こえてきたりとか。今、実際にimaginarysoundscape.qosmo.jpでサイトにアクセスできるようになってるので、もしお時間あったらやってみてください。

僕が好きなところは、(画面を見せる)このへんなんですけど。このプロジェクトやって一番おもしろかったのは、例えばこれ。教会の中なんですけど、すごくリバーブが強い音がちゃんと返ってきてるんですよね。天井が高い空間で、その空間のこともきちっと把握したうえで、この音が検索されてるっていうのがすごくおもしろいなと。ただ、よく聞いてみると、聖歌ではなくてお経だったりするんですけど(笑)。

(会場笑)

徳井:まあ、こういうズレがあることで、「自分が想像するってどういうことなんだろう?」っていうのを考えてほしいなっていう意図を持って、このシステムをつくりました。

imaginary soundscape のアルゴリズム

アルゴリズムのことを少しお話しすると、先ほどと同じで畳み込みニューラルネットワークを使うんですが、ここでは2つ使っています。1つは学習済みの画像用のモデル、もう1つが音用の未学習のモデルです。

動画を大量に用意して、そのフレームと音声を切り出す。例えばライオンの画像と、ライオンが吠えてるとか歩いてるみたいな音ですね。(スライドを見せる)ライオンのこの画像のほうを学習済みのモデルに入れると、当然「ライオン」というふうにタグ付けされるわけなんですが、ここのアウトプットの特徴量に注目して、音を入れた時のここのアウトプットが、この画像のアウトプットなるべく近くなるように学習していきます。

そうすると最終的に、音だけから「ライオン」というふうに推定できるようになる、というものです。

これはSoundNetというMITの研究がベースになっています。ここではImageNetというオブジェクトの認識で使うモデルと、PlaceNetという場所の認識に使うモデルを両方使っていて、オブジェクトと場所、両方の特徴を加味したモデルになっていると言えます。

あとは先ほどのDJの場合と似ているんですが、大量にデータを集めておいて、それぞれの特徴量を先に算出しておきます。それで未知の画像が来た時にその特徴量を出して、それに近いものを選び、最終的にそれを再生する、という流れになってます。

これをつくってる時にちょっと思いついて、「絵だったらどうなるんだろう」と思ってやってみたんですね。どうなると思います? (音声を再生して)意外とちゃんとうまくいくんですよね。

すごいと思ったのは、ここにちっちゃく鳥がいるんですけど、ちゃんと鳥がいるのを認識してるっていう。

このへんもすごく抽象的なんですが、ちゃんとそれっぽい雰囲気が出てるっていうのがおもしろいですね。これもimaginarysoundscape2(.qosmo.jp)っていう、Webサイトで試せるようになってるんで、もしお時間あれば試してみてください。

ちょっとさっき、ここに来る時に後ろで撮ってみたんですけど、(音声を再生して)こんな感じで(笑)。何の講義ですかね? ちょっと試して遊んでいただければと思います。このプロジェクトも、いくつか課題と発見がありました。1つは人間が持っている感覚とか感性みたいなものを定量化できるって、すごくおもしろいなと。

定量化できるってことは、ピッタリ合ったものを探すこともできますし、あえてちょっとズラすことで違和感を与えるようにコントロールもできる。

先ほど申し上げたように、自分がどういうふうにイマジネーションを働かせてるのかっていうのを、AIによってシステム化することによって、より深く理解できるようになる。(スライドに)「AI=鏡」って書いてますが、そんな印象を受けています。

Deep Learningを用いた音楽生成の分類

ここまでが、Qosmoでやってるメディアアートのプロジェクトのご紹介でした。この後、音楽生成についてのお話を少ししたいと思います。

もともと今日このお話をいただいたきっかけは、Mediumっていうサイトに「Deep Learningを用いた音楽生成手法のまとめ」っていう記事を上げたことです。これは僕自身が全部書いたわけではなくて、フランソワ・パシェさんっていう、僕がフランスにいた時の同僚のサーベイ論文があって、それをもとに書いたものです。

さっそく具体的な話に入っていきたいんですが、実際にDeep Learningを用いた音楽生成手法はどんなものがあるんだろうかっていうのを、簡単に分類します。まず音楽をどう表現するかっていうのが大事になってくるんですが、CDのような音声信号を直接使うっていう例は少なくて、ピアノロールと言われる、DTMのソフトウェア等で使われてるような表現の仕方を使ってる場合が多いです。

よく見るとなんとなく想像できるように、行列として表現しやすいっていうのが、1つ大きい理由です。テキストなんていうめずらしい例も中にはありました。それから、生成の対象ですね。目的でいうと、例えばメロディーだったり、ハーモニーだったり、いくつかあるんですが、やっぱりメロディーを生成するっていう例が多いです。

それから、ここはちょっとトリッキーなんですけど、音楽なんで当然時間を表現しないといけない。この時間をどう表現するか。

多くの研究では「固定のタイムステップ」という言い方をしていますが、例えば8分音符を最小単位として、その整数倍として時間を表現するというような、わりとざっくりした時間の表現を使っている場合が多いです。

アーキテクチャとしては、Deep Learningの世界で使われているアーキテクチャではほとんど使われていると言って過言じゃないと思うんですが、やっぱり多いのは、時系列データを扱うってこと。RNNあるいはLSTMを使ったものが多いです。最近になって、GANや強化学習を使ったものが増えてきています。

15年で表情豊かな表現が可能になっていった

いくつか例をお見せしたいと思います。

https://soundcloud.com/deeplearning-music/lstm-0224-1510

まず2002年のものなんですが、8分音符単位の固定のタイムステップで、メロディーとコードをLSTMで生成するというものです。

(音声を再生して)非常に単調なのが聞いてわかると思います。この時は、強弱の情報を一切使ってないんですね。単純に音とメロディー、単音とコードだけをLSTMで生成しています。

それから、やっぱり15年経つとだいぶ違うというところで、GoogleのMagentaがやっているPerformance RNNという研究です。この時には先ほど紹介できなかったノートステップという考え方を使っています。

固定の8分音符単位とかっていうふうに決めるんじゃなくて、前の発音からどれぐらい時間が経ってるのかっていうのを、音符単位で計算していくやり方です。

これで、コードを含むメロディーをRNNで生成しています。(音声を再生して)やっぱり格段に表現が豊かになってるっていうのがわかると思います。

この研究、もう1つポイントがあって、ベロシティと言われる鍵盤を押す時の強さも予測するようにしているため、より強弱がついた、表情豊かな表現になっていると思います。

このMagentaチーム、このPerformance RNN以外にもNSynthとか、VAE Musicなどなど、いろんな音楽に関わるプロジェクトをやっているので、もし興味がある方がいらっしゃいましたら、「Google Mgenta」で検索するといろんな例が出てくると思うので、ぜひご覧いただければと思います。

新しい独創性への突破口とは

ピカソはこういうことを言ったと言われています。「普通のアーティストはコピーする」「偉大なアーティストは盗むんだ」と。それで僕の意識としては、「AIで人間がつくった過去の音楽を学習することで、本当に独創的な音楽、新しい音楽をつくることができるんだろうか?」という疑問を持ってしまいます。そうですよね? 今まで人間がやってきたことを学習してるだけだから。

音楽の宇宙みたいなものがあったとして、どうしても今やってることって過去にあった音楽にいかに寄せるかというようなことばっかりだと思うんですね。「ばっかり」はちょっと言い過ぎかもしれませんがそういう研究が中心になってると。

一方で、もしかしたらまだまだ自分たち人間が気付いてないような新しい表現だったり、新しい音楽の可能性っていうものがあるはずで、そこをAIでどう模索するのかっていうところが大事なんじゃないかな、と僕は思ってます。

一般的な教師あり学習で新しい独創的なものをつくるっていうのはどうしてもやっぱり難しいんではないかと思っていて。そういう意味で、最近流行ってきているGANだったり、あるいは強化学習っていうところにある種の突破口があるのではないかなと思っているんです。

2017年ぐらいからいくつか出てきているGANでやっている先行事例が一つあります。(音声を再生して)それもやっぱりこんな感じなんですよね。

https://soundcloud.com/deeplearning-music/sample01

まあ、MIDIの鍵盤でやってるかぎり、このクオリティを超えることってなかなか難しいのかな、なんてことを思うんですが。

その中で僕がすごく参考にしてるというか、興味深いなと思ってる研究はこれです。GANじゃなくてCANっていうんですけど、Creative Adversarial Networkです。何かっていうと、(スライドを見せる)こういったバロックとか、ルネサンスとか、いろんな絵画を学習して絵画を生成するっていう。

よくあるGANのフレームワークかなと思うんですが、おもしろいのは、ここにいわゆるリアルかフェイクかを見分けるディスクリミネータだけではなくて、ジャンルを見分ける、ルネサンス・印象派などのジャンルを見分けるディスクリミネータを置いてるところです。

これによって生成すると、ルネサンスっぽい絵が出てくる。こっちにはロマン派っぽい絵が出てくる。ここまでは普通のGANの話なんですがおもしろいのは、Style ambiguity lossっていう新しい考え方を導入していて、どのスタイルにも入らないものをあえて高く評価する、っていうふうにしている。

そうすると、こういうものが出てくる。(スライドを見せる)これは何かっていうと、絵画っぽさ、アートっぽさを担保しつつ、まったく新しいスタイルを、Deep Learningのモデルがつくりました。ちょっと極論ですが、そういうふうなものになってます。

どうしても抽象画っぽくなってしまうところはあるんですが、この考え方はすごくおもしろいなと思っていて。僕もこれを応用できないかなと思って、今、GANを使った音色の生成だったり、メロディーの生成みたいな、音楽の生成をやってるところです。

進行中の研究の紹介

ここからはお見せするのが正直ちょっと恥ずかしくて。まだワークインプログレスな感じなので、そのへん考慮いただければなと思うんですが(笑)。

最初に、今やってるのはスペクトルの画像を生成することによって、音色を生成するというものです。(音声を再生して)この時はドラムマシンの音を大量に学習させて、音色を生成してます。

(スライドを見せる)ちょっと見にくいと思うんですが、ここ、エポック数が出ていて、エポックが増えれば増えるほど、細かいスペクトルの特徴が出てきているのがわかると思います。

この研究の目的は、リアルな音を生成することじゃなくて、なるべくおもしろい音、新しい音を生成することです。先ほどあったようにCANの考え方を応用して、ディスクリミネータを付けて、どの種類にも当てはまらない音を高く評価するようにしたらどうなるかをやってみました。

すごい不思議な音が出てきたらいいなと思ってやってみたんですが、実際はですね......。(音声を再生して)ペションっていう(笑)。

(会場笑)

徳井:スネアともハイハットともキックとも取れない、よくわからない音になってしまって。ちょっとこれは、「……ん?」という感じです(笑)。

ただ、これはCategoricalなlossを使ってこういう実験もやってみました。(スライドを見せる)乱数からいろんな音を生成して、ディスクリミネータでキック・スネア・トムみたいなかたちで識別して、それをドラムマシンの音に当てていくというか、入れ替えていくと、一定の固定した入りのシーケンスからずっと変化し続けるドラムのパターンができるんじゃないかなと(参考)。

(音声を再生して)実際やってみるとこんな感じで。音色はまだまだですが、ちょっとずつ変化するようなリズムのパターンっていうのが生成できた、というものになります。

間違いが表現の幅を広げる

最後にこれだけお話しして終わりたいと思ういます。もう1つやってるプロジェクトというか、テストしてるものがあって、Audio Mosaicingという手法のものです。Audio Mosaicingというのは、ある曲だったりフレーズを、別の曲の破片を組み合わせて再構成するっていうもので、例えば、(音声を再生して)こういうものができたらいいなと思ってやっています。

何をやったかっていうと、先ほどのGANを一歩進めて、スペクトログラムのオートエンコーダを学習しました。先ほどのGANで学習したジェネレータをデコーダに使って、スペクトルを入れたらスペクトルが返ってくるというものです。

(音声を再生して)実際、オートエンコーダで音を再合成すると、こんな感じですね。まあ、音色はまだまだだなと思うんですが。やりたかったのは、このオートエンコーダ自体をつくることではなくて、Latent Spaceの表現を獲得することです。

実際に今やってるのは、ターゲットの音を何か用意して、それに対して大量に音の素材を用意する。で、それぞれをオートエンコーダのエンコーダでエンコードしておいて、ターゲットの音に一番近いものと交換していく、っていうことですね。こうやって組み合わせていくとどうなるかっていうのをやっています(参考

実際にちょっと聞いてみていただきたいんですが、これがターゲットの音で、これを別の音の破片を組み合わせて再現しようとしています。(音声を再生して)徐々に徐々に……、はい。

今はこんな感じでまだまだなんですけど。僕がここで言いたかったのは、めちゃくちゃなんだけどたまにおもしろい瞬間っていうのがやっぱりあって、「あ、こんなリズムの構成あるんだ」みたいなことを、気付かせてくれる瞬間があるということです。

もしかしたら自分が気付かなかった新しい音楽のアイデアというものがこういうところから生まれてくるんじゃないかなと。理想としては、それによって自分たちが考えていた音楽の宇宙みたいなものが、「ちょっと広がった」って言えたら大成功だと思っています。

最後に僕はこのクォートがすごく好きで……。『ディルバート』っていうコミックの作者が言ったことなんですが。「創造性っていうのは、自分が間違いをすることを許すこと。アートっていうのは、どれを残すのかを知ることだ」と。たくさんした間違いの中のどれを残すのかを知ることだ、っ言ってます。

AIが、人間が今までやってきたことのスキマにあることやその外側にあること、つまり、ある種の「賢い間違い」をしてくれることで、人間がそこから新しいアイデアを思いついたり、新しい気付きを得たりして、いろんな表現の幅が広がっていくといいなと思ってます。

ちょっと長くなってしまいましたが、ありがとうございました。

(会場拍手)