17 Apr 2017, 07:49

kadenze で Creative Applications of Deep Learning with TensorFlow(CADL) を受けた

kadenze で、Creative Applications of Deep Learning with TensorFlow(CADL) を受けました。

これは、Creative Applications of Deep Learning with TensorFlow という Program (全 3 Course)のうちの一つ。

Program の Part2,3 は有料だけれども、Part1 のみ無料で受けられる。

概要

Deep Learning を 芸術に適用しようという講義。

主に Part1 では、画像処理に関する話題が取り上げられる。

  1. 畳み込み
  2. 画像補正(image inpainting)
  3. 自己符号化器
  4. DeepDream, Style Net
  5. GAN, RNN

詳細

講義ノートと課題(session)は以下のリポジトリにある。

juputer notebook の形式で github に置いてある。

session1: Introduction to TensorFlow

Deep Learning とはなにかからはじまり、画像データの処理方法、 TensorFlow の紹介、さらには Kernel を利用した畳み込み処理が解説される。 CNN までは、行かない。畳み込むだけ。

ちょっとはじめから飛ばしすぎな感があったけど、Lecture ノートが丁寧なので、 理解することができた。

課題は、自分で用意した 100 枚の画像に対して畳み込み処理をするというもの。 不気味な画像が生成された。

session2: Training A Network W/ TensorFlow

lecture では、tensorflow をつかって、サイン曲線付近に散らばったデータから、 サイン曲線を回帰によって求めることをした。

また、画像をニューラルネットワークに学習させることをした。 これは、Karphaty さんのデモサイトを真似たもの。

課題も、レクチャーの延長で、画像をニューラルネットワークに学習させることをした。 はじめは、一つの画像を、次に100枚の画像を、最後の Option 問題で 4 つの画像を ニューラルネットワークに描かせることをした。

session3: Unsupervised And Supervised Learning

教師なし学習として、自己符号化器が紹介される。

また、教師あり学習として、ニューラルネットワークを分類問題に適用する方法が説明される。

課題では、音声データを音楽かスピーチか判定して分類するようなことをする。

session4: Visualizing And Hallucinating Representations

隠れ層の可視化をする。

また、DeepDream という、コンピュータビジョンの手法が説明される。

DeepDream についてはこのブログ記事がとても詳しい。

Google Research Blog の内容を意訳してくれている。

また Neural Style Net というものを学ぶ。

作品集

session5: Generative Models

GAN と RNN を説明。どっちの説明も雑だった。これじゃあなにもわからない。

GAN は用意されたライブラリの説明で、理論の説明はないし、 RNN(LSTM)も、2 分くらいの説明があったあとデモンストレーションがあっただけ。

課題は、GAN は丁寧な解説があった。DCGAN, VAEGAN が説明されて、 CELEB Net の画像を利用して、画像を生成するところまでをやる。

RNN はトランプ大統領のツィートから文を生成しようというものだが、 出来た文章は文字化けしたような意味不明なものだった。深追いはしなかった。

感想

