1.はじめに
三輪さんの作品の系列の一つである「虹機械」については、これまで機械学習による模倣の実験の題材として取り上げ、その結果を報告してきました。最初はGoogle MagentaのmelodyRNNでの実験結果を報告し、次いで『「虹機械」はじまりのうた』および『「虹機械」公案-001』を素材にしてPythonのライブラリPyTorchのLSTMモデルを用いた模倣の実験を行い、模倣ができることを確認できたので、記事「続・「虹機械」学習実験ノート」および記事「続・「虹機械」学習実験ノート補遺:生成系列長を長くした場合について」にて、その結果を報告しました。機械学習の実験については一定の成果が得られたことから、本稿では、時系列データの非線形解析の手法の一つとして知られているGrassberger-Procaccia法(GP法)を用いて『「虹機械」はじまりのうた』および『「虹機械」公案-001』について相関積分を計算した結果を報告します、
GP法はカオス力学系の時系列解析の手法として良く知られており、多くの書籍やWebページで紹介されています。本稿で報告する実験にあたっても、合原一幸編『カオス時系列解析の基礎と応用』(産業図書)のような書籍や北海道大学の井上純一先生の「2011年度 カオス・フラクタル 講義ノート」(その第9回の後半が相関積分・相関次元の解説でC言語によるサンプルコードもついています)等のWebの情報を参考にしてプログラムを自作してColaboratoryのノート上で計算機実験を行いました。そこでGP法自体の説明はそれらに譲ることとし、ここでは実験内容の報告のみに限定させて頂き、ごく簡単な説明に留めさせて頂きます。
GP法は非線形解析法のうち、「埋め込み定理」を用いて高次元空間にアトラクタを構成し、相関積分という統計量から相関次元を求めることによって、カオス力学系の特性の一つである自己相似性の有無を把握するための手法です。相関積分の結果に基づき、相関積分曲線の直線部分(つまり傾きのグラフがプラトーとなる区間)について埋め込み次元毎に相関指数を求め、相関指数が次元が高くなるにつれて飽和が起きている時に相関次元が求まります。
しかしながらどんな系であっても相関次元が計算できるわけではなく、例えばランダムな系では相関指数の飽和が起らないことが知られています。また数学的カオスモデルのノイズのない時系列データの相関積分曲線は直線となるため、任意の位置で相関指数の計算が可能ですが、実データの場合には明確な直線部分が確認できないことがあるため、Scaling Regionと呼ぶ範囲を設定して相関指数を計算することになりますが、明確なScaling Regionが確認できない場合もあります。
結論から言えば、対象となった『「虹機械」はじまりのうた』および『「虹機械」公案-001』の2曲いずれについても、明確なScaling Regionが確認できない場合がほとんどであり、また相関積分曲線や傾きのグラフから確認出来る限り、埋め込み次元が高くなった時に一定の傾きに収束する傾向はあるものの、明確な収束は確認できず、妥当性を持った相関指数の計算は困難なようです。
その一方で、相関積分曲線や傾きの曲線をプロットした結果から、相関指数の計算ができないとはいえ、ランダムな場合と比べた時、その相関積分曲線や傾きの曲線は明らかに異なる特徴を持っており、そこから読み取れることがあるように思います。
相関積分の計算を「虹機械」を対象に行うことについて言えば、離散力学系に基づくアルゴリズミック・コンポジションを方法論とする三輪さんの作品は一般の音楽作品に比べれば、この種の分析との相性は相対的に良さそうに思われたこと、特に「虹機械」は状態遷移オートマトンの出力が単旋律そのものであるため、そのまま時系列データと見做すことが可能であり、対象として恰好のもののように感じられました。その限りでは些か意外な結果となりましたが、その一方で、相関次元というのが極限で定義されていることからうかがえるように、本来このような分析は、実数値をもつ変数の時系列データが膨大になければならないことを考えれば、作品として固定された有限の長さを持つ音の系列を対象とした場合には、そもそもが目安程度の意味合いしか持ちえないことに留意する必要があると思われます。(但し後述のように、今回対象とした『「虹機械」はじまりのうた』および『「虹機械」公案-001』の旋律を時系列データとしてみた場合、その系列長はそれぞれ4000、5500程度となり、相関積分を行うデータとしては十分なレベルと考えられることから、そもそも適用対象として不適切であったり、結果の精度が全く期待できないということはないと考えます。また、意味のある結果が得られていないのは、単に実験条件が不適切なためである可能性もあるでしょう。)
そこで上記の制限を踏まえたうえで、実験条件とその結果を報告するとともに、得られた結果から読み取れると考える点についてコメントを付することによって、問題提起とさせて頂くことにした次第です。
2.実験の条件
対象とする時系列データ:『「虹機械」はじまりのうた』および『「虹機械」公案-001』の旋律の音高データを対象とします。ただし元の音の系列をそのまま用いるのではなく、時間遅れ座標系を用いた再構成を行ったものを対象とします。
遅れ幅の設定:『「虹機械」はじまりのうた』、『「虹機械」公案-001』のいずれも、旋律は16分音符の系列ですので、16分音符を最小単位(1ステップ)とし、今回は遅れ幅τ=4,16の2種類について計算を行いました。いずれの作品も4/4拍子で記譜されていますので、τ=4だと1拍おき、τ=16だと1小節おきに対応することになります。
埋め込み次元:m=1~10とします。
上記より、例えばτ=4、m=3なら、「現在の拍・1拍後・2拍後」を座標とした3次元の相空間を構成し、そこでの軌道を眺めていることになります。この相空間上での任意のステップについて、そのステップの座標とそれ以外のステップの座標との距離を計算して、設定した半径rの中に含まれる点の数を数え、それを全軌道の点について積分したものが相関積分となります。
半径の設定:r=0.1~2.0の範囲で0.1刻みとします。
積分計算を行う半径rの範囲はデータに依存して経験的に決める必要があります。半径がある程度大きくなると軌道上の他の全ての時点の点が近傍に含まれる飽和状態になり、半径がある程度小さくなると近傍にごくわずかしか点がない、ないし全く点がない状態になり、今回は予備実験を行った結果、概ね両端で飽和状態とノイズが入った状態とが確認できる上記の範囲について計算を行うことにしました。
距離の定義:最初にマンハッタン距離で計算をしましたが、結果が不安定なケースが見受けられ、また半径の設定が困難なケースがあったため、ユークリッド距離での計算も行いました。両方の結果データを公開しますが、結果の検討は主として、相対的に安定した結果が得られているユークリッド距離の計算結果で行います。
実際の計算にあたっては、旋律をMIDIノートナンバーで表現し、各曲それぞれで出現する最高音と最低音を求めて、0~1の区間の実数値に規格化したものを用いて相関積分値の計算を行いました。
相関積分の値と半径rとで両対数プロットをして、傾きが直線的に安定している部分の傾きが相関次元になります。傾きの変化の確認のために、相関積分の値と半径rとの両対数プロットに加え、傾きの大きさと半径rの両対数プロットも行うことにしました。
比較実験:1.はじめにに記載した通り、相関積分の計算結果は、明確なScaling Regionが確認できない場合がほとんどであり、また相関積分曲線や傾きのグラフから確認出来る限り、埋め込み次元が高くなった時に一定の傾きに収束する傾向はあるものの、明確な収束は確認できず、妥当性を持った相関指数の計算は困難であることがわかりました。そこで寧ろランダムな系との違いを確認することにフォーカスすることとし、比較のために似たような条件のランダムな系列を用意して相関積分を求め、その結果との比較を行いました。具体的には以下のような条件で乱数の系列を発生させて、その系列について相関積分を求めることにしました。
系列長N=4000、5500の2種類(それぞれ「はじまりのうた」「公案-001」の系列長とほぼ同じ)、遅れ幅τ=4、埋め込み次元m=1~10、半径r=0.1~2.0の範囲で0.1刻み、マンハッタン距離・ユークリッド距離の両方で相関積分値を計算。
いずれもMIDIノートナンバーの範囲である0~127の整数の乱数を系列長分発生させ、発生した系列における上下限値を求めて、0~1の浮動小数点数に規格化します。ランダムな場合には遅れ幅の影響は受けない筈なので、遅れ幅τ=4とし、「虹機械」2作品と同様に、埋め込み次元m=1~10について、半径r=0.1~2.0の範囲で0.1刻みで相関積分値を計算しました。なお理論上は系列長の影響もない筈ですが、疑似乱数による計算の場合に計算結果には違いが生じることを考えて、シードを固定せず、2種類の系列長での疑似乱数列の相関積分値をマンハッタン距離とユークリッド距離で計算して、作品の相関積分結果との比較を行いました。結果的には系列長による違いはほとんどありませんでした。
3.計算結果
計算結果の要約となる、埋め込み次元m=10, ユークリッド距離での相関積分結果について半径をx軸、相関積分値をy軸として両対数プロットしたものをもとに、半径をx軸、傾きをy軸にプロットした結果を示します。レジェンドはそれぞれ
- Hamamatsu_4 :「はじまりのうた」, τ=4
- Hamamatsu_16:「はじまりのうた」, τ=16
- Koan-001_4:「公案-001」, τ=4
- Koan-001_16:「公案-001」, τ=16
- rnd:疑似乱数, N=4000
- rnd5500:疑似乱数, N=5500
を表します。
一見して明らかなように、相関指数を求めるための傾きが一定になる平坦な領域(Scaling Region)は見出せません。またいずれの作品においても、埋め込み次元の増大に従い、傾きが一定に収束する傾向も明確には確認できません。(以下に一例として「公案-001」のτ=16の相関積分値の傾きの曲線を示します。)その一方で、疑似乱数列の相関積分曲線と比較した場合に、その傾きの違いは明らかです。
また以下に示すように、τ=16の「はじまりのうた」の場合においてのみ、幅は限定されているものの傾きが一定になり、かつ埋め込み次元の大きさによらず一定の傾きとなる区間が確認できます。これはτ=4の場合には確認できず、また「公案-001」についてはτ=4,16いずれの場合にも確認できない傾向です。これがどういう原因に因るものなのかはわかりませんが、τ=16というのは丁度1小節分の遅れ幅となるため、小節単位での繰り返しのような構造と関係があるのかも知れません。またその傾きの値が1未満の非常に小さいものであることにも留意すべきではないかと思われます。

