Googleの検索エンジンのロゴは、バレンタインの日にチョコレート作り機能がついたり、世界初の職業映画監督を記念して4K・360度VRアニメーションを公開したりと、祝日や記念日に特別仕様になります。「Google Doodle」と呼ばれるこの特別なロゴが、協定世界時の2019年3月21日付で作曲家バッハの誕生日を記念してバッハ仕様になりました。機械学習でコンピューターにバッハの賛美歌を学習させており、誰でも主旋律を打ち込むだけでバッハっぽく壮大なメロディを作れるというツールになっています。

Google
https://www.google.com/

バッハ版Google Doodleを使うには、まず上記URLからGoogleにアクセスし、ロゴの右下にある再生ボタンを押します。

しばらく待つとアニメーションがスタート。

イントロで簡単な使い方が説明されます。とはいっても、使い方は真っ白な譜面をマウスでクリックしていくだけ。作ったメロディーはソプラノパートにあたり……

バッハの楽曲を機械学習したコンピューターがメロディーにあわせて自動的にアルト・テノール・バスを追加してくれるというわけ。

ということでイントロが終了し、作曲画面へ。以下のような感じで真っ白な譜面が表示されるので……

ぽちぽちとマウスで譜面をクリックしていきます。シャープやフラットは画面下部から指定可能。

テンポを調整したら「ハーモナイズ」をクリック。

しばらく待つと、自分で作ったとは思えない壮大なメロディが流れ出しました。適当に楽譜を作ってもかなりの完成度になるので、「もうちょっとこうしてみたい……」という意欲がむくむく沸いてきます。

バッハ版Google Doodleがどのようにして作り出されたのか?ということも公開されており、以下からGoogleのAIプロジェクトチームPAIRやMagentaがどのように機械学習やモデリングを行っていったのかを読むことができます。

ヨハン・セバスティアン・バッハを称えて
https://www.google.com/doodles/celebrating-johann-sebastian-bach

Coconet: the ML model behind today’s Bach Doodle
https://magenta.tensorflow.org/coconet

バッハ版Google Doodle制作の舞台裏は以下のムービーでも公開中。

Behind the Doodle: Celebrating Johann Sebastian Bach - YouTube

Google DoodleチームのソフトウェアエンジニアであるJacob Howcroftさん。バッハの音楽は良いメロディーやハーモニーを作り出すためのルールが定まっており、機械学習の学習のためには非常によいリソースだったそうです。

「私は機械学習について説明するとき、『データを集めて、そこからパターンを見つけ出すもの』と語ります」と話すのは同じくGoogle DoodleチームのDoodlerであるLeon Hongさん。

「そしてそのパターンを使って新しい何かを作り出すのです」

バッハ版Google Doodleには、作曲やハーモナイズなど、さまざまな音楽タスクを行えるCoconetモデルが使われました。このCoconetを開発したのはGoogleのMagentaというリサーチプロジェクト。

Google Doodleチームからバッハ版の話を持ちかけられたMagentaのAnna Huangさんは二つ返事で引き受けたとのこと。

バッハ版Google Doodleはオープンソースプロジェクトのため、このようにさまざまなGoogleのスタッフがブレインストーミングしながら生み出したそうです。



Coconetの学習データはバッハのコラール(賛美歌)306曲。バッハのコラールは常にソプラノ・アルト・テノール・バスという4つのパートから構成され、それぞれのパートは独自のメロディラインを持ちながらも、4つが重なり合うことで美しいハーモニーが生まれます。このようなバッハのコラールの「正確さ」は機械学習の学習データに非常に適したものとなっています。

そして、機械学習をウェブブラウザで利用するためにはTensorFlow.jsチームの力を借りる必要もありました。TensorFlow.jsを使ったGoogle Doodleをデバイスで開いたユーザーが重くなってしまった時のために、より高速なウェブ体験を提供するTensor Processing Unitsも準備されました。このような各方面の協力によりバッハ版Google Doodleが生み出されたわけです。