わからなすぎるー──ヾ(*‘∀`*)ノ──

session1,2 までは理解できたけれども、session3,4,5 は理解できなかった。

session1,2 の内容は既に知っている内容だったので、なんとかなった。 session3,4 はほとんど、session5 に至ると、まったく分からない。

こんなにわからないのは、久しぶりだと思うほどに分からない。

説明はまあ丁寧なほう

説明は丁寧、ということは言っておく。わからないのは自分のせい。

講義動画の内容は、話した内容がそのまま jupyter notebook に書き起こされている。

はじめ、講義 ノートの存在をしらなくて、 動画だけかと思ってたので、こんな動画だけじゃわかんねぇよとか思ったけど、 ちゃんと丁寧な講義ノートがあった。

講義でわからなくても、課題が講義をなぞるようにできているので、 課題を通して理解を深めることができる。

数式ほとんどでてこない

なお、数式がほとんどでてこない。 芸術をテーマにしているからか、理論的なところには踏み込んでいかないところが特徴。

たとえば、BackPropagation の説明は、以下のリンクのような感じ。

数式がないとはいえ、自分は session3,4,5 がなにいってるか理解できなかったので、数式なければ簡単とはかぎらない。

課題は簡単, TensorFlow にも慣れる

課題は、実はとても簡単。

課題は講義の応用なので、基本的には講義ノートのどこかに答えがある。

もしくはパラメータチューニングなので、自分で与えられた課題に対して数値をいじって変化を見る。

この講座は w/ TendorFlow というくらいなので、TensorFlow が初めの週からでてくる。

でも難しいことはあまりない。

正直、一から TensorFlow のコードを書いていくのはまだきついけれども、 課題を穴埋めしているうちになんとなく TensorFlow の使い方がわかる。

修了製作

チャップリンの動画に Neural Style Net でミロのスタイルをかぶせたもの。

どうやってつくったかというと、

  • gif を画像に分解
  • この処理 を画像に適応
  • 再び画像から gif を作成

元ネタ

出来上がったもの

12 Apr 2017, 13:47

Kadenze: CADL Session2 Image Painting

kadenze という MOOC を知ったので、紹介します。

Kadenze とは

Kadenze とは、芸術、つまりアートや音楽、絵画と、それに関わるテクノロジーに特化した 講座を多数よういされた MOOC だ。

20157 に設立されたので、まだ誕生して 2 年も経たない。 しかし、コンテンツは 100 近くある。

コースは聴講のみなら無料、課題の提出や certification の取得は有料となっている。 ここは、他の MOOC とかわらない。

また、Course と Program とで分かれている。

Program は複数の Course をばら売りしたもの。 逆にいえば、複数き Course をシリーズにしてまとめたものが Program.

For the Engineering

coursera や edX にもアート系の講座はあるが、Kadenza は特化しているだけあって、 興味深い講座が多数ある。

Kadenza に惹かれる理由は、エンジニアのためのアート、 つまりテクノロジーに関連したものを扱っているところだ。ここが、coursera や edX と異なるところ。

気になる講座

プログラミングや機械学習、特に DeepLearning と アートの講座もある。

Machine Learning for Musicians and Artists

機械学習と、音楽の講座。

Creative Audio Programming on the Raspberry Pi

Raspberry Pi 上で動作する オーディオプログラミング。

Introduction to Programming for Musicians and Digital Artists

オープンソース ChucK による、サウンドプログラミング。これは,以前 coursera にあった。

Creative Applications of Deep Learning with TensorFlow

そして、最後に私が受講し始めた講座を紹介。

Program の受講料は 500 ドルだけれども、聴講なら無料。Program は3つの Course に分かれている。

TensorFlow を使って、クリエイティブなアプリケーションを DeepLearning の手法を用いて作成していく。

シラバス

3 部構成になっている。

COURSE 1
Creative Applications of Deep Learning with TensorFlow

    Session 1: Introduction to TensorFlow
    Session 2: Training A Network W/ TensorFlow
    Session 3: Unsupervised And Supervised Learning
    Session 4: Visualizing And Hallucinating Representations
    Session 5: Generative Models

COURSE 2 — Summer 2017
Creative Applications of Deep Learning with TensorFlow II

    Session 1: Cloud Computing, GPUs, Deploying
    Session 2: Mixture Density Networks, Handwriting Synthesis
    Session 3: Modeling Attention with RNNs, DRAW
    Session 4: PixelCNN and PixelRNN, Generative Images

COURSE 3 — Late 2017
Creative Applications of Deep Learning with TensorFlow III

    Session 1: WaveNet, Generative Audio
    Session 2: Conditional Deep Generator Networks
    Session 3: Reinforcement Learning
    Session 4: Google Brain's Magenta Lab: Music and Art Generation

まとめ

私はクラシック音楽が大好きだ。

だから、音楽とプログラミングを結びつけてなにか面白いことをするというのが、 自分の昔からの夢だった。

Deep Learning はそのような可能性を引き出してくれる最高の遊び道具だと思う。

夢の実現のために、この Deep Learning の講座を理解して、応用したい。

kadenzeのCreative Applications of Deep Learning with TensorFlowを受けてます。

week2の課題では、tensorflow をつかって、多層ニューラルネット(10層 Deep Learningだ!)を構築し、画像をニューラルネットワークに描かせることをやる。

なにをいっているのか、うまく伝える自信がないので、ようは以下のサイトのようなことをするのだ。そのロジックを学んだ。

Input: 画像のrowとcolの位置情報 / Output RGB値

Goghを学ばせる

これを、ニューラルネットワークで学習させると・・・・

AV女優を学ばせる

AIだって、AV女優を見れば、活性化関数が元気になるんじゃなかと思って、題材に選んだ。

これを、ニューラルネットワークで学習させると・・・・

これが何を意味しているのか、よくわかっていなかったりする。

今回の課題は以下のリポジトリにあります。

おまけ: DMM AV女優月刊ランキングの女優の画像を取得するスクリプト

 

10 Apr 2017, 12:58

kadenze: CADL Session 1 畳み込み

kadenzeのCreative Applications of Deep Learning with TensorFlowを受けてます。

以下の投稿と似たような内容になってしまいますが、week1の課題の結果だけ載せます。

以下のサイトのようなことを実装した。

画像データ100枚収集

女優の画像をスクレイピングして集めてきました。

画像の平均を計算

100枚の画像の平均をとった画像が以下です。なんとなく、茶髪のショートカットの女性に見えます。

畳み込み用のカーネルで畳み込み

小さいのだけれども、16×16のカーネルで100×100の画像を捜査して畳み込んでいく。

 

畳み込みのイメージを得るには、このサイトで遊んで見るのがいい。

畳み込み結果は以下の通り。気持ち悪くなってしまいました。

07 Apr 2017, 15:53

kadenze: アートとテクノロジーの MOOC の紹介

kadenze という MOOC を知ったので、紹介します。

Kadenze とは

Kadenze とは、芸術、つまりアートや音楽、絵画と、それに関わるテクノロジーに特化した 講座を多数よういされた MOOC だ。

20157 に設立されたので、まだ誕生して 2 年も経たない。 しかし、コンテンツは 100 近くある。

コースは聴講のみなら無料、課題の提出や certification の取得は有料となっている。 ここは、他の MOOC とかわらない。

また、Course と Program とで分かれている。

Program は複数の Course をばら売りしたもの。 逆にいえば、複数き Course をシリーズにしてまとめたものが Program.

For the Engineering

coursera や edX にもアート系の講座はあるが、Kadenza は特化しているだけあって、 興味深い講座が多数ある。

Kadenza に惹かれる理由は、エンジニアのためのアート、 つまりテクノロジーに関連したものを扱っているところだ。ここが、coursera や edX と異なるところ。

気になる講座

プログラミングや機械学習、特に DeepLearning と アートの講座もある。

Machine Learning for Musicians and Artists

機械学習と、音楽の講座。

Creative Audio Programming on the Raspberry Pi

Raspberry Pi 上で動作する オーディオプログラミング。

Introduction to Programming for Musicians and Digital Artists

オープンソース ChucK による、サウンドプログラミング。これは,以前 coursera にあった。

Creative Applications of Deep Learning with TensorFlow

そして、最後に私が受講し始めた講座を紹介。

Program の受講料は 500 ドルだけれども、聴講なら無料。Program は3つの Course に分かれている。

TensorFlow を使って、クリエイティブなアプリケーションを DeepLearning の手法を用いて作成していく。

シラバス

3 部構成になっている。

COURSE 1
Creative Applications of Deep Learning with TensorFlow

    Session 1: Introduction to TensorFlow
    Session 2: Training A Network W/ TensorFlow
    Session 3: Unsupervised And Supervised Learning
    Session 4: Visualizing And Hallucinating Representations
    Session 5: Generative Models

COURSE 2 — Summer 2017
Creative Applications of Deep Learning with TensorFlow II

    Session 1: Cloud Computing, GPUs, Deploying
    Session 2: Mixture Density Networks, Handwriting Synthesis
    Session 3: Modeling Attention with RNNs, DRAW
    Session 4: PixelCNN and PixelRNN, Generative Images

COURSE 3 — Late 2017
Creative Applications of Deep Learning with TensorFlow III

    Session 1: WaveNet, Generative Audio
    Session 2: Conditional Deep Generator Networks
    Session 3: Reinforcement Learning
    Session 4: Google Brain's Magenta Lab: Music and Art Generation

まとめ

私はクラシック音楽が大好きだ。

だから、音楽とプログラミングを結びつけてなにか面白いことをするというのが、 自分の昔からの夢だった。

Deep Learning はそのような可能性を引き出してくれる最高の遊び道具だと思う。

夢の実現のために、この Deep Learning の講座を理解して、応用したい。

07 Apr 2017, 10:53

TFLearn で手書き文字認識(MNIST)を試してみた

先日、ゼロから作る DeepLearning を読んだ。

Udacity Deep Learning Nanodegree で TFLearn が紹介されていたのだが、 MNIST データを使った手書き文字認識が簡単に実装できてしまうことにビックリした。

実装

TFLearn のシンプルさにビックリ

こんな感じで、簡単に層を追加できてしまう。ビックリ!

# Inputs 784 個の入力データ
net = tflearn.input_data([None, trainX.shape[1]])

# Hidden layers 
# 活性化関数には ReLU 関数を利用。
net = tflearn.fully_connected(net, 128, activation='ReLU')
net = tflearn.fully_connected(net, 32, activation='ReLU')

# Output layer
# 活性化関数は、ソフトマックス関数を利用
net = tflearn.fully_connected(net, 10, activation='softmax')
# 最適化手法は、SGD. 学習率は 0.01. Cont 関数は、交差エントロピーを利用
net = tflearn.regression(net, optimizer='sgd', learning_rate=0.01, loss='categorical_crossentropy')

# モデルの生成
model = tflearn.DNN(net)

ゼロから作る DeepLearning で苦悩しつつ実装したニューラルネットワークはなんだったのだろうか?

ライブラリをつかえばこんなに簡単に実装できるのか?!

gist

このコードを実行すると、Accuracy は、97.69%.

TFLearn とは

TFLearn とは、Tensorflow のラッパーライブラリ。

scikit-learn のように TensorFlow が使えるらしい。

TFLearn インストール

公式のやり方は以下。

DLND では、anaconda を利用してインストールする方法が紹介されていた。

# conda で tflearn 用の仮想環境を作成
conda create -n tflearn python=3.5

# 有効化
activate tflearn

# Tensorflow と TFLearn をインストール
conda install scipy h5py
pip install tensorflow
pip install TFLearn

04 Apr 2017, 06:25

ゼロから作る Deep Learning を読んだ

Deep Learning の初歩(ニューラルネットワーク)を学ぶために, 遅ればせながら、ゼロから作る Deep Learning を読んだ.

読んだ理由

なぜ読んだかというと、この本がバカ売れしていて、すこぶる評判がよいから。

今現在(2017.4)、オライリー 5.5 万部売れているらしい。 エンジニアの人口が 90 万人と推定すると、5,6%の人が 20 人に 1 人が読んでいる。

みんな読んでいるので自分も読んでおこうというのが動機。 coursera の Machine Learning の講座で ニューラルネットワークが出てきて追い詰められていたという理由もある。

内容

誰におすすめか

なぜこんなに売れているのかというと、 高校生程度の数学の知識でもニューラルネットワークが理解でき、 さらには Python でニューラルネットのコードが書けるからだ。

  • Python 初心者だ
  • numpy つかったことない
  • 数学苦手

そんな君も大丈夫!すごくわかりやすく初歩の初歩からかかれている。

また、ゼロから自分で作るからこそ、知識を深く吸収することができる(と著者がいっている)。

ディープラーニング(深層学習)に入門

ディープラーニングのニュースが毎日世間を騒がし、 最近の風潮としてエンジニアならとりあえず機械学習かじっとけみたいなのもある。

この波にのっからないわけにはいかない。しかし、どっから取りかかればいいのだろう。 そう迷っているひとが五万といるからこそ、この本がとても売れているのではないかと思う。

ディープラーニング(深層学習)の入門書としては、この本が今のところ一番。

目次

目次は以下の通り。

1. Python 入門
2.パーセプトロン
3.ニューラルネットワーク
4.ニューラルネットワークの学習
5.誤差逆伝搬法
6.学習に関するテクニック
7.畳み込みニューラルネットワーク
8.ディープラーニング

本書は、pyhton と numpy ライブラリのみをつかって、 ニューラルネットワークと畳み込みニューラルネットワーク(CNN)をゼロから実装していく。

逆にいえば、CNN 以上のことは、RNN, LSTM, DCGAN, DQN などはかかれていない。

5 章までニューラルネットワークが続く。 6 章では、パラメータ更新の最適化法、バッチ正規化、正則化などハイパーパラメータ関連のことがかかれている。 7 章では、畳み込みニューラルネットワーク(CNN)を豊富な図と、丁寧な説明で紹介される。 8 章では、ディープラーニングの最新動向が説明される。

私は、coursera Machine Learning のバックプロパゲーションを理解するために 5 章までを 2 回読んだ。 そのあと読むのを止め、時間に余裕ができてから 6,7,8 章を読んだ。

感想

わかりやすいわかりやすいと書きつつ、実は理解できないところもあった。

計算グラフによる誤差逆伝搬法は、2 度読んでようやくなんとなくわかった。 が、誤差逆伝搬法はこっちの本で数式からのアプローチですんなりふに落ちた。

ちなみに、筆者が強く影響を受けている計算グラフによる説明動画は以下。 見てみたけど、英語なのでよくわからない。 日本語で、ニューラルネットワークに関してまとまっている本書はありがたい。

また、CNN の実装も理解できなかった。ライブラリに依存しないということだが、 im2col という謎のユーティリティが出てきて、これが理解できなかった。 もう一度、CNN の章については読み返す必要あり。

6 章や 8 章で、最新の手法が紹介されているところもよいと思った。 また、このディープラーニングという分野は変化が激しいのだなと感じた。

これからどうするか

ニューラルネットワークについてはだいたい理解できた。 いろんな教材であれこれ品を替えて触れているので、さすがに理解できてきた。

今後の目標は、CNN を理解すること。次は、この本を読もうと思っている。

TensorFlow を使って CNN を理解する本だ。 CNN の実装の箇所を読みながら、難しいところは自作するよりもライブラリを使ったほうがいいなと感じた。 引き続き、Deep Learning の知識を深めていきます。

29 Mar 2017, 13:01

ディープラーニングがわかる数学入門を読んだ

ディープラーニングがわかる数学入門を4章まで読んだので、感想を書きます。

5 章の CNN はとりあえず時間をおいてから読んで、追記します。

これを読むまで、バックプロパゲーション(誤差逆伝搬法) がわかったようなわからないような、モヤモヤしていた。

  • coursera Machine Learning
  • ゼロから作る Deep Learning
  • Udacity Deep Learning Nanodegree Foundation

この本でようやく、バックプロパゲーションがなにをやっているのかわかった気がする。

数列の漸化式と初めから言ってくれよ。

どんな人にオススメか

目次はここから。

  • ディープラーニングがわかる数学入門:書籍案内|技術評論社

    • ■ 1 章 ニューラルネットワークの考え方
    • ■ 2 章 ニューラルネットワークのための数学の基本
    • ■ 3 章 ニューラルネットワークの最適化
    • ■ 4 章 ニューラルネットワークと誤差逆伝播法
    • ■ 5 章 ディープラーニングと畳み込みニューラルネットワーク

    ベストセラーになったゼロから作る Deep Learning は平易だったけれども、 それと同等、それ以上に平易なのがこの本。

  • ディープラーニングに関心のある学生,社会人。
  • ディープラーニングの勉強のために数学の基礎固めをしたいけれども、 なにから始めればいいか分からない人。
  • ゼロから学ぶ Deep Learning を読んで、数理をもう少し深めたいと思った人。
  • 逆誤差伝搬法を(計算グラフではなく)数式から理解しようとしたけど挫折した人。

内容

題名はディープラーニングだけれども、 ほとんどがニューラルネットワークの理解のためにページが割かれている。 最終章で 畳み込みニューラルネットワーク(CNN) の説明がある。

よい点

  • 説明がとても初心者にやさしい。
  • 図が豊富。
  • 例題が多く、簡単でわかりやすく理解が深まる。
  • できるだけ汎用的な記号の表記方法を使っているところ。
  • Python とか Ocatve とか、プログラミングは出てこない。
  • Excel を通じて各値がどう変化するか目で追えるところ。

(LibreOffice で値の確認はできた。マクロ使ってるだけで、VBA とかはつかっていないから)

どんなの数学が出てくるか

ニューラルネットワークの理解に必要な数学のみが厳選されて丁寧に説明されている。 具体的には、第 2 章の目次をみてもらうと分かる。

  • 1 ニューラルネットワークに必須の関数
  • 2 ニューラルネットワークの理解に役立つ数列と漸化式
  • 3 ニューラルネットワークで多用されるΣ記号
  • 4 ニューラルネットワークの理解に役立つベクトル
  • 5 ニューラルネットワークの理解に役立つ行列
  • 6 ニューラルネットワークのための微分の基本
  • 7 ニューラルネットワークのための偏微分の基本
  • 8 誤差逆伝播法で必須のチェーンルール
  • 9 勾配降下法の基礎となる多変数関数の近似公式

-10 勾配降下法の意味と公式 -11 勾配降下法を Excel で体験 -12 最適化問題と回帰分析

著者の 涌井 良幸さん、涌井 貞美さんは, 共著で統計関係の本を多数書いているようなので、わかりやすさはその実績からも伺える。

感想

意外だったのは、機会学習というと統計学が重要になるけれども、 この本には統計はほとんど出てこない。回帰分析が最適化の例として出てくる。

解析学の知識が多い。

行列や、シグマさえも、なるべく使わないで説明してくれるのだ!ベクトルは使う。

個人敵にハッとさせられた説明は、

  • コーシー・シュワルツの不等式は勾配降下法の基本原理。
  • 逆誤差伝搬法は、数列の漸化式。
  • 自ら学習するということは、重みとバイアスを「最適化」すること。

    ディープラーニングがわからない人のための最後の一冊として オススメです。

    分かる人には、必要ないかもしれない。

03 Feb 2017, 06:14

MATLAB のコードを Octave で実行するときの Warning を消す方法

LAFF を受けている.

MATLAB Online を利用することが推奨されているのだが、 期間限定なのでできれば無料の Octave を利用したい。

Discussion を見ると、Octave でも課題はできるよと書いてある。

でも、テストスクリプトを実行すると以下のような Warning がたくさん出る。

warning: Matlab-style short-circuit operation performed for operator &

これを消したい。

消す方法

/usr/share/octave/site/m/startup/octaverc に以下の行を追加する。

warning('off', 'Octave:possible-matlab-short-circuit-operator');

参考: linux - How to suppress warnings in gnu octave - Stack Overflow

これで Warning はひとまずでなくなる。

01 Feb 2017, 15:43

coursera の Machine Learning を受講してる

coursera で Andrew Ng 先生の Machine Learning の講座を受講してる。

本当は、修了時にブログ記事を書こうと思ったけれども、 勢いで半分終わった今(week5)、記事を書いてしまったので公開。

2 度挫折しました

MOOC の講座は 30 近く受講してきたけれども、 実は MOOC の代表ともいえるこの講座は手が出なかった。

なぜなら、、、難しいから・・・。

2 度挑戦して、2 度挫折しています。

  • 1 度目: 他の mooc(nand2tetris)を受けてて時間がなかったから week3 で挫折。
  • 2 度目: week5 の back propagation の難解さに挫折。

機械学習諦めようと、何度も思った。 でも、世間の風潮は AI まっしぐら。 エンジニアとして AI に興味を持たない人はモグリ的な空気を感じたので、 再び再起を決して ML に挑みました。

今回、挫折しないように以下を心がけました。

  1. 勉強カフェ 3 ヶ月プログラムに参加して、coursera ML を宣言
  2. ゼロから作る Deep Learning で Back Propagation を学習
  3. 日本語情報を漁った

3ヶ月プログラム

勉強カフェには 3 ヶ月プログラムというのがあり、それに参加した。 やる気のある人たちが集まって、お互いの目標の達成のために 励ましあいながら切磋琢磨するというもの。ここで、coursera の ML を目標に掲げた。

ゼロから作る Deep Learning

また、大ヒット中の書籍 ゼロから作る Deep Learning を 5 章まで読んで、 Back Propagation の仕組みを理解した。

この本は大変わかりやすくアルゴリズムを紹介していて、 この本がなかったら、2 度目の時のように挫折していただろう。

ただ、この本で紹介されている方法と、Lecture で紹介されている方法には ギャップがあり、現在その差異の理解について悩んでいる。 多分、同じことを行っているのだと思うのだが、いまいち理解できていない。

日本語情報

coursera の Machine Learning は、受講者が過去に大勢いて、 ネットでしらべれば、情報がたくさん出てくるところがいい。

英語で分からないときは、日本語情報に当たって理解を深めた。 とくに役に立ったのは以下の記事たち。ありがたい。これがなければ挫折していた。感謝。

講義の内容

“coursera Macnine Learning 修了” で 検索するとわんさか修了報告記事が引っかかるので、 ここでは、簡潔に書く。11week で以下のことを学んだ。

  • 機械学習とは
  • 教師あり学習と教師なし学習
  • 回帰問題と分類問題
  • 線形回帰
  • ロジスティック回帰
  • ニューラルネットワーク
  • サポートベクターマシーン
  • k-Means
  • 主成分分析(PCA)
  • 異常検知
  • レコメンデーションシステム
  • 機械学習の評価と改善
  • 機械学習を組み合わせる

などなど。じゃあ、学ばなかったアルゴリズムはなにか?手持ちの参考書を元にピックアップ

  • 決定木
  • EM アルゴリズム
  • ベイズ推定
  • 深層学習(Deep Learning)
  • 強化学習

たぶん、他にもたくさんあると思う。 網羅するには、このシリーズを読破すればよい(そんな人いるのか?)

そしてこれから先の学習プラン

coursera の Machine Learning を受講し終えた人たちはどこへ消えていくのか? せっかく修了したのに、ほとんどの人が、受講後、機械学習から離れていくように見える。

自分は、これからもせっかく頑張った機械学習の勉強を続けていきたい。

さて、これから何をするべきか?以下の記事が参考になった。

以下、思いついた学習プランを列挙。鬼速 PDCA を回しながら、2 年間かけて実行していく予定だ。

数学の勉強

大学の数学を忘れてしまったので、やり直したい。やり直しプランは以下に書いた。

他の MOOC を受講する

他の MOOC を受講してみるのもよいかもしれない。よきロールモデルを見つけた。

この人のように片端から MOOC を受けてみるのはよいかもしれない。

必ず挫折しそうだけれども、次はこれを受ける予定だ。

Neural Networks for Machine Learning

Hilton 先生は、Deep Learning のブームの火付け役の人。これはすごい。

Udacity にも Udacity 創立者の Sebastian Thrun 先生が講師の授業がある。

python で課題をやり直す

おもしろいリポジトリを github で見つけた。

まだ試していないけれども、README によると、python で Assignment を提出できるらしい。 このスケルトンリポジトリをつかって、python で 復習するのもよい。

また、ネット上には、多くのひとが Python で Assignment をやり直している。

この本も気になっている。ベストセラーの本。これを読みつつ、Python と戯れるのもいとをかし。

書籍での学習

簡単な書籍から入って深いところまで、勉強していくというルートもある。

なにしろ、変化が早い分野なので、矢継ぎ早に今年も良書が出版されるだろう。

Amazon や オライリーの動向を常にチェックしていよう。

TensorFlow で遊ぶ

勉強だけでは飽きてしまうので、自由に遊びながら学のもよい。

TensorFlow がブームなので、 TensorFlow のチュートリアルを読みつつ、DeepLearning を勉強しようか。

最後に

自分は、頭が悪い。具体的には、IQ が 80 台だ。 ある人が簡単に理解できることも、自分には難しい。 それでも、努力は才能で克服できると信じている。

そして、目指すは、PRML(パターン認識と機械学習)。 今のレベルでは、読めないので 1,2 年くらい回り道をしてから挑む。

PRML 読破後は、機械学習に関わる仕事をする。社内にあればいいのだが・・・。

これから数年間は、機械学習(と英語)に全力を傾ける。 大学生のときに遊んでいたつけを今こそ返すときだ。 本気で数学と機械学習の勉強をしよう。

なにはともあれ、coursera の Machine Learing を挫折しないで完走を目指す!!

追記

coursera Machine Learning 修了しました!! certificate

28 Jan 2017, 03:19

結局、機械学習に必要な数学ってなに?

前置き

記事がはてぶ炎上して恥ずかしい思いをしたので、結構書き直しました。

この記事よりも良質な記事を参考記事に列挙したので、このページをブックマーク集だとして、他のページを参照していただければと思います。

はじめに

機械学習を勉強するにあたって、 ベースとなる数学を勉強したいというモチベーションが高まってきた。なぜか?それは、今まで数学的な知識なしに勉強を進めていたのたけれども、論文が読めなかったり、少し数式で込み入ってくると、とたんにわけがわからなくなったからだ。

しかし、一番のモチベーションは、やっぱり機械学習を勉強するものとしての登竜門、PRML(パターン認識と機械学習)を読みたいというものがある。

参考記事

そこで、機械学習のために必要な数学を調べてみたのだが・・・どのサイトをみてもこれはというものがみつからないのだ。

2017年現在で、有益な記事をできるかぎり集めてみた。

なぜ、ピンとこないか?それは、分野が大きくまとまりすぎているから。

この分野のこの知識がこの技術のここに役に立とついう、ピンポイントな記事がなかなか見つからない。

自分の中での結論

結論としては、情報系の大学1,2年生で習う必修科目で十分。

  • 線形代数
  • 微分積分
  • 確率・統計

余裕があれば、以下を選択科目として勉強するのがよい。

  • ベイズ統計
  • (凸)最適化
  • 情報理論

勉強計画と実績

前提条件として、自分のバックグラウンドを書いておきます。

一応、情報系の大学の学科を卒業した(学部卒で院には行かなかった)学生のころに得意だったのは線形代数。微積は、単位を落として2年連続でうけたので記憶に残っている項目が多い。統計は、自分はほとんどやっていない。

大学4年の専攻は、情報理論。エントロピーとか、圧縮とか誤り訂正について学んだ。

初級

まずは、大学生が大好きなマセマシリーズで、基礎固めをすることにした。

  • スバラシク実力がつくと評判の線形代数キャンパス・ゼミ
  • スバラシク実力がつくと評判の微分積分キャンパス・ゼミ
  • スバラシク実力がつくと評判の統計学キャンパス・ゼミ

機械学習に関係のなさそうなところは流しつつ進めるという方針を立てた。

キーワード + 機械学習で検索をかけて、検索でヒットしないところは飛ばした。具体的には、統計の検定とか、線形代数のジョルダン標準型や、重積分の体積の求め方などなど、飛ばした。

マセマシリーズを一通りやった感想を書くと、マセマはガチ!証明をおろそかにしない。注釈が至るところに埋め込んであるので、式を追っていってわからなくなるところはない。しかし、定理、証明、定理、証明・・・という典型的なつまらない数学の本になっている印象をうけた。

機械学習は、数学を応用するので、定理の証明はできることに越したことはないが深入りする必要はないと考えている。(このポエムに同感した)

中級

  • プログラミングのための線形代数

    • プログラミングのための確率統計

プログラミングのための〜シリーズで線形代数と確率統計を学ぶ。

このシリーズは、イメージで概念を説明する特徴がある。

ちなみに、プログラミングの〜と書いてあるが、プログラミングはでてこない。

さらにいうと、自分が大学一年の時に、線形代数のやつを購入して愛読していた。

大学を卒業してから、10年近くが立ったいま、また役に立とうとは夢にも思わなかった。

次に紹介するのは、やろうかどうか悩んでいる、オプションの本だ。

  • これなら分かる最適化数学

すこぶる評判がよい本。機械学習の学習とは、最適化にほかならない。機械学習のキモを学べるほんだとか。

  • Pythonで体験するベイズ推論 PyMCによるMCMC入門

PRML本は、ベイズ統計がベースとなっているときいているので、ベイズ統計をガッツリやっておきたい。

この本は、まずコードを動かして結果を見てから理論を学習するという独特の方式をとっているらしい。

原著は Bayesian Methods for Hackers (ハッカーのためのベイジアンメソッド)。心たぎるタイトルではないか!!

  • 情報理論の基礎―情報と学習の直観的理解のために

一応、大学の専攻が情報理論だったので、情報理論は抑えておきたいところ。

この本は、機械学習の観点から情報理論を扱うという独特な本。余裕があればぜひ読みたい。

機械学習入門

数学の基礎が固まってきたら、そろそろ機械学習をやっていきたい。

  • Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

この本の特徴は、なんと数式が出てこないところだ。

数式に苦手意識があるので、まずは数式なしから、イメージとして機械学習を捉えていきたい。

更に、この本は、scikit-learnをマスターすることができる。

scikit-learnをマスターすれば、Kaggleに挑戦できる。よって、早いうちに読んでおきたい本として、筆頭に上げた。

  • Python機械学習プログラミング 達人データサイエンティストによる理論と実践

中級レベル。これもコードが示されているので、理論と実装を同時に学ぶことができる。

このあたりからKaggleをガンガンやっていきたいところだ。

  • はじめてのパターン認識

王道。機械学習を目指すならばだれもが通る本。はじパタ本。

機械学習の概念が数理的な側面からコンパクトにまとまっている。

  • 言語処理のための機械学習入門

これも王道。通称、高村本。はじパタ本とならんで、機械学習入門の書として挙げられている。

自分は、はじパタと高村本を比較した結果、高村本から入門することにした。

なぜなら、薄いから。はじめの1/4が数学の説明で費やされているから。

重要視されているのは、凸最適化、確率論、そして情報理論。数式の展開が丁寧。

  • データ解析のための統計モデリング入門

これも王道。機械学習がはじパタ本ならば、統計学はみどり本。

2つはデータサイエンティストを目指すものとしての最低ラインだとか。

はじパタが識別モデルを扱うのに対し、緑本は生成モデルを扱う。

ラスボス

  • パターン認識と機械学習
  • Kaggleに挑戦

あとは、実践あるのみ。Kaggleは 早い段階から数学や機械学習の勉強と平行して、積極的に取り組んでいきたい。

理論だけしかできない人間になりたくない。

Coding First の精神で頑張りたい。

めざせ、カグルマスター!!