02 Jan 2018, 05:31

KaggleのためのMOOCがcourseraに!How to win a Data Science Competitionを受けた

kaggleの攻略法について、以前調査した。あまり、学習教材がなかった。

Kaggleを初心者が進めるには、とにかくコンペに参加してKernelを読むしかないのかなと思っていた。そんな自分に朗報!この courseraが提供するものこそ、自分が求めていたものだ。

その名も・・・

How to Win a Data Science Competition: Learn from Top Kaggler

特徴

ロシアのカグルマスターが講師

この講座では、Yandexというロシアのgoogleが講座をサポートしている。そのため、ロシア切ってのデータサイエンティストから学ぶことができるのだ。

また、catboostなどの、ロシア魂がこもったライブラリを紹介される。これはかのxgboostよりも強力だった。

難易度高い…

正直、難しいです。quiz, assignment, 解けなかった。

この講座は機械学習の手法を教える講座ではない。それらはすでに身についているものとして、コンペで使える技や知識を教えてくれる。

kaggle コンペで腕試し

習ったことは即試してみようということで、練習用のkaggleコンペが用意されている。

ロシアのIT企業の売上予測を行う。時系列データコンペ。

各週の内容

week1:

recap&introduction ということで、データ分析コンペについて紹介される。

基本的な手法はもう知っているよねということで、MLの手法はサラッと紹介されて終わる。

そのあと、前処理についての紹介。これはよくまとまっている。数値変数、カテゴリ変数、時間の扱いと位置の扱い、欠損値の扱い。これは大事なので、なんども復習したいところだ。

assignmentはpandasについての演習。groupbyを多用する必要があり、初心者サヨウナラ感がとてもする。

week2:

EDAについての解説。これも一通りの手法は紹介される。とはいえ、すべてを網羅できるわけではなく、自分で習ったことを実践してみないとこれは身につかない気がした。

次に Validationということで、データ分割の戦略について紹介される。データ分割がなぜ必要か(過学習を避けるため)、その手法と注意点について。

最後に、Data Leakageが扱われる。具体的な事例を元に、DataLeakageにどうやって気づくかなどが紹介される、が、

ここはよくわからなかったな。。。Assignmentも Data Leakageについてなのだが。

week3:

Metrix(評価指標)について学ぶ。回帰、分類それぞれでよく使われる指標を学ぶ。MetrixとLoss functionの違いについて説明。ココらへん、理解していなかったので参考になる。

続いて、mean encodingという手法について紹介される。カテゴリカル変数を変換するための方法で、label/one-hot-encodingよりも、強力だとか。そして、その実装がassignmentとして課される。

week4:

ハイパーパラメータのチューニングについて、まず紹介される。ランダムフォレストやxgboost, ニューラルネットワークのパラメータチューニングについての実践的なアドバイス。また、自動チューニングツールの紹介(hyperoptなど)

次に、特徴量エンジニアリングの小ネタ第二弾。

  • Matrix Factorization
  • Feature Interaction
  • t-SME

最後に、一番むずかしい話題、アンサンブル学習が紹介される。weight average, bagging, stacking, boosting, stacknet…ムズい。assignmentはstackingの実装。

week5:

過去のコンペティションで講師の人が上位入賞をどうやってしたか、カグルマスターがその手法の種明かしをしてくれる。

ただ、これらの動画はおまけのようなもので、最後の週の本題は、用意されたKaggleコンペで上位スコアを取ること。

Assignmentがスコアのcsvデータの提出。一定以上のスコアを超えていないと、クリアとみなされない。そしてこの水準がとても高い。MSE1.0より低くないと、どうやら合格できないよう。LBを見ると、そんな人は30人くらいしかいない。

それに加えて、ペアレビューがある。以下のフォーマットに従って、自分がどうやってコンペに望んだかを説明するレポートを作成して、コードと一緒に提出する。

提出がすむと、他の人のコードをレビューできるようになる。

おわりに

この記事を執筆している時点では、私はコースを完了していない。

QuizもAssignmentも終わらなかった。

ただ、とてもこのコースはとても充実していた。かけた時間は現在95時間。kaggleのための実践的なテクニックが豊富に紹介されていて、吸収することがたくさんある。mean encodingや stackingなど、ネットにはほんとど情報がないが重要な手法も紹介されている

(assignmentにもなっている)

さらに、その知識を実践するする機会もコンペという形で与えられている。MOOCをいろいろと受けてきたけれども、そのなかでもかなり楽しい講座だった。それは、自分が今興味があることがデータサイエンスであり、ちょうど知りたい内容だったからだ。

この講座の内容をよくよく復習し、今後もKaggleに取り組んでいこう。Kaggle用のマシンも購入したことだし、まずはそれでグリッドサーチやアンサンブルを試してスコアを上げる。

12 Aug 2017, 09:51

fast.aiの Cutting Edge Deep Learning For Coders, Part 2を受けた

fast.aiが提供する ディープラーニングのオンライン無料講座、Cutting Edge Deep Learning for Coders を受けたのだが、難しくて後半から挫折。。

とてもいい講座なので、布教のためにも講座の紹介と、各レクチャーの内容を書いておくことにする。

これは、fast.aiが提供するDeep Learning コースの Part2に当たる。Part1の感想は以下。

講座の紹介

紹介記事: Cutting Edge Deep Learning for Coders—Launching Deep Learning Part 2 · fast.ai

Cutting Edge(最先端)の意味〜論文を読め!

Part1のPracticalのテーマは、Kagglerになれ、ということだった。

Part2では、Cutting Edge = 最先端の手法が紹介される。Cutting Edgeとはなにか?それは、

論文を読め!! ということだ。

そのため、最先端を追いかけるために、arXivの論文を読むことが課題として課せられる。論文を読み、その内容を実装できるスキルをみにつけることが求められる。

論文というものに今まで触れたことがないので、かなりびっくりだ。

Kerasのバックエンドが theanoからTensorFlowに変更、PyTouchも使おう

Part1と同様に、Part2も丁寧に書かれたJupyter Notebookが提供されて、それにそってレクチャーが進む。

このJupyter Notebook, Keras と PyTouch の両方で実装されている。

なので、PyTouchを使いたいひとは、そっちを使うことができる。

Part1より難しい・・・

Part1には、充実したwikiがあったのだが、Part2にはWikiがない。

さらには、英語字幕もない。自分は、英語があまり聞き取れないので、Part1での勉強スタイルは、動画で雰囲気を掴んだあと、wikiを熟読してなんとか理解するものだった。今回、それができない。

