DAW悪戦苦闘記

DAWやMIDIを通じてDTMを楽しむ記録。MIDI検定試験にもチャレンジするなり。

Courseraの機械学習入門講座雑感 (1)

昨年夏に Magenta を試用するなどして機械学習を援用した楽曲制作の一端に触れる機会があったせいもあり、今後ますます音楽との接点が増えるであろう機械学習それ自体にも興味が湧いてきた。

daw-jones.hatenablog.com

もう少し掘り下げて勉強せねばと思いつつ、その後MIDI検定2級試験の準備などに時間を取られて遠ざかっていたが、機械学習入門のMOOCの中では最も定評のある Machine Learning by Andrew Ng (Coursera) の聴講を6月末より始め、ちょうどMIDI検定1級試験の本番を迎える直前頃に完走したので、ここで改めて振り返ってみることにしたい(ややマニアックな話です)。

ja.coursera.org

なお、本コースはさすが人気があるだけあって、受講体験記や感想記事の類をネット上で多数見かけるのだが(私もある程度参考にさせていただいた)、ここではなるべく他であまり指摘されていない点を中心に、屋上屋を架さぬよう簡潔にまとめようと思う。今後受講される方の参考になれば幸いである。

受講にあたっての前提知識について

数学

高校数学で十分との指摘はよく見かけるものの、私の感触では大学教養課程レベルの線型代数微積の素養はあった方が無難だと思った(特に線型代数)。偏微分と高次元行列・ベクトルの操作を扱うからである。高校数学といっても理数系でないと苦しいかもしれない。

これに加え、確率・統計学の基礎も一応はあった方がよい。少なくとも正規分布ぐらいは知っていた方が捗る。いずれも昔やったというレベルで問題ないと思う(私自身数学が得意というわけではなかったので)。しかしこの辺の土台がまったくないと、数式にアレルギー反応を起こしたり、プログラミング課題をクリアできない可能性が高まる。

プログラミング

Octaveは非常に簡便簡潔な言語なので、他の言語経験がなくともすぐに習得できると思うが、肝となる vectorization (行列演算化)に関しては R または Python (Numpy/Pandas) の使用経験があるとスムーズに移行できるはずである。

なお、このvectorizationは線型代数の理解と表裏一体であるから、ここで数学に拒否反応を示すとやはり前に進めなくなってしまう。

Octaveについて

学習言語としての適否

本コースは人気講座ではあるものの、プログラミング課題においてPython (+ Jupyter Notebook) ではなくOctaveMATLABを含む)を用いている点がしばしば批判と不満の対象になっている。

しかし、プログラミングの経験をほとんど問わない入門講座という位置づけを考えると、私個人はOctaveが結局のところベスト・フィットではないかと感じた。行列を多用した数式をそのままコードに落とし込んでサクッとプロトタイプを作り上げるには便利な言語環境だからだ。

インストール方法など

OctaveMacへのインストールに関しては、受講経験者のほとんどがHomebrewを使う方法を書いているようだが、実はOctave公式(?)サイトからIDE込みのバイナリー*1が提供されているので、私はそちらを強く推奨する。というのも、使用するMacの環境によってはHomebrewで入れようにもビルドに失敗して上手くインストールできない場合があるからである(私もなぜかそうだった)。

Octave for macOS - Octave

またOctaveの実行に際しては、ターミナルからではなくIDEを使った方がはるかに効率がよい。シンタックス・ハイライトをしてくれるエディター付きなので、コードの編集・修正も非常にスムーズである。ただし、現行バージョンでは Control + C による実行中断や、コピペなどのショートカット・キーが効かないという不具合がある。

ちょっと長くなったので、講義内容については稿を改めることにしたい。

*1:私が入れたのはSourceforgeからダウンロードできるv4.0.3のもの。