GP法は時系列データのフラクタル次元の推定の方法であり、相関積分の計算はその中で相関次元を求めるためのステップとなっています。但し、相関次元が計算できるためには相関積分の結果が一定の条件を満たしていることが必要であり、全ての場合に相関次元が求められるわけではありません。しかしながら相関次元を求めるための条件を満たしていない場合でも、相関積分の結果から対象となっている系の特徴についての情報を得ることができるのではないかと考えます。当然のことながら一般には系が自己相似性を持つかどうかという点にフォーカスした解説がされ、自己相似性を持つ系との比較として疑似乱数列の相関積分結果が参照されることが専らですが、自己相似性は持たないが、ランダムな系とも異なる特徴を持った相関積分結果が得られる場合も当然あり得て、今回の結果はまさにそのケースに該当します。
それでは、今回の相関積分の計算結果からどのようなことがわかるでしょうか?疑似乱数列の相関積分結果と比較した時に確認できることは、疑似乱数列の場合に比べて、
- 半径に対する積分値の傾きが小さく
- 一定の半径で傾きがの拡大が止まってその後傾きが減衰する
ということかと思います。そして「はじまりのうた」、「公案-001」両作品間での
- 半径の変化に対する積分値の傾きおよび傾きの変化の度合いの違い
- 傾きの拡大が止まった点での最大値の違い
にも明らかな差があるように思われます。ユークリッド距離とマンハッタン距離の両方での計算結果でもそれらは一貫しており、いずれも両作品の旋律の系列の特徴を反映したものと考えられます。
一般に、ここでの計算結果は、ある音を中心としてみた場合に、その音の周辺に別の音がどのように分布しているかの傾向の反映とみることができます。超球の半径を小さくすれば、体積が小さくなるからそこに含まれる音の数は減りますが、近くになればなるほど音がたくさん存在するような点の分布についての偏りがあれば、半径の減り方に対する積分値の減少の割合は緩やかになります。また埋め込み次元mは、時間的に離れた場所での分布をどの程度考慮するかの度合いを表していて、次元が深ければ時間幅が広くとられるので点の数は当然増えますが、例えば時間が経っても一定の割合である音の近傍で音が鳴ることがあって、その割合が多ければmを大きくした時に積分値は大きくなるし、また半径が小さくなったときに近傍の音の密度が急速に上がれば、傾きの減衰はmが大きい程早く現れるでしょう。
疑似乱数列の場合には、半径の変化に対して近傍にある音の分布は一定だし、次元の変化に対しては時間的に遠くにおいてもやはり分布が一定だとすると次元が増えるに従って積分値は累積されます。逆に半径を小さくすれば音の数は減り、積分値の減少幅はどんどん大きくなり、半径が一定以上小さくなると、近傍には音が一つもなくなります。上掲のサマリーにおいて半径が対数表記で-0.4を過ぎて-0.6に近づくあたりで結果が欠損するのが、まさに後者のケースに該当します。一方、次元を大きくすると時間的に離れた場所での状態が累積されるから、積分値の変化幅な次元数に応じて単調に大きくなり、最後には飽和(全ての点が超球の中に含まれる状態)します。
一方、音楽作品の場合にはある音の近傍の音の分布は半径の変化、次元の変化に対して常に一定ではありません。一般には半径が小さくなれば、急激に近傍に存在する音の密度は高くなるでしょうし、その時、次元が大きければ音の数の増加は更に急になるでしょう。半径に対する積分値の傾きが小さくなるという上記の観察は、音の系列が規則的で、ある音の近くに音が偏って存在していれば、半径の減り方に比べて球の中の音の数は急には減らないので傾きは緩やかになると考えられます。また一定の半径で傾きがの拡大が止まってその後傾きが減衰するという傾向については、音の分布に偏りがあって、各音の近傍について、ある半径を境に急激に音の密度が高くなるような状態を考えると説明できるように思います。
このように考えれば、作品間での半径に対する積分値の傾きおよび傾きの変化の度合いの違いや傾きの拡大が止まった点で傾きの変化の度合いの最大値の違いは、両作品の音系列における音の選ばれ方の規則性、常に同じような選択が行われるのか、多様性に富んでいるのか?等々を反映した違いであるということになります。これらは自己相似性を持つかどうかとはまた別の特徴であり、GP法における相関積分計算の目的からは外れているかも知れませんが、自己相似性があるか、カオス的な振舞をしているかどうかとは別に、計算結果から作品の特徴を確認することはできると考えます。但し、そうした計算結果の傾向が具体的な作品の状態遷移のどのような点に由来するのか等、具体的な点については現時点では明らかではありませんので、後日の課題としたいと思います。
4.公開データの内容
本報告で報告した実験に関連するデータは、以下の2つのアーカイブファイルに分けて公開しています。
いずれも解凍すると以下のフォルダ・ファイル構成になっています。
- in:入力データ。「はじまりのうた」「公案-001」の音系列。
- result:「はじまりのうた」(τ=4,16)「公案-001」(τ=4,16)および疑似乱数列(N=4000,5500)の相関積分値(埋め込み次元m=1~10、対数表示)および相関積分を行った半径(対数表示)いずれもcsv形式。
- plot:「はじまりのうた」(τ=4,16)「公案-001」(τ=4,16)および疑似乱数列(N=4000,5500)の半径(x軸)毎の相関積分値(y軸)を埋め込み次元m=1~10についてプロットした画像(曲、遅れ幅毎, jpeg形式)。
- slope:「はじまりのうた」(τ=4,16)「公案-001」(τ=4,16)および疑似乱数列(N=4000,5500)の半径(x軸)毎の相関積分値(y軸)の傾きを埋め込み次元m=1~10についてプロットした画像(曲、遅れ幅毎, jpeg形式)。
- summary:「はじまりのうた」(τ=4,16)「公案-001」(τ=4,16)および疑似乱数列(N=4000,5500)の相関積分値の傾きの比較。埋め込み次元別(m=7,8,9,10)
(2024.11.8 暫定版公開, 2024.11.10 3.計算結果に考察を追記して更新, 11.21誤記の修正)
[ご利用にあたっての注意] 公開するデータは自由に利用頂いて構いません。あくまでも実験的な試みを公開するものであり、作成者は結果の正しさは保証しません。このデータを用いることによって発生する如何なるトラブルに対しても、作成者は責任を負いません。入力として利用させて頂いたMIDIファイルに起因する間違い、分析プログラムの不具合に起因する間違いなど、各種の間違いが含まれる可能性があることをご了承の上、ご利用ください。