また、内容的にも難しさが上がっている。Part1でやったことはすべてわかっている前提ではじまるので、Part1を飛ばしてPart2からやるのは厳しいと思う。

目安は100時間以上

正直、Lesson12くらいからよくわからなくなったのと、急いで終わらせる必要が出てきたので、、後半はあまり時間をかけなかった。

それでも、100時間はかかった。真面目にやったら150時間?はかかると思う。

ちなみに、Part1は真面目にやって100時間かかった。

レクチャーメモ

Lesson 8: Artistic Style

まずは、Part1でやったことの紹介と、これからやるPart2の紹介から始まる。

Part2では、最先端を追いかけるために論文を読め!と言われる。Mendeleyという論文管理ソフトが紹介される。

そしてStyle Transferの論文が紹介されてこれを理解するように、という課題が出される。

はじめから意味不明なコードとハイレベルな難易度で戸惑う。

やってけるかな??もうダメだ!と思ったら、丁寧な日本語解説記事を見つけて救われる\(^o^)/

これらも参考になる。

なんとか実装した。

Lesson9: GENERATIVE MODELS

Perceptual Losses for Real-Time Style Transferという論文の内容が説明される。この技術は、Super-Resolutionという画質を良くする技術と、Real-Time Style Transfer という Neural Style Transferを高速化した技術の、両方に応用できる。

講義では、Super-Resolutionが取り上げられる。課題は、論文を読んで理解し、Fast Style Transferを実装せよとのこと。またもやもうダメだと思ったら、解説記事を発見。

なんとか実装した。

ノートPCの webcamから動画を取り込んで、fast style transfer で変換して、再度出力するということをやったが、ノートPCの非力なCPUでは、リアルタイムでは行かなかった。

Lesson10: MULTI-MODAL & GANS

DeViSEという論文の紹介と実装。

画像から関連する単語を抽出する試み。ResNetとword2vecを組み合わせる。

あまり理解していない。

Pythonで大規模データ(996433個の画像!)を扱うTipsとかも紹介される。ImageNetの大量画像データをスレッドやbcolzを使ってリサイズしたりする。あまりやりたくなかったので、これはJupyter Notebookを読むだけにした。

後半は、GANの説明。オリジナルのGAN, DCGANが説明される。あまりよい結果が出ない。そこで、WGANが紹介される。WGANはPyTorchで実装も公開されているとのことで、ここでPyTorch登場。

課題は、与えられたPyTouchのWGANを修正して、改善を加えること。

PyTorchとWGANという大きな課題を前に、途方にくれる。

まずは、GAN, DCGAN として、WGANというステップを踏んで学習することにした。

WGANに進んで論文読み始めたけど、この論文難しい。。数式とその証明が難しい。レクチャーでも、この論文は難しいと言っていた。先を急ぐので、WGANは後回しにすることにした。

Lecture11: MEMORY NETWORKS

前半は、最新の研究成果を追うためには論文を読むことを改めて強調される。そして、最近の研究成果を元にCNNを改良するためのたくさんのTipsとpaperが紹介される。

そのあと、k-means、Mean shiftというクラスタリング手法について説明がある。なんでここでクラスタリングなのかなと思ったら、PyTorchを使ってGPUの恩恵を受け、計算を高速化する方法が紹介される。

PyTorchはNumpyのようにデータを扱えるがブロードキャスト機能がないとのこと。そうなんだと思っていたら、v0.2.0で昨日追加された模様!link

最後に、Memory Network。これは、Facebook発のシンプルな自動応答のアルゴリズム。詳しい日本語の解説記事があった。

Lecture11から先は、明確なassignmentsがなくなり、課題としてなにをすればいいか悩む。正直、後半は完璧な理解は求めず、流しつつ進めた。とりあえず、与えられたJupyter Notebookと論文を読んで理解することにした。

Lecture12: ATTENTIONAL MODELS

k-meansの説明から始まる。Tensorflowでk-meansを実装する説明。k-meansについてよく理解していないので、ここの動画は飛ばしてしまった。(40分)

Attentional Modelsの説明とkeras実装が紹介される。はじめにencoder-decoderモデルを紹介して、これでは長文になるにつれて精度がでないねといって、Attentionモデルが出てくる。RNNや Embeddingsを忘れてしまったので、よくわからなかった。そういう人は、Lesson4,5,6を復習してねとのこと。まいったな。いよいよ 詳解 ディープラーニングを読んでみようかな。評判いいし。

(話は脇道にそれて、このDLコースのPart3はないよ、強化学習はやらない。代わりに、Part0を作って Practical machine learningをやるかも、とのこと。期待)

次は、いよいよCutting-Edgeな技術、ニューラル翻訳。予告編として、以下の論文が紹介される。

Lecture13: NEURAL TRANSLATION

ニューラル翻訳、英語からフランス語への翻訳、実はUdacityのDLNDで同じ課題をやったことがあるのだった。このときは、TensorFlowをつかった。TensorFlowは Seq2Seqのライブラリが充実していて、なんかよくわからないまま、講義のコピペで実装できてしまった。

fast.aiでは、KerasとPyTorch両方の実装が提供されている。よし学び直そうと思ったけど、やっぱり理解できなかったorz。とばし。

後半は、 Densenetの紹介。

Lecture14: TIME SERIES & SEGMENTATION

Final Lecture!

Kaggleのコンペを使って時系列データの扱いを学ぶ。Part1は主に画像データの扱いがメインだった。カグルマスターのKaggle攻略法講座が久しぶりに帰ってきた!!・・・が、真似できる気がしなかった。こうやって、カグルマスターは前処理をするのかと思った。

カテゴリカルデータをembeddingを使ってニューラルネットにぶち込む手法が参考になった。これを参考にして、自分は入門コンペのTitanicとか、House Prediction とかからはじめよう。Taxiコンペは Bengioさんが論文かいて手法を解説しているとか。

次に、segmentation(画像データをセグメントでわける処理)を学ぶ。これは、DenseNetを改良した、Transfer Learningに似たネットワークが使われる。

最後に、さらなる高みを目指して

  • コードを書こう!
  • Paperを読もう!
  • ブログを書こう!

と言われる。

ここまで、長い長い旅だった。英語力がもう少しあればと思うときが何度もあった。このPart2で得られた最も多きな、恩恵は、PyTorchと論文に触れたことだった。未消化な部分や飛ばした部分がPart2は多いので、復習しよう。

Part2で読んだPapers

論文はMendeleyで管理するのがすごく便利。

