金曜日, 10月 27, 2017

機械学習の勉強

機械学習に関する話題に触れない日はないが、今まであまり積極的に勉強しようという気はなかった。何だか数学的な別の世界の話で、自分で使うイメージが湧かなかったから。レコメンドシステムの精度を上げたり、絵のスタイルを模倣したり、手描きの数字を判別したりという事例はあるにせよ、自分が思いつく限りではその精度のずれを楽しんだりするぐらいかなと。

しかし最近の仕事で機械学習を使った製品を扱っており、全く知らないでは済まされない雰囲気を感じたので、色々と調べてみたらその考え方や実装方法が非常に興味深く、もっと勉強してみたいと思うようになった。

Stanford University CS231n: Convolutional Neural Networks for Visual Recognition

ディープラーニングに関してはこのStanfordの授業をお手本にしている人が多いと思う。解説も丁寧だし、生徒の質問もよい。難しいことを聞いている訳ではなく、自分なら「そういうもの」として流してしまう部分に「何故?」と疑問を呈しており、なるほどこういう姿勢が秀才を作るのだなと感心する。

kadenzeはアートとクリエイティブテクノロジーに特化してるだけあって、メディアアートの現場でどう使うかが分かりやすく紹介されている。Auditであれば無料。

Machine Learning for Musicians and Artists - an Online Machine Art Course at Kadenze

例えばセンサーをつけた手の動きに合わせて音を鳴らすプログラムを書く場合、入力されたデータから速度や加速度を計算し、いい具合の数値を見つけて条件を分岐させる。「この数値が15以上になったらこの音を鳴らす」みたいな感じで。この作業は非常に面倒だが同時に楽しいところで、身体感覚をプログラムに入れ込んでいくようなイメージ。インタラクティブな作品は、動きの気持ちよさなど、作家の身体感覚が機械に乗り移っているのが面白い。そのためには複数のパラメーターをいじらなければならないのだが、あるパラメーターを変えた際に別のところに影響し、それによって結果が変わるのでまた調整して…の繰り返しとなる。機械学習は言ってみればこの「いい具合」を導き出す技術なので、うまく使うとこういった作業がかなり楽になるんじゃないだろうか(まだ何も作ってないので分からない)。

Creative Applications of Deep Learning with TensorFlow | Kadenze

こちらはTensorFlowを使い、画像生成を学ぶ。ディープラーニングで作られた画像に感じる傾向は、こういう作り方から来てるんだなと理解できる。Jupyterを使っていて、講義の内容もNotebookに書かれているのでめちゃくちゃ勉強しやすい。自分で手を動かす課題もあり、学びながら興味に従って工夫できる。課題はJupyter Notebook上で解説やコメントを参考にしながら、途中まで書かれたコードを完成させる形式。じっくり考える部分とさらっと流してよい部分が分かりやすい。

初心者がどこから勉強するといいのかについては沢山の記事があるが、大抵だらだらリストアップされてて要点が分からない。英語が理解できてクリエイティブコーディングに興味がある場合、「Machine Learning for Musicians and Artists」で概要を掴み、「Creative Applications of Deep Learning with TensorFlow」で手を動かしながら、「Stanford University CS231n」で詳しく学ぶのがいいんじゃないかと思ってる。これらの大事な点としては、課題をちゃんとやること!

あと「ゼロから作るDeep Learning」も読んでいる。これも手を動かしながら学べて、日本語で体系的に理解できる。CS231nを参考にしているようなので、一緒に読むといいと思う。

「単純な作業はAIに任せて、人間はよりクリエイティブなことに取り組もう」というような言葉もよく目にするが、それはプログラムによる自動化と大差がない。何が「単純」で何が「クリエイティブ」かを切り分けるのはなかなか難しい。大竹伸朗の言葉を引用しておく。

「自分がいらないとしたもの、本当はそっちの方に本質なものがあるんじゃないか」

https://www.youtube.com/watch?v=wW0K59OUF2A