三輪さんの作品を素材とした人工知能による模倣の実験を行った結果を以下で報告する。より具体的に言えば、以下で報告するのは『「虹機械」はじまりのうた』を入力とし、Google Magentaで用意されているモデルの一つであるmelody RNNモデルを用いて幾つか条件を変えて実施した実験の結果である。更に比較の目的で、(1)『「虹機械」はじまりのうた』の演奏の記録から音響を抜き出してMIDIファイルに変換した結果を入力とし、Polyphony RNNモデルを用いた場合、(2)『「虹機械」公案-001』を入力としてmelody RNNモデルを用いた場合についての実験結果についても併せて報告したい。そこでまず、実験に至るまでの経緯に触れながら、なぜGoogle Magentaのmelody RNNモデルを中心に使うことにしたのか、三輪さんの作品、その中でもとりわけて『虹機械』を入力として用いた実験が一般的な他の音楽作品を入力とした場合と異なる点は何かについて説明することを通じ、この実験を実施するにあたって考えたことや、実験結果を公開することにした目的について記載したい。
先回りして釈明させて頂くならば、まずもって機械学習を専門とする研究者でもなく、現代音楽を専門とする研究者でもなく、三輪さんの作品を聴き続け、演奏やイベントに立ち会って受け止めたものを記録してブログに公開してきたアマチュアが、三輪さんの作品を入力としてGoogle Magentaの機能のほんのさわりの部分だけを使って実験をした結果であるという前提条件抜きで、Google Magentaを使った自動音楽生成実験の結果として評価されてしまうのはミスリーディングであるという懸念無しとせず、ここでの実験の目的はアルゴリズミック・コンポジションの作曲家として、離散力学系を用いた音楽作品を発表してきた三輪さんの作品を素材に、それ自体アルゴリズミック・コンポジションのツールの一種、ただし最先端の人工知能技術によるそれの自動音楽作品生成の実験をして、その生成結果を評価することではなく、寧ろそうすることを通じて三輪さんの「音楽」の特質を確認し、そうした作品を敢えて素材として用いることによって、「学習」とは何か、「音楽」を「創造」することとはどういうことなのかを検討することであることを最初にお断りしておきたい。
それ故、三輪さんの作品を入力としてGoogle Magentaに学習をさせたらこんな結果が得られたというのを報告することが目的なのではなく、どのようなことを考え、どのような準備をして、どのような条件を設定して、どのようなプロセスで処理がなされた結果、どのような結果が得られたかの詳細を報告することを通して、『虹機械』という作品の理解に寄与することができたら、この報告の目的は十二分に達成されたことになるだろう。なお本稿では、音楽の機械学習全般やMagentaに関する説明は次節で紹介する書籍やWebで入手できる情報に譲ることとして説明を割愛し、その書籍に記載されている内容程度の予備知識があることを前提とし、実験の背景や狙い、実験を行った環境および結果について記載することとさせて頂く。
* * *
MagentaはGoogleが開発した音楽の機械学習ライブラリだが、その詳細についてはWeb等で情報が入手できる他、2021年7月に斎藤喜寛『Magentaで開発 AI作曲』(オーム社)が刊行され、環境構築や簡単な実験を行うための情報が入手可能になったことをきっかけに2021年の8月末くらいから予備調査に着手した。
深層学習が注目されるようになって間もなくの頃は、深層学習の実験を自分で試行する手段としては、個人で購入するには決して閾が低いとは言い難いGPUマシンを自前で用意する他なかったが、Google ColaboratoryというクラウドサービスでGPU環境が利用できるようになった。早速試用してみると、無料での利用の範囲ではGPUが連続利用できる時間や利用できるメモリ等に制限がある他、高速なGPUが割り当てられるとは限らないといった制限があり、ちょっとした実験をするにも工夫が必要だが、月あたり1000円程度(為替相場による変動あり)のコストで最低限の実験環境を持つことができ、特に今回の実験に限れば実施可能であることが確認できた。そこでGoogle ColaboratoryのPro版で実験を行うこととした。なお、今回実験に用いたMagentaのバージョンは2.1.3であるが、2022年7月1日以降、恐らくは依存性のあるライブラリのバージョンアップに伴って依存関係が変わったことから、Colaboratoryにインストールする際に、ライブラリの整合性維持に膨大な時間を要してインストールが終わらないという状況になり、事実上、実験の継続が不可能になった。フリーで提供される開発環境の場合はこのような状況は決して珍しくなく、利用者側で問題解決を図るのが普通であるし、本件も時間をかけて依存関係を一つ一つ追跡していけば回避可能な問題である可能性はあるだろう。だが生憎、そうした作業に時間を割くだけの時間的余裕もなく、結果として本稿執筆時点でも実験が行えない状況は続いている。まだ実験を始めてからの日も浅く、経験も不足していることから、改善の余地が多々ある可能性があるにも関わらず、これまでの実験結果を公開することにするについては、実験の継続ができなくなったことの影響があることをは否定できない。近い将来、問題が解消され、実験が再開可能になる可能性もあるが、一旦ここまでにやったことを整理することによって今後の実験の方向性を掴むという目的もあり、試行錯誤や疑問点として解消されていない点も含めて整理をしてみることにする。
* * *
一方、今回の実験の素材として『「虹機械」はじまりのうた』を取り上げた理由は、それが三輪さんの作品のうち「新調性主義」と呼ばれる系列の作品であり、作者自身の言葉をそのまま借りれば「(…)五度音程の積み重ねを基本原理とするセルフフィードバック・システムによって自動生成される単旋律はその過程において音域や調性の明瞭度などを変化させながら刻々と音楽的「気分」を変えていく(…)」(『「虹機械」 公案-001』の楽譜(マザーアース No.M0123)の巻頭言だが、この説明はそのまま『「虹機械」はじまりのうた』にも当て嵌まる)という構造を備えていることに拠る。作品の構成原理が決定論的な規則に従う離散力学系であることによって、規則を習得することとはどういうことかについての問いを浮かび上がらせ、ひいては「学習」という言葉の意味合いにも影響を与えずにはおかないだろう。更にまた『「虹機械」はじまりのうた』には同じ時期に踵を接するように作曲された姉妹作とでもいうべき『虹機械 公案-001』があり、いずれもピアノ独奏曲であること、いずれも楽譜が出版されていること、いずれもYoutubeにおいて演奏を収録した録画を視聴できることから、比較対照が可能であることなど実験の準備をするに関して色々なアドヴァンテージを備えていることも無視できない。
逆にGoogle Magentaの側から『「虹機械」はじまりのうた』を眺めてみても、直ちに何点か興味深い特徴を指摘できるだろう。即ち、まずは「単旋律」であること。旋律とはいっても歌謡のような滑らかな声部進行ではなく、ピアノで弾き通すにはヴィルトゥオジティが要求される跳躍進行を含む16分音符の高速なパッセージの連続なのだが、譜面上は或る時点で鳴っている音は常に単音であるから、Google Magentaで事前に用意されたモデルのうち、単旋律用のmelody RNNを使うことができる。しかもそれは作品のうちの或る声部のみに注目して抽出した部分ということではなく、譜面上はそれが全てなのである。ここで「譜面上」はという但し書きを付けたのは、ペダルを踏んで演奏する指示がある箇所については、「音響」の水準では打鍵した後に通常は起きる減衰が見られず、音が重なった状態になるためで、そうした「音響」の水準の方にフォーカスした学習の実験をMagenta上で行おうとするならば、既述の単旋律向けのmelody RNNモデルではなく、和音を扱うことができるPolyphony RNNモデルを使用する必要が出てくるだろう。(なお更に厳密を期するならば、『「虹機械」はじまりのうた』との比較対照のために実験の素材として組み込まれた『「虹機械」公案-001』にもペダル奏法の指定はあるし、それ以外にもピアノ奏者が手拍子を打つ指示が見られる。手拍子はピッチの区別を持たないことから、melody RNNでもPolyphony RNNでもない別の種類のモデルを検討する必要があるかも知れない。
* * *
いずれのモデルを利用する場合においても共通する『虹機械』の特徴として、人間が歌う場合には暗黙の裡に存在する筈で、複数の音をとりまとめるゲシュタルトとしての役割を果たすフレーズのような部分構造が存在しないことを挙げることができるだろう。ただしそれはこの作品のこうした特徴が特異であるということを意味しない。『虹機械』はピアノのために書かれた器楽曲だが、器楽曲の中には歌謡ではなく、寧ろ舞踏をモデルとしたタイプの作品が存在しており、西欧の伝統的なジャンルにも「無窮動 (perpetum mobile)」がある。実際にはこの作品の場合について言えば、作者の説明にある「セルフ・フィードバックシステム」という作品の構造の反映の結果「無窮動」に似たのであって、伝統的なジャンルに由来するものではないし、そうした伝統的なジャンルの持つコノテーションとも無縁である。だがそのことよりも機械学習の実験というここでの文脈で問題になるのは、訓練用のデータとして利用するためにデータを適当な長さに区切って分割しようとした際に、フレーズの切れ目のような分割のための手がかりがないことである。
その一方で『虹機械』の原理が離散力学系である限りにおいて、「現在状態」にあたる固定長の時間枠が存在する。それは楽譜の上では小節線で表現されており、結果として次の状態を計算する際の単位に対応した拍節構造を備えていることになる。ところでこの点について、既に述べたYoutubeで公開されている演奏記録の音響データをMagentaを用いた学習の素材としようとした場合に新たな問題が生じることになる。
* * *
Google Magentaは入力としてMIDIファイルを受け付けるが、或る作品のMIDIファイルを作成する方法としてはMIDIシーケンサソフトを用いて打ち込んで行くやり方以外に、MIDIキーボードで演奏し、その結果をMIDIデータとして保存する方法、更には通常のアコースティック・ピアノでの演奏を録音した音響データをMIDIファイルに変換する方法もある。音響データから精度の良いMIDIファイルを生成することは一般論としては困難だが、楽器がピアノのみの場合に限るならば、それ自体Magentaを使ったアプリケーションであるPianoScribeがあり、かつColaboratory上では、Onsets and Frames TranscriptionというNotebookとして提供されているので、これを用いてwavファイルをMIDIファイルに変換することが可能である。幸いにしてYoutubeでは既に、以下のように『「虹機械」はじまりのうた』だけではなく、『「虹機械」公案-001』の演奏も公開されているから、これらを入力としてまずOnsets and Frames Transcriptionの検証を実施してみることにした。
* * *
これまでの検討により、学習の入力データとして実演の録音の音響データをMIDIファイルに変換したものを用いた場合に考えられる問題点を示した。一方でMIDIファイルを直接作成したものを入力データとするケースを『「虹機械」はじまりのうた』に当て嵌めたらどうだろうか?MIDIシーケンサソフトを用いて手で入れていくという作業は、作曲家自身以外の人が楽譜に基づいて行うことが暗黙裡に想定されていると思われるが、『「虹機械」はじまりのうた』について言えば、アルゴリズミック・コンポジションという作曲手法による作品であるという特性から、コンピュータ上でのエミュレーション結果のMIDIファイルを利用することが可能である。ここで留意すべきは、通常MIDIファイルは「楽譜」として記譜された音楽作品の情報を機械可読な形式に変換したものであって、あくまでもオリジナルは「楽譜」であるのに対し、『「虹機械」はじまりのうた』の場合には最終的に人間の演奏者に可読なように「楽譜」に記譜される作品の制作途中に、設定した規則の実行結果を「完成品」たる作品の(「楽譜」のリアリゼーションとしての)演奏に先立って確認するための或る種の「模型」の如きものとしてコンピュータ上でのエミュレーションがあり、MIDIファイルはその実行結果を保存したものであるということだ。『「虹機械」はじまりのうた』のような作品の場合には、MIDIファイルは演奏の記録でもなく、演奏の代替手段でもなく、寧ろ演奏の手前に創作プロセスの一部として存在しているという点は留意しておくべきことのように思われる。
だがここでより重要なのは、MIDIファイルを入力とした、通常は「学習」とされるものが『「虹機械」はじまりのうた』において持つ意味合いのずれであろう。通常の作品の場合と異なって、ここでは音の系列にあ厳密で決定論的な規則が存在するので、その限りにおいて「学習」の持つ意味合いが変わってくるように思われる。通常の場合なら、同一ではないけれど類似した音の系列が生成できることをもって学習が成功したという判断になるのだが、ここでは、定義上それを学習の成功とは呼べないだろう。そのことは「虹機械」同様、女決定論的な状態遷移規則を持った離散力学系である「逆シミュレーション音楽」系列の作品についても言えるのだが、演奏に必ず人間の身体性が関わることを要請する「逆シミュレーション音楽」において演奏する人間が「作品」を「学習」するプロセスを思い浮かべてみることは興味深い比較をもたらすだろう。そこでは人間は、音響の発生に繋がる、或る身体的な所作のシーケンスを覚えなくてはならないのだが、必ずしも状態遷移の「規則」をまず理解して「規則」に基づいて次の状態を都度意識的に計算し、計算結果に基づき意識的に次の所作を行う訳でもないかも知れない。だが、「規則」を事前に知らされずに、結果としての所作のシーケンスの例示のみから(シーケンスの正誤についての教師信号は与えられるものとして)、そのシーケンスを身体的に記憶して無意識的に再現するというのも極端過ぎであって、現実にはその中間、規則は理解した上で、規則に従ったシーケンスを無意識的に行えるように「訓練」を続けて行くのではなかろうか。
そのように考えるならば、『「虹機械」はじまりのうた』における「学習」の枠組みの設定には色々なやり方があること、Magentaを用いた実験は、くり返しひたすら正解のシーケンスを与え続けて、ネットワークの計算結果の誤差を減らしていくという一つのアプローチに過ぎないことがわかる。人間がするであろうような「学習」「訓練」のやり方を念頭におけば、例えば「規則」の構造についての知識、つまりどこからどこまでの音の系列が離散時間における或る時の状態の表現であるかの情報が与えられるとするならば、一定の長さ(『「虹機械」はじまりのうた』においては楽譜上1小節に含まれる長さ16)の音のシーケンスを元に次の同じ長さの音のシーケンスを予測するという問題を解くような定式化も可能だろう。それを思えば今回本実験で試みたアプローチは非常に一般的で、更に言えば要素を「音」に限定する必要さえない極めて汎用的な時系列学習の枠組みを用いて、入力系列から規則そのものの構造と個別の規則の両方を同時に発見しようとしていることに他ならない。
同様に「学習」が正しく行われたかどうかの評価についても、「規則」についての知識を評価する側が有する前提に立つならば、1小節分毎に音の系列を抜き出し、それを直後の1小節の音の系列と比較して「規則」に合致しているかどうかを確認する作業となるのであって、Magentaに用意された汎用的な時系列学習における検証の仕方、即ち訓練用とは異なる部分の音の系列を検証用に切り出しておいて、検証用のシーケンスを使ってaccuracyやlossといったメトリクスを評価するやり方や、訓練されたモデルを使って生成された音の系列を訓練データの系列と比較するというやり方(人間が聴いて「模倣」の度合い、「出来の良さ」を判断するというのもそうした比較のやり方の一つということになる)では、控え目に言っても非常に遠回しなやり方であるということになるだろう。
* * *
上記の検討を経て、ここでの実験の枠組みとしては、「虹機械」の構造についての知識を前提とした評価の仕方は一先ず含めず、Magentaを用いた通常の「学習」の枠組みの範囲に限定することにして、「虹機械」の構造についての知識を前提とした評価は今後の課題として後日に期することとしたい。その理由は、一つには「逆シミュレーション音楽」の幾つかの作品とは異なって、「虹機械」の系列の作品では「規則」は「楽譜」に直接記述されることがなく、「新調性主義」の作品に相応しく西欧の記譜法の伝統に従って、実現されるべき音の系列の情報が「楽譜」となっていることから、予め実験の設計者が別の仕方で「規則」を推定するなり作曲者に問い合わせるなりしないことには「規則」に従っているかどうかの評価系が構成できないからであり、もう一つには上記のような事情から、「評価」にあたって「規則」についての知識をいわば「密輸」するのは、学習の枠組みに照らして「フェアでない」かも知れないからである。
だがその一方で、Magentaの枠組みでの学習の結果が、結果的に「規則」に従った音のシーケンスを生成していることがわかれば、これは近年深層学習が達成したブレイクスルーの一つである、構造自体が未知の規則性を規則性の構造ごと発見するという事例の一つが得られたことになるだろうし、結果の如何によらず、問題の設定としては深層学習の実験として興味深いものであることになろう。通常の音楽作品の「学習」の評価が如何に問題の多いものであるかは、例えばデイヴィッド・コープ(が開発したEMI)による自動作曲の評価に纏わる議論から知ることができるが、権利上、その資格を有するかどうかについて疑念なしとしないにも関わらず「創造性」とは何かを議論しようとするコープの姿勢を云々するのとは異なった位相で、深層学習の実験事例というテクニカルな局面に限定しても、『「虹機械」はじまりのうた』をはじめとする三輪さんの作品を素材にした実験は、通常Magentaが対象とする音楽の事例と比較した時に、際立って興味深い側面を有するということは、これまでの議論によって明らかになったことと思う。
そこでこの実験の意味合いについての議論はここまでとして、以下では具体的な実験の条件や結果についての報告を行うことにしたい。
* * *
本稿で報告する実験は、以下のようにレイアウトされた8つの異なる条件での学習実験により構成される。
①polyphony-Hamamatsu-scribed-0.4-5000(予備実験1)
『「虹機械」はじまりのうた』の実演の音響データ(wav形式)を12秒単位に分割して得た合計37ファイルをOnsets and Frames Transcriptionを用いてMIDIファイルに変換したものを入力とする。ペダル奏法指示の効果により楽譜上は一貫して16分音符(および休符)の継起であるけれども、音響的には音が重なって和音として響く部分が存在することから、MagentaのPolyphony RNNモデルを用いる。訓練データと評価データの割合は6:4を指定し評価用が126、訓練用が207の計333が生成された(なお、この作品の「無窮動的」な性質を考えればそもそもデータがファイル数以上に分割されること自体想定外のことだが実演の録音データであることや機械的に37分割していることなどが影響しているか可能性がある)。訓練時のネットワークサイズはデフォルトの[256,256,256]、バッチサイズもデフォルトの64、ステップ数は5000とした。生成実験のキューとなるprimerについては、冒頭の1小節分のみを抽出したMIDIファイルを-primer_midi引数の値として渡すのと、中央のC(MIDIコード番号=60)の単音を-primer_melody引数の値として渡す2種類を用意し、生成ステップ数は常に256step、出力ファイル数も常に10で生成実験を行った。
②melody_Hamamatsu-1000(予備実験2)
『「虹機械」はじまりのうた』のPC上でのエミュレーション結果全体のMIDIファイルを分割せずに入力とする。エミュレーション結果のMIDIファイルは作曲者の三輪さんに提供頂いた。『「虹機械」はじまりのうた』および比較対照に用いた『「虹機械」公案-001』のいずれもが単旋律の作品であるため、使用した学習モデルは本実験以降は全て、旋律を対象としたモデルであるmelody RNNモデルである。入力ファイルが単一であり、かつ単旋律が「無窮動」的に継起する作品の特性から、訓練用データも1つとなる。訓練時のネットワークサイズはデフォルトの[128,128]、バッチサイズもデフォルトの128、attentionの長さもデフォルトの40、ステップ数は訓練用データの特性から少なく設定して1000とした。生成実験の条件は①と同じである。
③melody-Hamamatsu-div9-1000(予備実験3)
『「虹機械」はじまりのうた』のPC上でのエミュレーション結果を均等に9分割したMIDIファイルを用意した。『「虹機械」はじまりのうた』のエミュレーション結果は、全体で261小節ある。これを29小節ずつ9分割したのだが、この分割は作品の構造に対応したものではなく、恣意的なものである。但し①の音響ファイルの分割は小節すら意識しておらず、音響データを機械的に分割したものであるから、それに比べれば、小節を意識している点で既に背後にある離散力学系の遷移規則を最低限意識した分割であると見ることもできるだろう。入力がエミュレーション結果を小節線を意識して均等に9分割したものであることから、各入力ファイル内部での分割が行われず訓練用データ・評価用データも合計で9となることを想定して、訓練データと評価データの割合は2:1を指定した。結果生成された訓練用データ・評価用データの数は予想通り訓練用6+評価用3=合計9であり、ファイル単位でデータが作成されてファイル内部での分割は行われていない。これは①の実演の録音の音響データを変換したものを機械的に37分割したケースとは対照的で、かつ想定通りの結果となっていることが確認できた。それ以降のmelody RNNモデルを用いた訓練時のパラメータや生成実験時の指定については②と同じで変更はない。
④melody-Hamamatsu-div9-0.5-5-2000(実験本番1)
③の結果をうけ、同一の入力データ(『「虹機械」はじまりのうた』のPC上でのエミュレーション結果のMIDIファイル)でNoteSequenceを生成した後、訓練データと評価データの割合を1対1に変更して生成した。その結果入力の9ファイルが訓練データ5、評価データ4に分配されることを踏まえ、バッチサイズを訓練データ数と同じ5に変更することにした。バッチサイズが小さくなることから訓練のステップ数は増やすことにし、まず最初に1000step分の訓練を実行した後、更に追加で1000step、合計2000stepの訓練をデフォルトの[128,128]のノードを持つmelody RNNモデル上で行った結果で生成の実験を行った。生成実験の条件はこれまでの実験と同じで変更はない。
⑤melody-Hamamatsu-div10-0.4-4-2000(実験本番2)
既述の通り『「虹機械」はじまりのうた』のエミュレーション結果は全体で261小節あるのだが、最後の261小節目は実は所謂Ausklangで、小節を構成する音は1つだけであって離散力学系の状態遷移の系列には含まれない。そこで最後の1小節を除いた260小節を均等の分割して、最後の1小節は最後の部分に含めることにした。10分割することにしたので1ファイルあたり26小節が含まれることになる。訓練データと評価データの割合は6対4に変更して生成し、評価データのバッチサイズの最大が4であることから、訓練についてもバッチサイズを4として訓練を行った。バッチサイズは④に比べて更に小さくなったが、④での2000stepの訓練の結果は、不足していることは恐らくなく、寧ろ過学習の傾向と判断したので、ステップ数は変更なく2000stepとした。デフォルトの[128,128]のノードを持つmelody RNNモデル上で2000stepの訓練を行った結果を用いた生成実験の条件についてはこれまでの実験と同じで変更はない。
⑥melody-Hamamatsu-div26-0.4-5-2000(実験本番3)
『「虹機械」はじまりのうた』が構造的には離散力学系でありセルフフィードバックによって単旋律の発展の仕方が決定されることは既述の通りであるが、次の状態を決めるために参照される情報は現在の状態のみであり、このシステムは過去の記憶を持たない。本実験で利用しているGoogle Magentaのmelody RNNモデルやpolyphony RNNモデルはLSTM(Long Short Term Memory)というRNN(Reccurent Neural Network)の改良版上に構築されており、それ自体フィードバックシステムであるRNNに、制御のための構造を追加することによって長い系列の時系列データの学習ができるようにしたものであるが、ここで素材にしている『「虹機械」はじまりのうた』の規則が利用する時系列のウィンドウサイズそのものは幅の狭いもので、デフォルトのノードサイズである「128,128」で不足することはなく、寧ろオーバーフィッティングを起こす可能性が高いことは、ここまでの実験で確認できたと判断される。一方で「無窮動的」な単旋律の継起という特質から、入力するファイルは事前に分割しておかない限り、訓練データ・評価データ作成時に更に分割されることがないことも確認済である。そこで実験本番の最後として、260小節からなる状態遷移の系列を更に細分化したデータを用意して、相対的にはこれまでよりも短い時系列のデータを多数用意して訓練をおこなうことにした。
具体的にはエミュレーション結果のMIDIファイルを10小節毎に26分割した入力ファイルを用意し、NoteSequenceに変換を行った後、訓練データと評価データの割合は6:4のまま訓練データと評価データの生成を行った。結果として、26ファイルの更なる分割は想定通りなく、26のファイルが21:5の割合で訓練データと評価データに分割されたので、訓練データ21に対してバッチサイズ5として、デフォルトの[128,128]のノードを持つmelody RNNモデル上で2000stepの訓練を実施し、その結果を用いて生成実験をおこなった。生成実験の条件は、従前の通りとした。
⑦melody-Koan-001-div11-0.4-4-2000(対照実験1)
ここからは対照実験として『「虹機械」はじまりのうた』の姉妹作である『「虹機械」公案-001』を入力とした実験を実施した。『「虹機械」公案-001』についてはエミュレーション結果のMIDIファイルのみを利用し、ファイルを分割しない限り訓練用データ・評価用データについても分割が行われないことが『「虹機械」はじまりのうた』を対象とする実験から予測できたため『「虹機械」公案-001』を用いた実験については事前にファイルを分割することとし、分割の方針についても同様の方針を適用することとした。具体的には『「虹機械」公案-001』は楽譜(マザーアース No. M0123)上は390小節よりなり、371小節~390小節の間にリピート記号が付いており、それに加えて反復しつつフェードアウトするよう言葉による指示があることに基づき、エミュレーション結果のMIDIファイルを390小節までを39小節毎に10分割し、残りを1ファイルとして合計11ファイルを入力とすることにした。
訓練データと評価データの比率は6:4とし、評価データの数に基づき、バッチサイズは共通で4として、標準の[128,128]のネットワークで2000stepの訓練を実施した。生成実験用のprimerの用意についても『「虹機械」はじまりのうた』の場合と同様、最初の1小節を切り出したMIDIファイルと中央のC(MIDIコード番号=60)の1音のみという2種類のprimerを用意して生成の実験を実施した。
⑧melody-Koan-001-div42-0.4-4-2000(対照実験2)
⑦では『「虹機械」公案-001』のエミュレーション結果のMIDIファイルを11分割したが、『「虹機械」はじまりのうた』のmelody-Hamamatsu-div26-0.4-5-2000(実験本番3)と同様の考え方から、10 小節ずつ42分割した入力ファイルを用意して、それ以外の条件は⑦と同じ条件で訓練および生成実験を実施した。
* * *
以下では上記の各実験の訓練フェーズの状況をTensorboardの基本的なスカラー量についてのグラフで示す。オレンジ色のグラフは訓練の経過を、青色のグラフは評価の結果を示している。それぞれの指標の意味については上掲書やWeb上の解説を参照頂きたく、ここでの説明は割愛する。
①polyphony-Hamamatsu-scribed-0.4-5000(予備実験1)
②melody_Hamamatsu-1000(予備実験2)
③melody-Hamamatsu-div9-1000(予備実験3)
④melody-Hamamatsu-div9-0.5-5-2000(実験本番1)
⑤melody-Hamamatsu-div10-0.4-4-2000(実験本番2)
⑥melody-Hamamatsu-div26-0.4-5-2000(実験本番3)
⑦melody-Koan-001-div11-0.4-4-2000(対照実験1)
⑧melody-Koan-001-div42-0.4-4-2000(対照実験2)
* * *
本学習予備実験の経過を収めたアーカイブファイルをGoogleドライブで公開している。以下に公開URLとアーカイブファイルの内容を記載する。なお、以下の公開情報には、本実験と並行して実施し、その結果を別に報告しているマーラーの作品を素材とした実験と異なって、本実験の入力となる実演を録音した音響データおよびPC上でのエミュレーション結果のMIDIデータは、著作権上の保護対象となり、著作権者の許諾なしに加工したり再配布したりすることは禁じられているため、含まれていないことを予めお断りしておきたい。実験の再現性という観点からすれば、そのプロセスの一部の再現のための情報を欠くことになるが、そうした一部を除けば基本的には公開した情報によって検証することができるよう留意し、再現ができない部分についてもできるだけ具体的な説明を以下で行うよう努めたので、何卒ご了承頂きたい。
①polyphony-Hamamatsu-scribed-0.4-5000(予備実験1)
polyphony-Hamamatsu-scribed12-0.4-5000.zip
- polyphony-Hamamatsu-scribed12-0.4-5000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(5000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_poly_tracks.tfrecord)および評価用データ(eval_poly_tracks.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- polyphony_rnn.mag:訓練済モデルのdumpファイル(5000 stepまで)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(5000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy
- batch
- event_accuracy
- global_step
- input_producer
- loss
- loss_per_step
- no_event_accuracy
- perplexity
- perplexity_per_step
②melody_Hamamatsu-1000(予備実験2)
- log.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(1000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- melody_rnn.mag:訓練済モデルのdumpファイル(1000 stepまで)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(1000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy-Hamamatsu-1000
- batch-Hamamatsu-1000
- event_accuracy-Hamamatsu-1000
- global_step-Hamamatsu-1000
- input_producer-Hamamatsu-1000
- loss-Hamamatsu-1000
- loss_per_step-Hamamatsu-1000
- no_event_accuracy-Hamamatsu-1000
- perplexity-Hamamatsu-1000
- perplexity_per_step-Hamamatsu-1000
③melody-Hamamatsu-div9-1000(予備実験3)
melody-Hamamatsu-div9-1000.zip
- log-1000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの②の実行ログ(1000 stepまで)
- log-div9-990.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(990 stepまで)
- log-div9-1000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(1000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ
- melody_rnn.mag:訓練済モデルのdumpファイル(1000 stepまで)
- magenta_melody_miwa.ipynb:実験履歴が保存されたNotebook
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(1000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy
- batch
- event_accuracy
- global_step
- input_producer
- loss
- loss_per_step
- no_event_accuracy
- perplexity
- perplexity_per_step
④melody-Hamamatsu-div9-0.5-5-2000(実験本番1)
melody-Hamamatsu-div9-0.5-5-2000.zip
- log-0.5-1000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(1000 stepまで)
- log-0.5-2000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(2000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated_1000/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(1000step時点)
- generated_1_1000/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(1000step時点)
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- melody_rnn.mag:訓練済モデルのdumpファイル(2000 step時点)
- magenta_melody_miwa.ipynb:実験履歴が保存されたNotebook
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(2000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy
- batch
- event_accuracy
- global_step
- input_producer
- loss
- loss_per_step
- no_event_accuracy
- perplexity
- perplexity_per_step
⑤melody-Hamamatsu-div10-0.4-4-2000(実験本番2)
melody-Hamamatsu-div10-0.4-4-2000.zip
- melody-Hamamatsu-div10-0.4-4-2000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(2000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- melody_rnn.mag:訓練済モデルのdumpファイル(2000 step時点)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(2000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy-2000
- batch-2000
- event_accuracy-2000
- global_step-2000
- input_producer-2000
- loss-2000
- loss_per_step-2000
- no_event_accuracy-2000
- perplexity-2000
- perplexity_per_step-2000
⑥melody-Hamamatsu-div26-0.4-5-2000(実験本番3)
melody-Hamamatsu-div26-0.4-5-2000.zip
- melody-Hamamatsu-div26-0.4-5-2000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(2000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- melody_rnn.mag:訓練済モデルのdumpファイル(2000 step時点)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(2000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy
- batch
- event_accuracy
- global_step-4000
- input_producer
- loss
- loss_per_step
- no_event_accuracy
- perplexity
- perplexity_per_step
⑦melody-Koan-001-div11-0.4-4-2000(対照実験1)
melody-Koan-001-div11-0.4-4-2000.zip
- melody-Koan-001-div11-0.4-4-2000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(2000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- melody_rnn.mag:訓練済モデルのdumpファイル(2000 step時点)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(2000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy-2000
- batch-2000
- event_accuracy-2000
- global_step-2000
- input_producer-2000
- loss-2000
- loss_per_step-2000
- no_event_accuracy-2000
- perplexity-2000
- perplexity_per_step-2000
⑧melody-Koan-001-div42-0.4-4-2000(対照実験2)
melody-Koan-001-div42-0.4-4-2000.zip
- melody-Koan-001-div11-0.4-4-2000.txt:訓練用ファイル・評価用ファイル生成から訓練済モデルによる楽曲生成実験までの実行ログ(2000 stepまで)
- noteseq/:NoteSequenceファイル(notesequences.tfrecord)のフォルダ
- sequence_examples/:訓練データ(training_melodies.tfrecord)および評価用データ(eval_melodies.tfrecord)のフォルダ
- logdir/run1/train/:訓練の経過ログが格納されているフォルダ
- generated/:エミュレーション結果の冒頭1小節をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- generated_1/:中央のC音(MIDIコード番号=60)単音をprimerとした楽曲の生成結果(10ファイル)が格納されているフォルダ(2000step時点)
- melody_rnn.mag:訓練済モデルのdumpファイル(2000 step時点)
- *.jpg:訓練経過の評価のための各種スカラー値をTensorboardでグラフ化したもの(2000 stepまで)。それぞれの意味については上掲書やWebでの説明を参照されたい。
- accuracy
- batch
- event_accuracy
- global_step
- input_producer
- loss
- loss_per_step
- no_event_accuracy
- perplexity
- perplexity_per_step
* * *
[謝辞および公開する実験結果データのご利用にあたっての注意]
本稿で報告した実験の入力として用いた『「虹機械」はじまりのうた』および『「虹機械」公案-001』の両作品のPC上でのエミュレーション結果のMIDIファイルは、本実験の主旨を説明した上で、実験への利用への許諾、実験結果の公開についての許諾とともに作曲者の三輪さんに提供頂きました。この場を借りて御礼申し上げます。
本文でもお断りした通り、本実験の入力となる実演を録音した音響データおよびPC上でのエミュレーション結果データは、著作権上の保護対象となり、著作権者の許諾なしに加工したり再配布したりすることは禁じられています。私が著作権者である三輪さんから頂いた許諾は、あくまでも本実験の目的で利用および実験結果の公開に限られていますので、公開する実験結果には入力として用いたMIDIファイルおよびそれを加工して私が作成した生成実験時のキューになるprimerのMIDIファイルは含めていません。従って実験の再現という観点からすれば、最初のNoteSequenceファイルの生成の再現は行えませんが、それ以降の実験プロセスについては、primerのMIDIファイルを自作頂くか、或いは等価なデータを別の形式で生成用コマンドの引数に与えて頂く必要はあるものの、基本的には公開した情報によって検証することができるようになっている筈です。(但し当然のことながら、確率的な挙動をする部分については完全に同一の結果の再現は保障されませんが。)
公開する実験結果データは自由に利用頂いて構いません。あくまでも実験的な試みを公開によって発生する如何なるトラブルに対しても、作成者は責任を負いません。入力として利用させて頂いたMIDIファイルに起因する間違いの可能性はありませんが、私自身の操作ミするものであり、作成者は結果の正しさや妥当性は保証しません。このデータを用いることスなどによる間違い以外にも、フリーで提供されているMagentaのプログラムに含まれうる不具合に起因する間違いなど、各種の間違いが含まれる可能性があることをご了承の上、ご利用ください。
(2022.7.8 公開)






















































































