システム理論の続き - 音楽をネットワーク分析してみた

[Cisco Advent Calendar 2020] (https://qiita.com/advent-calendar/2020/cisco) 第24日目！
(今年は同志もさらに増え、[2枚目のCalendar] (https://qiita.com/advent-calendar/2020/cisco2)もあります！)


## 1. はじめに

　2020年は何という年だったことでしょう。未曾有のパンデミックによって、東京オリンピックも、ベートーヴェン生誕250周年も、全て吹っ飛んでしまいました。これだけ科学技術が発達した現代においても、人間社会は見えない敵にはめっぽう弱い、ということを痛感させられます。ダニエル・カーネマンは、”What you see is all there is（WYSIATI, 見たものがすべて）" と言いましたが、確かに、我々は自分に見えるものしか見てないし、見えないものは想像することさえも難しい。
　このような不確実性の高い環境においては特に、システム理論が役に立ちます。システム理論は、個々の要素同士がつながったり相互作用することによって生じる効果を観測したり、ある現象の背後に働いている目には見えない機序を分析することを可能にするからです。
　という訳で、Qiitaに書くのはもしかしたら場違いかも、と思いながらも、システム理論の続きを書かせていただきます。なお、過去三回のエントリーもぜひご覧いただけたら嬉しいです。

- [2017年 ネットワーク・エンジニアリングから学ぶこと − システム理論の見地から](https://qiita.com/mkohno/items/0c02ef8f76415208bd4e)
- [2018年 システム理論の続き - 生命モデルの限界と克服](https://qiita.com/mkohno/items/a936357bd634e1f472af)
- [2019年 システム理論の続き - 宣言的ネットワーキング](https://qiita.com/mkohno/items/ac83cf461632fbf4d862)


## 2. システム理論とネットワーク分析

　システム理論では、システムを「構成要素同士や外界との間において常に動的な相互作用を行う系」として扱い、要素還元的ではなく、ひとまずシステムを全体的に捉えます。そのシステム分析手法としては、オペレーションズリサーチや統計学、「カオス」「人工生命」「自己組織化」「創発」といった現象を扱う複雑系科学、そしてビッグデータを用いた機械学習などの各種手法が挙げられます。

　今回取り上げるネットワーク分析は、複雑系科学の手法の一つであり、グラフ理論に基づきシステムの構成要素を「ノード（または頂点）」、ノード同士の繋がりを「リンク（またはエッジ）」と捉え、そのつながり方（関係性と構造）を分析します。シンプルでありながら、現実世界のあらゆる現象を説明するために使える可能性があります。例えば、tomorrow という単語を生成する文字の連なりをネットワーク図に表すと、次のようになります。

<div align="center"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64896/a4f098ac-1888-bd85-7bc7-f9bdfd55cb00.png" width=40%> </div>



## 3. ネットワーク分析の指標

　ネットワーク分析の指標を次の表に示します。（参考文献[1], [2])

|指標  |説明  |
|:-----------------|:------------------------------------|
|経路長 |二つのノード間に仲介するノードのホップ数  |
|次数 |ノードの持つリンクの数 (degree)  |
|次数分布|ノードにおけるリンクの数を分布で表したもの (node-degree distribution)  |
|クラスター|任意のノードN1とノードN２を取り出したときに、共通の接続ノードがあることをクラスターと言う  |
|クラスター性|全ての接続の組み合わせにおけるクラスターの数の割合を「クラスター係数」と言い、クラスター係数が高いネットワークの特性をクラスター性と呼ぶ  |
|ネットワーク密度|平均次数（ネットワークにおける各ノードの次数を平均したもの）を正規化したもの。孤立したノードは0、他のすべてのノードと直接繋がれているノードは1。(network density) |


　先ほどの tomorrow を例に取ると、"o"という文字の次数が高く、経路長も小さく、クラスターを形成していることがわかります。感染症であれば、"o"が感染すればたちまち全体に感染が行き渡ってしまうことになりますね。


## 4. Small World and Scale Free !

　このネットワーク分析を一躍有名にしたのは、1998年に発表されたダンカン・ワッツの「スモールワールドネットワーク」そして1999年に発表されたアルバート＝ラズロ・バラバシの「スケールフリーネットワーク」です。
　
　ダンカン・ワッツは、知り合い関係をたどっていけば比較的簡単に（「6次の隔たり」で）世界中の誰にでも行き着く、という「スモールワールド現象」を数理モデル化しました。そしてそれを、伝染病や、文化における流行、経済、政変、金融バブルにも応用できることを論じています [2]。クラスターが存在し、かつ少数の遠距離リンクでクラスター同士が結ばれる、というモデルは、今回の伝染病対策のモデルにも役立てられていると思います。ワッツは、「グローバルに考え、ローカルに行動せよ（Think globally, Act locally)という言葉ほど、伝染病予防に適切なフレーズは無い」、と述べました。人々の交流が局所に留まっていればよいが、ショートカットで飛び火することにより、感染が急速に広がってしまう、ということです。今回のパンデミックで1年近く出張禁止が続いており、グローバルでどこでもひとっ飛びだった世界は分断されてしまったような感じもありますが、もう少し辛抱しなくてはなりません。（でもインターネットがあって良かった。）

　ワッツに少し遅れて発表されたバラバシの「スケールフリーネットワーク」には、もう一つの画期的な発見があり、話題を呼びました。それは次数分布（ノードが持つリンク数の分布）が「べき乗則」に従う、というものです [3]。
$$
　P(k) ∝ k^{−ν}
$$
　分布というとつい平均値や分散を求めたくなりますが、べき乗分布は正規分布と異なり、平均値が意味を持ちません。このスケールフリー性は現実世界のネットワークで幅広く観察されています。例えば、よく閲覧されるWebサイトのランキング、人々の持つ知人の数（大多数の人々の知り合いの数は限られているが、一部の人は非常にたくさんの知り合いを持つ）など。「80:20の法則」、「ロングテール」なども、スケールフリーネットワークの例と言えます。インターネットも、各AS (Autonomous System) の内部は、ラダー型、メッシュ型、リング型などのトポロジーを取っていますが、AS同士のつながり方はスケールフリー型と言われています。スケールフリーネットワークは、ランダムな障害には頑健性を持つが、巨大なハブを攻撃すればネットワークは分断してしまう、ということで、セキュリティの重要性を再認識することにもなりました。伝染病の例に当てはめれば、ずば抜けて多くの交友関係を持つ「ハブ」的な存在である人にはワクチンを優先的に投与する、または近づかない方が良い、ということになるでしょうか。


## 5. 音楽をネットワーク分析してみた！

　このように、ネットワーク分析はあらゆることに応用できます。特に、設計者の意図とは異なるシステムの構造や、社会現象のように混沌の中に隠された構造を読み解くのに有効です。時節柄伝染病の感染を話題にしてしまいましたが、もう少し楽しい話題も取り上げたくて、音楽をネットワーク分析してみました。

### 5-1 やり方

　ディジタル音楽を通信するプロトコルフォーマットとしてMIDI(Music Instruments Digital Interface)という規格があります。MIDIは、アナログ波形をサンプリングしてディジタル化するのとは異なり、音程、音の高さ、音の長さ、拍子、強弱など、楽譜の情報をそのままコード化しているため、加工分析に適しています。

- MIDIファイルをgetします。（自分で打ち込んでも良いですが、MIDIファイルを作成して公開しているサイトがありますので、有り難く使わせていただきました。）今回はJ.S.バッハの無伴奏チェロ組曲4番を取り上げました。（MIDIファイルサイト　http://www.jsbach.net/midi/）

- mf2t (MIDI File to Text) というツールを使用して、MIDIファイルをテキストに変換します。（http://flashmusicgames.com/midi/index.html）

- ネットワーク分析のソフトとしては、Cytoscapeというオープンソースソフトウェアを使用します。（https://cytoscape.org）

- テキストに変換したMIDIファイルデータを、Cytoscapeにインプット可能なCSVファイルに変換することにより、音楽をネットワーク分析することができます。


### 5-2 結果

　音楽をネットワーク分析するとき、音楽の何を「ノード」と捉えるかが問題になります。最もシンプルな方法は、一つの一つの音符をノードと捉えることだと思います。（今回取り上げたバッハ無伴奏チェロ組曲4番プレリュードの冒頭の一小節は、[E♭1] - [E♭3] - [B♭2] - [G2] - [B♭2] - [E♭2] - [G2] - [B♭1] （[ ]がノード） となります。）しかしこの場合は、あまり特徴が表れませんでした。そこで、音符と次の音符の連なりをノードと捉えます。（そうすると、冒頭の一小節は[E♭1 E♭3] - [E♭3 B♭2] - [B♭2 G2] - [G2 B♭2] - [B♭2 E♭2] - [E♭2 G2] - [G2 B♭1] となります。）これで曲全体を分析すると、次数分布がべき乗となるスケールフリーネットワークが現れました！


<div align="center"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64896/a19ef003-5255-19e1-46ca-315721fe704a.png" width=75%> </div>
[バッハ無伴奏チェロ組曲4番プレリュードの次数分布]


<div align="center"> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64896/f22cb96c-35bd-be72-4799-f0b20176e970.png" width=80%> </div>
[バッハ無伴奏チェロ組曲4番プレリュードのネットワーク図]


音符とその次の音符の「連なり」をノードとと捉えることにより、「ある音の連なりが提示されるとそれに対して呼応や共起として次の音の連なりが続き、その連鎖が楽曲となる」、という、見えなかった曲の構造が炙り出された、のではないかと思います！！！

## 6. おわりに

　切ない状況が続いています。目に見えないウィルスに翻弄される今ほど、人類の叡智が試される時はないかもしれません。システムの環境が目まぐるしく変わる技術の現場においても然りです。

　ある現象の背後に働く相互作用や、目には見えない構造を発見するシステム理論の考え方と分析手法を使って、新たな発見や気づきをたのしみながら、より良い未来に向かって道を切り拓いて行きましょう。

　最後になりましたが、楽曲をネットワーク分析することにより、音律・メロディー・和声・リズムなどの音楽の主要構成要素の他に、呼応や共起の生成という、生命活動のような動きを発見できたことは嬉しかったです。最後まで読んでいただき、どうもありがとうございました！





#### References
- [1] 増田直紀 & 今野紀雄 (2010) 「複雑ネットワーク―基礎から応用まで」 近代科学社
- [2] ダンカン・ワッツ (2004) 「スモールワールド・ネットワーク―世界を知るための新科学的思考法」 CCCメディア
- [3] アルバート＝ラズロ・バラバシ (2002) 「新ネットワーク思考―世界のしくみを読み解く」 NHK出版