他にも、たくさん論文が紹介されたのだけれども、後半紹介された論文は、あまり読んでない。。。

26 Jul 2017, 03:34

UdacityでArtificial Intelligence for Roboticsを受けた

UdacityでArtificial Intelligence for Robotics(CS373)を受けた。

[https://www.youtube.com/embed/g-fk3RQiw5Q]

しかしながら、この講座はとても難しく、挫折した。

なので、簡単に内容の紹介と感想を書く。

動機

Udacityの Deep Learning Nanodegree を受講し終わったので、

次の講座として Robotics Nanodegreeの受講を考えている。

その間のつなぎの講座として、タイトル惹かれてこの講座を受けてみることにした。

また、最近 LEGO mindstormsを購入したので、学んだことを応用できればいいなと思っている。

内容

Googleの自動運転車の要素技術について学ぶ講座。この要素技術は、自動運転車に限らずあらゆるロボティクスについて応用できるとのこと。講座のタイトルが昔は Self Driving Car だったが今の AI for Roboticsに変わったようだ。

講師は、Udacityの創立者にしてGoogleカーのエンジニア、セバスチャン・スラン氏。すごい。

シラバスは以下のとおり。

Lesson1-3は自己位置推定(Localization)について、4,5は探索と制御について、6は地図生成だ。

  • Lesson 1: The Problem of Localization ・・・ヒストグラムフィルタについて学ぶ
  • Lesson 2: Kalman Filters ・・・ カルマンフィルタについて学ぶ
  • Lesson 3: Particle Filters ・・・粒子フィルタについて学ぶ
  • Lesson 4: Motion Planning ・・・経路探索について、幅優先探索、A*, 動的計画法について。
  • Lesson 5: PID Control ・・・経路の平滑化、PID制御について学ぶ。
  • Lesson 6: GraphSLAM ・・・ Lesson1-5まで学んだまとめ、おまけとしてGraphSLAMについて。

途中、よくわからなくなったので、参考書を買った。確率ロボティクス。スラン先生の本だ。

講座の進め方は、ミニクイズとPythonによるプログラミング課題が、説明のあとに出される。少しずつ難易度が上がっていくので、理解しやすい。そして、週の終わりにミニテストとプログラミング課題が出される。一応リポジトリを起こして、コードを書いた。

この講座、一番うれしいところは、すべての動画に日本語字幕がついているところだ。

その他、Forumが充実しているところもうれしい。が、講座が開講された2012年のころの投稿が多い。

感想

難しく、挫折した。一応、動画は最後まで目を通した。これが完全に理解できれば、君はスタンフォードの優等生だと講義でいっていた。むりだー。

少し飛ばしぎみで講義を進めていったので、深くは理解を深めようとしていないからかもしれない。

大体ひとLesson 5時間くらいかければ終わる。

無料の講座だとついつい気が緩んで真剣にとりくまないのかもしれない。

この講座は、今の Self-Driving Car NanoDegreeに内容が引き継がれているようだ。

DeepLearning Nanodegreeのあとの進路は、Self-Driving Car, Artificial Intelligence, Roboticsの3つに分かれるのだが、自分は 組込み屋なので、Roboticsに決めている。ただ、自動運転車の講座もおもしろそうだと思った、と同時に難しそうだと思った。自分には、Roboticsを挫折しないでやり遂げる能力があるのだろうか・・・。

挫折したことが悔しいし、確率ロボティクスの本も買ったことなので、いつかこの講座をやり直そう。ロボティクスでも、自己位置推定が扱われるようなので、そのときに振り返ることにする。

Path Planningや PID制御は LEGO Mindstormsで実際に試せそうだ。時間があればやってみよう。

10 Jun 2017, 07:49

実践的な強化学習のオンライン学習教材、Practical RL をはじめた

実践的な強化学習の教材、Practical RL をやりはじめた。

これはなに

HSE と Yandex SDA というロシアの大学?で教えられている強化学習のコースが、 オンライン学習のために英語とロシア語で公開されている。

教材は、オンラインで強化学習をするためのリソースのいいとこどりをしている。

各週のディレクトリに動画や pdf のリンクがかかれた README がある。

また、”実践” とつくだけに、各週の課題が Jupyter Notebook で与えられ、OpenAI Gym を活用する。

fast.ai の講座 が予想以上によかったので、実践的とかかれると期待してしまう。

強化学習のコースなのだが、最近の動向に合わせ Deep Learning(DQN) の内容も盛り込まれている。

Deep Learning のためのライブラリは、Lasagne というライブラリが推奨されている。 しかし、Tensorflow 版の課題ノートも公開されている。

シラバス

github の README から抜粋。詳しくは、元サイトへ。

前半で、強化学習の話題をカバーしている。中盤で、Deep Learning の話題が出てくる。後半はよくわからない。

week0 Welcome to the MDP
week1 Crossentropy method and monte-carlo algorithms
week2 Temporal Difference
week3 Value-based algorithms
week4 Approximate reinforcement learning
week5 Deep reinforcement learning
week6 Policy gradient methods
week6.5 RNN recap
week7 Partially observable MDPs
week 8 Case studies 1
week 9 Advanced exploration methods
week 10 Trust Region Policy Optimization.
week 11 Model-based RL: Planning

他のコースとの比較

他のコースと比較検討して Practical RL を進めようと思ったので、その理由も書いておく。

Practical RL のデメリットは、課題 の解答が公開されていないところ。

fork している人のリポジトリを覗いて自分の解答と照らし合わせようかと思ったけれども、 参考になりそうなリポジトリがあまり見つからなかった。

ということで、自分は途中で挫折する可能性が高いので、 このコースに挫折したら次にやることも考えておく。

Learning Reinforcement Learning - WildML

強化学習の主要な話題が Jupyter Notebook と共に提供されている。うれしいことに、解答付きだ。

ただいま作成中のようなのと、学ぶ方法が Sutton 本を読むことに偏っていたのでやめた。

しかし、Practical RL に行き詰まったらこっちにシフトしようかと考えている。

UCL Course on RL

ユニバーシティ・カレッジ・ロンドンの強化学習の講義資料

この動画は、Practical RL の中で何度も引用されていてみることが進められている。

なので、Practical ML を進めたらこの講義内容はカバーできるのと、 課題が見つからなかったので止めた。

追記: 2016 年のページ見つけた。課題もしたのほうにある。

CS 294: Deep Reinforcement Learning, Spring 2017

UC Barkeley の Deep Learning と強化学習を学ぶ講義資料。

強化学習に Deep Learning を使う。ライブラリは Tensorflow.

講義動画がしっかりそろっている。

課題は 4 つある。掲示板も Reddit を使っていて課題につまったときは検索できそう。

これを選ばなかった理由は、Practical RL よりも難しそうな印象を受けたから。 Deep Learning も 強化学習もわからないのに、それを合わせた内容をバンバン紹介されても消化できなさそうだ。

また 、Practical RL からもこのコースの動画や課題(hw3)が紹介されていたので、 うまくつまみぐいできるかと思ったから。

UC Barkeley CS294 Deep Reinforcement Learning

2015 年の Barkeley の Deep Reinforcement Learning

2017 年版の元になったコースだ。内容は、短くまとまっている(4つ??)

UC Berkeley CS188 Intro to AI

2014 年の Berkeley の AI コース。

レクチャー動画や課題はしっかりしている。Project もおもしろそうだ。

扱っているものは、基本的なもので Deep うんたらはでてこないので少し古さは感じる。

An introduction series to Reinforcement Learning (RL) with comprehensive step-by-step tutorials.

Git-Base のチュートリアリル。提供元団体不明。個人かな?

このチュートリアルも作成中のようだが、前半はほぼ完成している。

README とコードベースのチューとリアルなので、 それほど英語力や数学力を求められない、今までで一番やさしそうな印象を受ける。

扱っている話題は、Q-Learning, OpenAI Gym, DQN, Deep Convolutional Q-Learning, ROS などなど、おもしろそうなものばかりだ。

Udacity Reinforcement Learning

MOOC の大御所 Udacity が提供しているコース。

短い動画がたくさんある。二人の掛け合いによって動画が進んでいき、 とっつきやすい感じはある。

課題はなく、短いので、理解が足りないところを補足する目的で見てもみてもいいかも。

Reinforcement Learning: An Introduction - Richard S. Sutton and Andrew G. Barto

言わずと知れた、強化学習のバイブル。これを腰を据えて読むのがいいのかも。

第2版には、サンプルコードが提供されているようだ。ただし、解答はなし。

Udemy Artificial Intelligence A - Z

Udemy の AI コースも, 最新の話題を扱っている。セールのときに 1200 円で買った。

Module 1: "Self Driving Car"
Module 2: "Deep Convolutional Q-Learning"
Module 3: "A3C"

なんと、フレームワークは Pytouch を使う。

  • Module1 では、シミュレータ上の車のライントレースを DQN で行う。
  • Module2 では、OpenAI Gy 上で Deep Convolutional Q-Learning を学ぶ。
  • Module3 では、A3C という発展的な話題を扱う。

これで、1200 円だ。安いと思う。

Simple Reinforcement Learning with Tensorflow

TensorFlow による 強化学習の実装チュートリアル。

以下は内容。コードはここ https://github.com/awjuliani/DeepRL-Agents

  • Part 0 — Q-Learning Agents
  • Part 1 — Two-Armed Bandit
  • Part 1.5 — Contextual Bandits
  • Part 2 — Policy-Based Agents
  • Part 3 — Model-Based RL
  • Part 4 — Deep Q-Networks and Beyond
  • Part 5 — Visualizing an Agent ’ s Thoughts and Actions
  • Part 6 — Partial Observability and Deep Recurrent Q-Networks
  • Part 7 — Action-Selection Strategies for Exploration

17 May 2017, 11:00

fast.ai の Practical Deep Learning for Coders, Part1 を受けた

fast.ai が提供する MOOC, “Practical Deep Learning for Coders Part1” を受けた。

特徴

プログラマのための実践ディープラーニング入門

この講座は、プログラマのためにある。素晴らしい理念の序文を引用したい。

The purpose of this course is to make deep learning accessible to those individuals who may or may not possess a strong background in machine learning or mathematics.

We strongly believe that deep learning will be transformative in any application; as such, this course is designed for individuals who possess a background in computer programming and would like to apply these techniques to their domain of expertise.

Deep Learning は、機械学習や数学に深い造詣がないといけないというまやかしを、 吹き飛ばそうという野心を感じる。

そして、機械学習も数学もできない自分にはピッタリの講座だ!

Practical~実践の意味、Kaggler になれ!

講師を努めるのは、Kaggle のかつての President、Jeremy Howard.

TED の動画もある。

そして毎週の課題は、Kaggle に挑戦すること。 そのうち、トップ 50% に入ることが基準として課される。

トップ 50% に入るのは、正直とてもたいへんだ。 しかし、この手法を使えば入れるという種明かしを授業のなかでしてくれる。

ここでタイトルの実践の意味がわかる。つまり、kaggle のデータを使って、 実際にデータ解析をすることで、実力をつけようという意図があるのだ。

実際、以下のコンペに挑戦する。

全て無料!ただし GPU つかうから AWS でインスタンス を借りてね

この講座は無料である。state-of-the-art の内容が無料で受けられる。

しかし、GPU をつかうから AWS を借りてねと言われる。1 時間 90 セントだから安いよと言われる。

p2 タイプというのが GPU 対応らしいのでそのインスタンスを借りる。

AWS の EC2 の自動セットアップスクリプトが提供されるのだけれども、 このスクリプトがアメリカとヨーロッパしか対応してなくて、アジアがない。

しかたがないので、アメリカの EC2 のインスタンスを使う。 操作すると、距離のせいか、レスポンスが遅いが、なんとか頑張る。

floydhub が使えるという情報を見つけた。

2 時間の動画と丁寧なレクチャーノート

毎週 2 時間の動画がある。他の MOOC は動画が短く区切られているけれども、 この MOOC は 2 時間ぶっ通しである。

なので、疲れる。毎回 TimeLine の wiki ページがあるので、 自分は途中休憩をはさみながら細切れに見た。

英語(ただし英語の字幕はある)なので、聞いていてもよくわからない。

しかし、ありがたいことに、すごく丁寧なレクチャーノートの wiki と Jupyter Notebook が提供されている。

疑問点があるときは、Forum で同じことに困っている人がいるので、Forum を検索する。

なので、英語のリスニングに不安がある人でも大丈夫。

Keras 大活躍

この講座では、Python2 と keras 1.x(Backend は Theano)を使う。なぜなら、簡単にかけるからだ。

(一応、Python3, Keras2 に対応した非公式リポジトリもある roebius/deeplearning1_keras2)

今まで TensorFlow しか知らなかったけれども、 Keras をつかうと、Deep Learning のコードがすごく簡単にかける。

Keras がこの講座で好きになった。

全 7 週間で最低 8 時間は自習しましょう

講義は全 7 回ある。2時間の講義ビデオに加えて 8 時間の自習が必要。

勉強時間は平均的に 8-15 時間が一般的らしい。 なかには、15-30 時間勉強する人もいるとか。

ハードだ。でも、他の MOOC と違い、自分のペースで進めることが出来るので、 時間に追い詰められることはなく、自分が納得できるまで努力することができる。

この MOOC は自習が重んじられているように感じた。

自分はこんな感じで、各回を進めた。

  • 動画みる(2h)
  • レクチャーノートを読む(2-3h)
  • Jupyter Notebook を読む(2h)
  • Assignment をやる(???)

講義メモ

以下、各回が終わるたびにメモを書いていきました。

lesson1: Image Recognition

lesson1 の動画はうれしいことに日本語字幕がついている。

前半で、AWS の環境構築をする。全てセットアップスクリプトが面倒見てくれるので、 問題なくセットアップできた。

それから、VGG16 という imagenet のモデルを ファインチューニングして、 Dogs vs. Cats Redux| Kaggle 用にモデルをつくる。

fine-tuning については、この記事が詳しい。

課題は、上記 kaggle のコンペティション(競技会)に参加してみること。 自分が参加したときは、もう既にこのコンペが終了していた。 提出はできたので、スコアを眺めてみたけれども、どうもあまり成績はよくなかった。

lesson1 では、理論的な話はでてこないので、説明された通りに進めていけば OK.

lesson2: CNNs

前半は、lesson1 の課題の説明。Dogs or Cats コンペで 上位に入るための種明かしがされる。

後半は、CNN について。CNN の説明はガイダンスでしたよね?といわれ、 CNN の理論は飛ばされて線形問題を SGD で解くことをやる。 そのあと、Keras をつかって、線形問題を解く。

その後、Keras をつかって、スクラッチから Dogs vs Cats をかいて どうやれば精度が向上するかを実験する。

課題は、コンペで 50%以内に入る種明かしを元に、再度 kaggle に挑戦してみること。 また、vgg16 の fine-tuning による方法はいろんな kaggle のコンペに適用可能なので、犬猫以外のコンペに参加してみること。

また、課題図書で 以下を読むこと。こんなに読めないよ!!と思ったので、読まなかったけど。

てか、普通にこれだけ勉強するなんて、アメリカの学生勉強しすぎでしょ、偉いよ。

lesson3: Overfitting

前半は、CNN の復習。サブ講師のレイチェルさんがちょくちょく質問をして、講義を遮る。

後半は、Overfitting と Underfitting について。以下の手法が紹介される。

  • Data Augmentation
  • Dropout
  • Bach Normalization

そして、これらのテクニックをつかって MMIST の認識を試み、 精度 97%まで達することを示す。自分も Kaggle の Digit Recognizer で好成績を出すことが出来た。

課題は、今までの復習(CNN はここまで)を各自でやるようにとのこと。 それから、State Farm のコンペで上位 50% に入ることが課せられるのだが、 これができなかった。。

lesson4: Embedding

前半は、CNN を Excel で表現していろいろ動かしてみるデモ。

それから、いくつかの最適化手法が紹介される。

  • Momentam
  • Adagrad
  • RMSProp
  • Adam
  • Eve

これを Excel で実装したものが与えられるのだが、Excel もっていない。 LibreOffice では、VBA マクロを動作させることができない。 しかたがないので、Lecture Note と Video で雰囲気だけ感じた。

それから、State Farm のコンペの攻略法について 30 分ほど話がある。 Psuedo-labeling という手法。今週も頑張ってねとのこと。

Psuedo-labeling で検索かけたら面白いスライド見つけた。10 位だって、すごい。

State Farm の課題はサーバーのメモリエラーが発生したので Pesude-labeling の手法ができない! 上位 50%は諦めた。

State Farm が終わったら、Fisheries Monitoring のコンペが紹介される。 Vgg16 の転移学習を試したら、すぐにいい成績が出た。転移学習最強説がでできた。

最後に協調フィルタリングの紹介。Excel のソルバーを使ってデモをしていたけれども、 自分は Excel を持っていないので、試すことができない。 講義資料の ipynb で keras による、協調フィルタリングの説明もある。 ここで、embedding という概念を説明して、次の lesson の word embedding につながる。

lesson4 は Excel 大活躍だな。

lesson5: NLP

まずは、Vgg16 に BatchNormalization を適用したモデルの紹介。

次に、協調フィルタリングについて先週のノートを元に復習したあと 今回のテーマである NLP に。

センチメント分析を Embeddings をつかって実施する。 データは、IMDB という映画のレビューのデータセットを利用する。

単純なモデルから、複雑なモデルへと説明していき、精度が向上することを確かめる。

面白いと思ったのは、NLP の世界でも画像のような訓練済みのモデルを使った 転移学習ができるということだ。Glove という訓練済みのモデルを利用したりした。 日本語の訓練済みモデルが欲しいところだ。

最後に、次のレッスンの導入として RNN の簡単な説明があって終了。

lesson6: RNNs

RNN のモデルが説明される。簡単なモデルから、だんだん複雑になっていく。

文章の文字を読み込んで次の文字を推測するということをやる。

  • 3 層のモデル
  • 8 層のモデル
  • N 層のモデル
  • Sequential RNN
  • Stateful RNN

そして一通り説明が終わったところで、なんと、Theano がでてくる。

今までは実践的なことばかり教えてきて、Keras で簡単に DL を実装してきたけど、 Keras がどう動いているのかとか、低レイヤとかのことも知っておいたほうがいいよね、 というわけで、Theano による RNN の実装の説明がはじまる。

そして、次回予告として、次回は numpy で RNN を実装するよ!とのこと。感動の最終回??

lesson7: CNN Architectures

ResNet という新たなモデルが出てくる。 これは 2015 年に 現れた手法のようで、VGG モデルよりも複雑。 Input を 層を重ねたあとに Merge するというよくわからないことをやっていた。 ソースコードも提供されている。(courses/resnet50.py)

そのあとに、kaggle Fisheries Monitoring コンペの攻略法の解説。 lesson7 は、3/4 の時間を Fisheries Monitoring の解説に費やすというサービス。 Kaggle 必勝法が凝縮している講義だ。 自分は、一回動画を見ただけでは理解できなかった。

この講座はこれで最後でこれが終わったら、暇になるだろうから、 この Jupyter Notebook を何度も読んで、Kaggle で遊んでねとのこと。

そして、残りの 30 分で、numpy を使った RNN の実装と GRU の紹介。 LSTM よりも、GRU のほうが便利なので、GRU を紹介するとのこと。

難しいのが最後にきた。。keras は一行でかけるが本質を理解することが大事とのことで、 ここでも Theano による実装が紹介された。BackPropagation、復習しよう。

おわりに

この講座でおしいところは、紹介されている kaggle のコンペがすでに終わっているところだ。

今 Active な Kaggle コンペに参加して腕試ししようかと思って、入門の Titanic や Digit Recognizer にも挑んだりした。

DeepAnalytics という日本のデータ解析のコンテストサイト(Kaggle の日本版)を知った。 私は、この MOOC で学んだ技で腕試しをしようと思ってコンテストに挑戦した。そういう実力もつくのがこの MOOC だ。 自分がそういう力を数週間のうちに獲得できるとは思わなかった、順位は低いけど。

coursera で、Octave 使って Machine Learning 学んで結局何にも応用できずに終わるのならば、 この MOOC で実践的なことを学んで、Kaggle なり DeepAnalytics に挑戦したほうがいい。

Machine Learning よりも時代は Deep Learning だ。 DeepAnalytics では、参加者がどの手法や言語をつかったかが分かるのだが、 圧倒的に Python と DeepLearning が使われている。

この MOOC は実践的でかつわかりやすいところが素晴らしい。もっと知られるべきだ。 Udacity で Deep Learning Nanodegree Foundation を受講してるが、この MOOC ほうがいい。

この MOOC は Part2 もある。Part2 はもうすぐ公開予定。楽しみ!

02 May 2017, 09:38

Udemy 悪くないかもしれない、機械学習系の講座が充実。セールで大人買いしよう!

2017-05-02-183736_572x189_scrot.png

Udemy で実践データサイエンスを受けてる。これが悪くない。

初 Udemy です

初 Udemy の講座。今まで、Udemy はべらぼうな価格設定のため舐めてました。

通常の講座が 15000 円とか 25000 円とかなので、 こんな値段で購入する人いないでしょと思っていたけれども、 Udemy は 頻繁にセールをすることで有名らしい。年中セールをやっているとか。

通常の値段で購入する人は滅多にいないだろう。 私は、1200 円で購入しました。GW は 教師の日??とかいうキャンペーンをやってる。

4 月の頭にも、新生活応援キャンペーンを実施していた。

Udemy 悪くないかも

Udemy は 思っていたよりも悪くないと思う。Udemy については、 アフィリエイトのせいか、coursera や edX や Udacity に比べて宣伝のサイトがわんさかあるので、 Udemy がなにかを知りたいひとは、そのサイトへ。ベネッセがバックにいるらしい。

自分が高評価したのは、コンテンツがバラエティに富んでいるからだ。 日本語のコンテンツで探してはダメ、英語のコンテンツで検索すること。

coursera や Edx, Udacity は大学や大企業がバックについているけれども、 Udemy は個人が講座を開いているので、バラエティに富んでいる。

ここが高評価のポイント。日本語コンテンツがあるのもうれしいね。

自分が購入したもの、全部 10 $だよ

私は、以下の Machine Learning & Deep Learning の講座を全部 10 ドル 1200 円で大人買いした。

他にも、いろいろと 機械学習系の講座を購入。

その他、システムトレードに興味があるので、以下の講座を購入。

すべて10ドル。15 万以上割引で購入したと思う。もともとの価格設定が狂ってるけど。

購入した講座、全てやり切れないと思うけれども、セールに煽られて散財してしまった yo。

27 Apr 2017, 14:14

Udacity で Deep Learning Nanodegree Foundation を受講してる

Udacity で Deep Learning Nanodegree Foundation を受講してます。 -> 追記: 受講が終わりました

MOOC を受けるのは、31 回目だけれども、 Udacity Nanodegree は今回が始めて。なにしろ、学費が 599 ドル(= 6.5 万)というお値段。

13 が終わったので、少しずつまとめていこうと思う。 未完成だけれども、続きは、毎週更新する予定です。

概要

Youtube Star の Siraj Raval

日本では知られていない、Deep Learning 界の Youtube Star, Siraj Raval が Deep Learning の手法を教えてくれる。

動画がとにかくおもしろい。まずは動画紹介。

授業の流れ

授業は、Siraj さんと mat さんの動画を元に進められる。

  • Siraj’s introductory video & One hour coding session
  • Additional lesson(s) from Mat & other Udacity experts

毎週 mat 先生の動画が公開されて、それを見てミニクイズやミニプロジェクトを解いていく。 それとは別に、siraj さんのライブコーディングセッションが youtube で放送される。

Projects

毎月一回、Project が assignment として課される。

  • Project 1 Your First Neural Network
  • Project 2 Image Classification
  • Project 3 Generate TV Scripts
  • Project 4 Translate a Language
  • Project 5 Generate Faces

どんな課題か見てみたい人は、github の問題用リポジトリを参照するのがよい。

project の解答 を提出すると、Udacity のレビューアーにレビューされる (ここが驚いた。高い学費を払っているだけあって、手厚いサポート) 解答内容が不十分だったり、間違っている場合は、リジェクトされて再提出が求められる。

わからない場合は、フォーラムを見たり、slack で議論したりする。 slack には、なんと#Japan のチャンネルがあり、日本語 OK.

受講者人数

1 月に初めのコースが始まり、3 月に 2 回目のコースが始まった。自分は 3 月 から参加。

登録者数は 1 月が 5000 人くらい?3 月が 1500 人くらい(slack の人数より)

日本人は、50 人くらい。

Syllabus

1 月と 3 月では、シラバスの内容が少し違う。今後も feedback を元に変わる可能性あり。

Week 1: Introduction to Deep Learning
Week 2: Model Evaluation and Validation
Week 3: Graph computations
Week 4: Intro to TensorFlow
Week 5: Deep Neural Networks
Week 6: Convolutional Networks
Week 7: Recurrent Neural Networks
Week 8: Word Embeddings
Week 9: Using TensorBoard
Week 10: Text Generation
Week 11: Sequence to Sequence Generation
Week 12: Transfer Learning
Week 13: Reinforcement Learning
Week 14: Autoencoders
Week 15: Generative Adversarial Networks (GAN)
Week 16: Image Generation

扱う手法は、NN, CNN, RNN, GAN と,Deep Learning の主要な手法をカバーしている。

扱うトピックは、 感情判定、画像識別、株価の予測、テキスト生成、 Word2Vec, 自然言語処理、音楽生成、チャットボット、 ゲームプレイ、画像生成 …

難易度と学習時間

シラバスによると、8-12 時間の勉強時間の確保が必要とのこと。 自分の場合は、だいたい 10 時間くらい勉強すれば消化できた。

難易度なのだけれども、今のところは難しくなく、ついていくことが出来る。 複雑な数式もでてこないので、高校生だって受けることが出来ると思う。

CNN は、難しい部分は tensorflow に任せてしまい、 tensorflow の使い方を学ぶ印象を受けた。

Siraj’s Live Coding Session

Siraj さんのライブコーディングでは以下のトピックがあつかわれる。

  • Week 1 (329): Linear Regression
  • Week 2 (45): Tensorboard
  • Week 3 (412): Reinforcement Learning with Games
  • Week 4 (419): Image Compression
  • Week 5 (426): Visualizing Networks (GAN)
  • Week 6 (53): Generative Models (GAN)
  • Week 7 (510): Classification
  • Week 8 (517): Dimensionality Reduction
  • Week 9 (524): Data Visualization
  • Week 10 (531): Math terminology
  • Week 11 (67): Cloud Computing overview (AWS, google cloud, etc.)
  • Week 12 (614): Anomaly Detection
  • Week 13 (621): Stock Prediction
  • Week 14 (628): Video Generation
  • Week 15 (75): GANs for audio generation
  • Week 16 (712): GANs for video generation
  • Week 17 (719) : Probabilistic Programming

学習メモ

以下は、各回の概要をメモしたもの。参考までに。。。

  1. Neural Network =================

week1: Introduction to Deep Learning

はじめに anaconda や 線形代数の基礎と numpy、 Jupyter Notebook の使い方などが紹介される。

そのあと、ニューラルネットワーク。 パーセプトロンからはじまり、Gradient Descent, Backpropagation が説明される。

input と output レイヤだけの初歩から説明されて、 次に hidden レイヤが説明されるので、とてもわかりやすい。

Project1: Your First Neural Network

ニューラルネットワークを組んで、自転車の貸し出し台数を予測する。 numpy だけでニューラルネットを組む。

自分はゼロから作る Deep Learning を途中まで読んだのだけれども、 このプロジェクトのやろうとしていることは、この本と同じ。 よい復習にもなったし、逆にこの本を読んでいたから理解が助かった。

Project1 ができなかったら、refund してこの講座を諦めようと思っていた。 なんとか提出できて、リジェクトもされなかったので、このまま受けることにした。

(Machine Learning Nanodegree を受けている Studyplus の友達は、 Project の出来が悪いとリジェクトされて再提出を求められるといっていた)

  1. Convolutional Neural Network ===============================

week2: Graph Computations

TensorFlow の基礎となる Graph Computations を学び、 MiniFlow という Tensorflow のミニバージョンを自作する。 といっても、これは week1 の復習 Quiz のようなもの。 また、手取り足取りの説明なので、すごく簡単。

またこの週では、データの前処理, モデルの評価や Validation にも触れられる。

モデルの評価は、coursera ML でやったものと同じ。

week3: Sentiment Analysis

センチメント分析がテーマ。

Andrew Trask さんが登場し、ニューラルネットワークを利用して、センチメント分析を実施する。 この講義の目的は、いかにしてニューラルネットワークの精度を向上させるかと学習を高速化させるか。

はじめは、精度が 65%くらいしかないのだが、 あの手この手の工夫をすることで 95%以上にまでもっていく。 さらには学習の速度もはじめにくらべると爆速にもっていく。

チューニングでこれほど差がでるものかと驚いた。

また、この週では、TFLearn というライブラリが紹介される。 これをつかうと、ニューラルネットがシンプルに数行で構築できる。 バックプロパゲーションとか頑張ったのはなんだったんだよ!と思うほど、驚く。

week4: Intro to TensorFlow

TensorFlow の登場。やっと 4 週目にしてでてきた感がある。

TensorFlow の基礎文法をまなび、基本的な 2 層のニューラルネットを組む。 また、ロジスティック回帰について学ぶ。

この週は、今までで一番楽な週だった。

week5: Deep Neural Networks

Google AWS で GPU をつかう方法が示される。 この DLND をとっている生徒は、100 ドルの無料クーボンがもらえるのだ。 これで AWS で GPU を使って計算を高速化できる。また、FloydHub も紹介される。

といっても自分は別の用途で AWS をガンガン使ってしまったのでピンチ。

TenosorFlow で前回は、2 層のニューラルネットワークだったが、 それを 3 層のニューラルネットワークにする。

と同時に、オーバーフィッティングを防ぐ方法として、 正則化と Dropout の手法が紹介される。

week6: Convolutional Networks

Convolution Networks の説明。 畳み込みとプーリングの説明があったあと、 tensorflow でどう実装していくかが解説される

重みやバイアスの初期化方法についても言及される。

Project2 Image Classification

CIFAR10 の画像データを CNN で分類するというプロジェクト。

ネットワークは、week6 で与えられたコードを少し工夫すれば構築できるけれども、 ネットワークのパラメータを調整して精度をだすことに苦戦した。

最終的には、67% の精度がでた。合格ラインは 50% と低めなので、いい感じ。

  1. Recurrent Neural Network ===========================

week7: Recurrent Neural Network

Recurrent Neural Network の説明。 といっても、簡素な説明なので、ほとんどわからなかった! 参考リンクを示されてここ読んでおいてね、ということだった。

実践的な演習として、アンナ・カレーニナの小説を元に、文章を生成するものが 与えられる。TensorFlow を使って、LSTM を実装するのだが、 これが答えも一緒に示されるので、結構簡単に実装出来てしまう。

理論はまったくわからないが、実装出来てしまうので、これでいいのか??

別枠として、LSTM で株の予想をしようという Siraj さんのビデオがある。

week8: Word Embeddings

Word Embeddings がテーマということで、Skip-gram モデルの word2vec を自前で実装するというもの。

例のごとく、サンプルコードが与えられて、穴埋めしていく形で進められる。

論文やブログのリンクがはられて、読んでおいてねとのこと。外部リンクを読むことが前提みたい。

この日本語記事がイラスト付きでとてもわかりやすかった。大感謝!!

text8 という英語のテキストデータを学習する。 ニューラルネットの仕組みは簡単だったが、前処理が難しくて理解度がうすい。

  • SubSampling
  • Negative sampling

この Word2Vec を利用して、自分の Twitter アカウントを分析してみた。

Siraj さんのビデオは Style Transfer について。

これは、CADL で以前勉強していたので、深くは調べなかった。

FloydHub 創立者たちとのインタビュー動画もボーナスとしてあった。なんか、Udacity は FloydHub 推奨しているみたい。

week9: Using TensorBoard

TensorBorad を使う方法について。

TensorBoard は精度や Loss を可視化するのに便利だと思っていた。 今まで、闇雲にハイパーパラメータを探していたのだけれども、TensorBoard を使って探す方法を学んだ。

Keras でも TensorBoard は使えるみたい。

Siraj さんの動画は、Music Generation(音楽生成)。とても興味があるトピック。待ってました\^-\^

LSTM で音楽を学習させてみようということなのだけれども、 動画はよくわからなかった。しかし、ここで諦めてはいけない。 Siraj さんの動画は大抵数行のコードと大量の参照リンクなので自学自習が必要なのだ。

いろいろディープラーニングと音楽生成の関係を調べていくうちに、 char-rnn で音楽生成をしている事例がたくさん見つかった。なので、私もやってみた!

week10: Text Generation

テキスト生成。week8 では、文字ベースの文章生成をあつかったけれども、 ここでは単語ベースの文章生成。

この週では、Project3 が課せられたので、まずは準備として、 RNN による センチメント分析をおこなった。 複数の input に対して一つの output を出力する RNN.

センチメント分析は week3 で扱ったのだが、それを RNN という別の角度から再実施する。

Project3 Generate TV Scripts

有名テレビアニメ、ザ・シンプソンズのテレビスクリプトを学習し、 word ベースの RNN を使ってテレビスクリプトを生成しようという Project.

いつもながら、プロジェクトは演習のコピペでできてしまうので、簡単。

week11: Sequence to Sequence/Chatbot QA System with voice

複数の Input に対して、複数の Output を返す RNN のアーキテクチャの紹介。

この週は、わけがわからなかったな。はじめての挫折。

week12: Transfer Learning

転移学習。このトピックは大事。Kaggle などのデータ分析コンペで有用な手法。

この週の課題は、外部のリポジトリを使って tensorflow で vgg16 を使って、花の分類をする。

私は、fast.ai でこの転移学習についてたくさん学んでいたので、この週では学ぶことは少なかった。 逆に言えば、fast.ai の lesson1 をみることをつよくオススメしたい。lesson1 には日本語字幕もある!

week13: Reinforcement Learning

強化学習。ここでは、Deep Q-Network が紹介される。 強化学習はそれ自体大きな一つの分野なので、一週間で紹介するには無理があるのではと思った。

このあたりから、自分の興味は、Deep Learning から強化学習に移りはじめる。 なので、GAN はあまり理解できていない。

演習問題では、OpenAI Gym の CartPole 問題を Tensorflow を使って DQN でとく。 かなりいい結果がでて驚く。

これを参考に、Keras や Numpy で再実装を実施してみたのだが、思うように結果が出なかった。

Project4 Translate a Language

機械翻訳。英語からフランス語への翻訳を実施する。

難しそうだけれども、いつも通りスケルトンのコードが与えられて、week11 を参考にして穴埋めしていく。

フランス語がわからないので、翻訳結果が正しいのかはわからないけれども、一応できた。

この課題を参考に、チャットボットをつくってみたのだけれども、

<PAD><PAD><PAD><PAD><PAD><PAD>…

しか応答してくれない。 なにが悪いのかもあまり理解していないので、追いきれない。 チャットボットは後味が悪いけれども、ここまでにする。

  1. Generative Adversarial Network =================================

week14: Autoencoders

自己符号化器。

week15: Generative Adversarial Networks

ここから GAN が始まる。

Deep Learning Book の著者, GAN の提唱者、 Ian GoodFellow さんが登場し、GAN について解説してくれる。若い!

MNIST を GAN で生成することをする。すごいけど、仕組みが複雑で難しい。。。

week16: Image Generation

前回に引き続いて、GAN. Deep Convolution GAN(DCGAN) が説明される。

CNN でつかった Convolution の関数が出てくるところ意外は、MNIST の GAN と同じ。 ただし、プーリング層はでてこない。

また、Batch Normalization が登場する。これが GAN の性能をよくする。

看板の数字??を題材にして、DCGAN をする演習がある。

Project5 Generate Faces

最終課題は、DCGAN で MNIST と CelebA のデータセットを使って、画像生成をすること。

GAN をあまり理解していないのだが、DCGAN の回の Jupyter Notebook のコピペでなんとか乗り切った。

まとめ

この NanoDegree は超初心者向け、簡単

広範囲をカバーして難しそうなイメージを持っていたけれども、実際やってみると、難しい数式はでてこない。

講義は Jupyter Notebook で手取り足取りな丁寧さでかかれている。

Project は Lecture の Jupyter Notebook のコピペでクリアできたり、簡単。

ひとによっては、この難易度では物足りないのではないかとすら思う。自分にはちょうど良いレベル。

こんな自分でもできました

はじめ自分は DeepLearning はとても難しいものだと思っていた。

なので、こういうステップを踏んで入門しようと思っていた。

  1. 大学 1,2 年の数学を復習
  2. 機械学習を勉強する
  3. Deep Learning を勉強する

しかし、いざ Deep Learning の世界に踏み込んでみると、 数学すら怪しい自分でも、なんとかついていくことができた。

普通に CNN をバリバリ実装して kaggle にチャレンジとかできている。

fast.ai の理念

現在、Udacity DLND の裏で fast.ai が提供する MOOC, Practical Deep Learning for Coders というものを受けているのだけれども、 この MOOC の理念が素晴らしいので引用したい。

The purpose of this course is to make deep learning accessible to those individuals who may or may not possess a strong background in machine learning or mathematics.

We strongly believe that deep learning will be transformative in any application; as such, this course is designed for individuals who possess a background in computer programming and would like to apply these techniques to their domain of expertise.

つまり、Deep Learning は 数学者や物理学者のためのものでなくて、 CS のバックグラウンドを持つ全ての人に開かれるべきだという主張だ。

なんか、fast.ai の宣伝になってしまったが、Udacity の DLND はそういう部分がある。 理論は抑えるものの、より実践的に tensorflow を利用して現実につかっていくかにフォーカスしているように思える。

Deep Learning で世界をハック

恐れずに、Deep Learning に飛び込んでみよう。きっと面白いハッキングができるようになるはずだ。

Udacity のコースは、面白いハッキングの材料を提供してくれるはずだ。

以上、Happy Hacking!!

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 を作成

元ネタ

出来上がったもの

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 の講座を理解して、応用したい。

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 はひとまずでなくなる。