機械学習に独学で挑む

非情報系理系大学生が独学で機械学習に挑みます

『PythonとKerasによるディープラーニング』はディープラーニングを使ってみたい人は必読!

 

読んでみて

 

PythonとKerasによるディープラーニング

 

 私はこれまで機械学習アルゴリズムはある程度学んできていたのですが,フレームワークの使い方など,「実際に使ってみる」という面においてはかなり弱かったです。

 この本は表紙にもあるように,構造の理解よりもディープラーニング使えるようになるためには非常に良いものでした。読んでみた後では,この本を参考にすればどんなタスクもある程度の精度を出せるのでは?と思ってしまうほどです。

 完了には20時間ほどかかりました。

 機械学習の学習リソースとしては

  • 分かりやすさ      ★★★★☆
  • 数式の少なさ      ★★★★★
  • プログラミングの簡単さ ★★☆☆☆

です。

対象読者

 読むのをお勧めするのは,

です。理論より実践向けの本なので,

にはお勧めできないです。理論を学びたい方は以前紹介したリソースの方が良いと思います。

machine-learning-bymyself.hatenablog.com

machine-learning-bymyself.hatenablog.com

 

 

内容の評価

分かりやすさ ★★★★☆

 この本の著者はKerasの開発者なので,Kerasに精通しています。また,所々で著者がKaggle(機械学習コンペティション)に参加している,という話もでてくるように,著者もディープラーニングを使いまくっていますその上でのトライアンドエラーやベストプラクティスを丁寧に書いてくれています。また,本文中にはKaggleでディープラーニングを使うだけでなく,使って好成績を残せるようなノウハウを詰め込んだ,と書かれています。

 二値分類,多クラス分類,回帰分析はもちろん,データ型としてテキストシーケンス,時系列データ,画像など様々なものを扱ってくれており,実際にディープラーニングを応用したくなったときには,この本を見ればどこかに似た例が出てきていると思います。書かれているコードも実践的なので,ほとんど真似するだけで学習,予測まで漕ぎ着けることができると思います。

 

数式の少なさ ★★★★★

 数式はほとんど出てこないと言って良いでしょう。一応疑似コードの形で説明されている部分はあるにはありますが,微々たるものです。

 ただ,逆に言えば数学的な説明はあまりないとも言えるので,理論的な解説を求める方は他のリソースで学ぶ方が良いでしょう。この本はあくまでもディープラーニングを使うための本ですね。

 

machine-learning-bymyself.hatenablog.com

 

 

プログラミングの簡単さ ★★☆☆☆

 これまで読んできた本に比べるとちょっと難しい気がしました。

 とはいえ,Kerasを用いてニューラルネットワークを構築し,学習させ,結果を表示するのはフレームワークがよくできているのでとても簡単です。

 難しく感じたのはデータの前処理の部分ですね。テキストシーケンスを各サンプルをベクトル化した上でone-hotエンコーディングし,単語とインデックスをつなげる部分や,時系列データにおいて,バッチサイズごとに特徴量と正解データを生成するジェネレータを実装するなど,結構難しく,自分でコメントを書きながら実装しました。

 難しいと感じる,ということは自分の力だけでは実装できなかったということですから,サンプルコードとして実装してくれているのは実際に他の例に応用する際に非常に役に立ちました。ジェネレータなんて普段あまり書かないですよね…。

 

その他の特徴

扱っている幅が圧倒的に広い

 もちろんニューラルネットワーク限定の話ではありますが,ニューラルネットワークを用いた話はかなり網羅されていると言って良いと思います。

 先述の通り,一般的な二値分類や回帰はもちろん,画像処理やテキスト分析,時系列データ分析も扱っていますし,さらにはジェネレーティブディープラーニングディープラーニングを使って新しく何かを生み出す技術)まで紹介されています。流石にこの辺りは深くは掘り下げられていないですが。予測ではなくクリエイティブな用途にディープラーニングを使いたい方には参考になると思います。

 

具体的なベストプラクティスが多い。

 「○○で困ったら△△を試せ」のようなベストプラクティスが山のようにあるので,困ったときにはこの本を見てさらにはコードも真似してより良いモデルを作ることができます。

 一つ前の扱っている幅が広いことと合わせると,このうまくいかない時は一冊のどこかにヒントがあると言っても過言ではないと思います。ほとんどの種類のニューラルネットワークのタスクの精度をかなり上げられるのではないでしょうか。

 

最後に

 個人的にこの本を参考にしてとても助かっているので少し贔屓目が入っているかもしれませんが,非常に良い本でした。これまでは理論ばかりで使うことができていませんでしたが,かなり大きなステップアップをできたと感じています。

 「ディープラーニング使ってみたい!」という方は是非読んでみてはいかがでしょうか。

『ゼロから作るDeep Learning 2』読んでみた,むずい。

読んでみた感想 

ゼロから作るDeep Learning ❷ ―自然言語処理編

 『ゼロから作るDeep Learning』に続いて読んでみたのですが,率直に言って難しかったです…。読んでいてもちろん面白かったのですが,1と比べると苦しみながら読んでいた感が否めません。何が難しかったのかはまた後半で分析したいと思いますが,同じくらいの難易度で読めるとは思わない方が良いですね。3はもっと難しいのでしょうか?

 完了には15時間程度かかりましたが,私はきちんと理解できないまま写経を続けてしまった部分が多々あるので,十分に理解するにはもっと時間が必要でしょう。

 機械学習の学習コンテンツとしては

  • 分かりやすさ      ★★★☆☆
  • 数式の少なさ      ★★★☆☆
  • プログラミングの簡単さ ★★★☆☆

です。

 

対象読者

 読むと力になると思われるのは,

ですね。ゼロつく1を読んでいる方がほとんどだと思いますが,読んでいれば大きな流れ,雰囲気は同じなので戸惑うことはないと思います。1を読んでいなくても読めるとは思いますが,上記の通り計算グラフの概念は理解していないとかなりきついと思います。あとは当然基本的な微分と行列の積はある程度は知っている必要がありますが,この本を読もうとしている人は問題ないでしょう。

 

大まかな流れ

 この本の大まかな流れを書きました。本当にとても大まかな流れなので全然わからないかもしれません。ただ,大事なワードは青色で強調したので,その中に興味のあるものがある方はぜひ読んでみてはいかがでしょうか。

1章 ニューラルネットワークの復習

 主にゼロつく1で扱った内容をざっくりと振り返ります。基本的な数学やPythonの文法,ニューラルネットワークの学習と推論などを扱っています。

 ここの内容を知らない人はこの部分だけを読んでも十分理解できないと思うので,他の書籍等で勉強してから戻ってくることをお勧めします。

2章 自然言語と単語の分散表現

 ある単語について,周辺にある単語(コンテキスト)の出現回数を様々な文章で調べることによって(カウントベースの手法で)単語をベクトル化する手法を学びます(例えば,"apple"を[0.8, 0.07, 0.02]に変換するなど)。

3章 word2vec

 2章の方法では,ベクトル化する際の計算量が実用上耐えられないほど大きくなってしまうので,「推論ベースの手法」によってニューラルネットワークを用いて単語のベクトル表現を学習させます。この手法をword2vecと呼び,それを用いてCBOWというモデルを作っています。

4章 word2vecの高速化

 3章では2章よりも少ない現実的な計算量で単語をベクトル化しましたが,より効率的な実装を行うことでさらに高速化します。手法の名称としては,EmbeddingレイヤとNegative samplingを実装します。

5章 リカレントニューラルネットワーク(RNN)

 3章のword2vecでは,前後の2つの単語から目的の単語を推論させたのですが,目的の単語の前の全ての単語から推論させるのがリカレントニューラルネットワークRNN)です。

6章 ゲート付きRNN

 5章の単純なRNNでは学習を行う際に「勾配消失」や「勾配爆発」が起こってしまい,うまく学習できないことがあります。そこで勾配爆発には「勾配クリッピング」,勾配消失には「記憶セル」と「ゲート」を導入することで対応します。このようなモデルをLSTMと呼びます。

7章 言語モデルを使った文章作成

 6章で実装したLSTMを用いて実際に"you"から始まる文章を生成させてみます。ある程度意味の通る文章が生成されて感動します。

 また,これまではある単語の前までの情報を与えることでその次を推論させていました(時系列データから単一のデータ)が,次に日本語から英語への翻訳などの時系列データから時系列データへの推論を扱います。ここで用いるのは2つのRNNを利用するseq2seqという手法です。

8章 Attention

 7章の手法では,新しい時系列データを生成する際に,元の時系列データのどの部分に注目(Attention)するべきなのかをうまく伝えられません(例えば「吾輩は猫である」を英訳する際に,1単語目("I"を推論して欲しい)には元の文章の「吾輩」の部分に注目できるのが望ましい)。

 8章ではAttentionレイヤを実装することでこの問題を改善します。

 

内容の評価

分かりやすさ ★★★☆☆

 これは分かりやすさというより内容の簡単さと言った方が適切です。日本語だけの説明は非常に分かりやすいです。様々な概念や,手法の導入理由などを大まかに理解するのはとても理解しやすかったです。ただ,私の頭が追いついていないのか,扱っている内容が難しいからなのか,実装する際には「どうしてこう実装するんだ?」と戸惑うことがよくありました。(結局きちんと理解できていないということなんでしょうね泣)

 ゼロつく1と比べるとかなり難しかったように感じました。

 

数式の少なさ ★★★☆☆

 数式はそれほど多くはないです。特に,ゼロつく1を読んでいればびっくりするような難しい関数などは出てこないです。逆に言えばゼロつく1で学んだ内容はバンバン出てくるので,理解が曖昧な部分はしっかりと復習してから読まないと苦労すると思います。

 私はAffineレイヤなどの誤差逆伝播法がよくわかっていなかったので,この本の中で頻出で苦労しました。やっぱり微分は大切…。

 

プログラミングの簡単さ ★★★☆☆

 使っているPythonの文法一つ一つが難しいわけではないので,その意味ではむずかしくないです。しかし,実装しようとしているクラスがかなり複雑で巨大になってくるに従って実装も複雑になっていくので体感としてはかなり難しく感じました

 結局内容をきちんと理解していないと実装なんかできるわけないよねってことですね。頑張ります。

 

その他の特徴

知らないときつい知識が多い

 前述の通り,ゼロつく1の内容は既知として進むので,読んでいないと厳しいものがあると思います。しかもかなり当然のものとして飛ばされてしまうので,例えば「Affineレイヤってなんだ?」などの部分があると置いていかれてしまうと思います。自分も含め,1をしっかり読み込んでから2に進んだほうがいいですね。

 

GPUを使う部分がある

 この本の中には普通のパソコンに積んであるCPUだと数日かかるような学習が数ヶ所あります。GPUを使えば数時間程度で完了するのでGPUを使いましょう。と言ってもGPUを持っていない人が多数派だと思います。「Google Colaboratory」を使えば誰でも無料でGPUを使えるのでぜひ利用してみてください。

 

総括

 ゼロつく1は思ったよりすんなり読めたので油断していました。でも1の中にもまだしっかりわかっていない部分があると気づいただけでもよしとしたいと思います。また1から読み直したいと思います。

 難しいですが読んでてとても面白かったのは1と同じです。1を読んだ人は2も読んで後悔することはないはずです!

『Python機械学習プログラミング』を読んでみた

 

読んでみた感想

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

 こちらも評判が良かったので読んでみました。私は2冊目に読んだのですが,2冊目にはぴったりな本でした。1冊読んだだけでは曖昧にしか理解できなかった理論を少し深掘りしてくれるような本です。この本の一番良いところは数式の説明がわかりやすく機械学習を数式的に理解する一歩目には最適だと感じました。

 完了に35時間かかりました。

 機械学習の学習コンテンツとしては,

  • 分かりやすさ      ★★★★☆
  • 数式の少なさ      ★★☆☆☆
  • プログラミングの簡単さ ★★★☆☆

です。お勧めの対象者は,

  • 入門書を1冊または,Couseraのコースを終わらせて次のステップに進みたい人
  • 機械学習の数学にはほとんど触れて来なかったが,少しずつ数式を使って理解していきたい

に当てはまる人には特にお勧めです。AI,機械学習が初めての方にはやや難しいかもしれないので入門書かCouseraの機械学習のコースを受けてから読んでみるのがお勧めです。 

machine-learning-bymyself.hatenablog.com

 

内容の評価

分かりやすさ ★★★★☆

 2冊目以降に読むことを考えれば説明はとても分かりやすかったです。基本的な概念(分類と回帰の違いや,one-hot-encodingなど)の説明は簡単に済ませ,少し踏み込んだ内容(PCAの処理の数学的な解説や,ニューラルネットワークの誤差関数など)について詳しく解説してくれています。

 また,具体例を使った説明も多いですし,図やイラストも見やすいので視覚的にイメージしながら読めました。

 個人的にはこの本の勾配降下法の説明は数式を含めてとても分かりやすく感じました。

 

数式の少なさ ★★☆☆☆

 数式はそれなりにありますが,先述の通り数式がこの本の1番のポイントです。

 特に勾配降下法は,応用したものを含めて頻繁に利用されているシステムですが,数式無くしては理解不可能と言えるでしょう。この勾配降下法を実際にパーセプトロンやロジスティック回帰で使ってみる部分の数学的説明は非常に分かりやすかったです。他にも,主成分分析(PCA)や,ニューラルネットワーク誤差逆伝播法についても(難しいながらも)数学的に解説されており,雰囲気だけで無く理論で理解したい人にはかなりお勧めです。

 全くの初心者が取り組むような書籍(私はPythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎を読みました)ではほとんど数式が出て来ないことが多いです。CouseraのMachine Learningのコースでは数式が数多く出てくるものの,難しい部分に関しては「ここは難しすぎるから,数学に詳しくない人は無視していいよー」とAndrewが流しています。そのような部分をもう少ししっかり学びたい人にはぴったりだと思います。

 

プログラミングの簡単さ ★★★☆☆

 基本的にはそれほど難しくはありません。ただ,ニューラルネットワークの学習器など,かなり長いクラスを実装するのは少し大変でした。また,MatplotlibやNumPyの少し変わったメソッドを使ったりすることがあったのでそこは調べながら対応しました。

 コード量はかなり多いです。これを全部写経すればかなり力になると思います。特にパーセプトロンのパラメータの学習につかう勾配降下法の実装は実際にコードを書いてみて理解が深まりました。個人的にはコード量が多いのは楽しくて良かったです。

 

その他の特徴

1冊目にはお勧めできない。2冊目に最適。

 基本的な概念は既知のものとして始まっている(と読者は感じる)ので,全くの初心者には難しいと思います。2冊目としては1冊目の内容を補完する上でこの上ない学習リソースと言えるでしょう。

 

TensorFlowやCNN,RNNは理解できない

 表紙を読むとこれらが理解できそうな気がしますが,はっきり言って読んでも全くわかりませんでした。たしかに説明は書いてあるのですが,前提知識が足りないのか,何をやっているのかコードを見ても日本語を読んでもさっぱりわからず,写経する意味も感じませんでした。

 TensorFlowに関しては,計算グラフという概念がほとんど説明されないまま解説が始まってしまうので,置いていかれたのだと思います。

 これらについてはこの本で理解しようとせず,他の本などのリソースで理解するべきでしょう。

 ちなみに,計算グラフに関してはゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装が非常にわかりやすかったのでお勧めです。

 

machine-learning-bymyself.hatenablog.com

 

総括

 2冊目に読んだのでとても分かりやすくステップアップを実感できて最高でした。やはり数学的な理解も大切なんだな,と気付かせてくれた一冊でもあります。

 初心者からのもう一歩に迷っている方は是非読んでみてはいかがでしょうか。

AI、機械学習の独学に使った数学の参考書、問題集とそのレビュー

 

機械学習の独学に数学は必要か

 よくAIを勉強する前にまずは数学をしっかり勉強しろ、などと言われます。機械学習の現在の人気は一過性のものであり、(すでにブームは過ぎたとも…)応用の利く数学をまずは勉強するべきだという主張は頷けます。

 その話を真に受けた私はある程度は基本的な数学を学んだつもりです。しかし、私が個人的に独学してきたうえで、初心者が機械学習を独学するためだけならそれほど高度な数学の知識は必要ないと感じました。

 この話はまた別の機会にするとして、ここでは純粋に使った教科書と問題集のレビューを書いていきたいと思います。

 

線形代数

教科書

スバラシク実力がつくと評判の線形代数キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

スバラシク実力がつくと評判の線形代数キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

 まずは簡単と評判だったマセマです。教科書と問題集が一緒になった感じでした。問題の解き方は載っているので、この本を見ながらなら載っている問題は解けるようになるといった感じでしょうか。「すぐわかる」と謳っていますが、とにかく薄いので私には後半は分かりませんでした。正確には問題はとりあえず解けるので分かった気になりましたがその後で教科書を読んだ際に分かっていなかったことに気づきました。

 一言で表すならうっすい公文式だと思います。

 6時間くらいで終わらせました。

 

線型代数学(新装版) (数学選書)

線型代数学(新装版) (数学選書)

 その次に有名な佐武線形とやらに挑戦してみましたが、置換の部分が理解できず挫折。それまでの部分はとても分かりやすくてよかったですが、すぐ離脱してしまいました。

 5時間くらいしかやっていません。

 

線形代数学(新装版)

線形代数学(新装版)

 ということでマセマの後の教科書としてはレビューで佐武線形より簡単と評判だったこれを使いました。とても良かったです。基本的にはこれを読んでおけば間違いないと思います。行間を埋める必要もほとんどなく、難しいところはかなり丁寧に説明してくれています。そして図も多用されており、視覚的にも理解しやすかったです。ほかのレビューでは厳密性に欠ける、などと書かれていたのですが、私は全く気になりませんでした。

 30時間くらいで1周しました。

問題集

明解演習 線形代数 (明解演習シリーズ)

明解演習 線形代数 (明解演習シリーズ)

 問題集にはこちらを使いました。章の初めに定理集があり、それに続いて例題、練習問題があります。

 定理集を見ながらまずは自分の力で例題を解き、解けなければ模範解答を読む、というスタイルで取り組みました。その後で練習問題を解くのですが、7割くらいは例題とほとんど同じ、3割は例題を少しひねったものになっていて、たまに全然わからないものもあったりして楽しかったです。

 例題の模範解答はかなり丁寧で分かりやすいのでお勧めです。練習問題に関しては少し飛躍がある部分もあるのですべて理解したい、という方は気を付けてください。

 30時間くらいで1周と間違った問題の2週目を解きました。

 

微分積分解析学

教科書

微分積分キャンパス・ゼミ 改訂6

微分積分キャンパス・ゼミ 改訂6

 微積もマセマから入りました。微積に関しては説明もとても分かりやすく、すんなり理解できました。おすすめです。

 しかし、これも扱う内容があまりに少ないです。極限、微分積分全てにおいてかなり基本的な内容までで終わっています。もう少し数学を学びたいならほかの教科書で勉強する必要があると思います。

 6時間くらいで終わりました。

 

基礎数学2解析入門1

基礎数学2解析入門1

 マセマの次は評判の良かったこちら。

 しかし、はっきり言って全くお勧めできません。

 もちろん書いてある文字を読むことはできるのですが、全然頭に入ってきませんでした。書いてある証明を読んでも行間が広く、納得できないことが多かったです。

 個人の感想としてはこの教科書は授業ありきのもので独学には向いていないと感じました。定理とその証明がただ羅列してあるイメージです。

 このままでは分かった風になってしまうと思い、早い段階で諦めました。

 10時間くらいで諦めました。

 

定本 解析概論

定本 解析概論

 ということで次はこちら。レビューでは少し表現などが古いとあったので敬遠していたのですが、結論から言って最高でした。

 定理とその証明の羅列ではなく、自学用の講義形式となっているので理解しやすいように話が進んでいきます。

 証明も納得できる流れで書いてありますし、行間も程よいと感じました。

f:id:btc_arbitrage:20200708225731j:plain

(勉強時のノートの一部。教科書を読むときには定理とその証明は写経するようにしていました。黒い部分は教科書を写している部分で青い部分は行間が空いていると感じたときに自分で埋めた部分です。)

 定理の間に具体例や発展的な内容が数多く含まれています。それらはかなり難しいものも多く、読んでも理解できなかった部分や読んでいない部分もあります(が、あまり気にしていません)。

 また、最後のルベーグ積分は難しそうだったので読みませんでした。ルベーグ積分を除いて2周しました。50時間くらいかかりました。

 

問題集

新版 演習微分積分 *1

新版 演習微分積分 <a href=*2" title="新版 演習微分積分 *3" class="asin" />

 微積の問題集はまずはこれをやりました。例題の解答はとても丁寧で分かりやすいです。おすすめです。

 難易度、網羅度はマセマよりはうえ、次の明解演習よりは下、といったところです。例題の模範解答を読めば基本的には練習問題も全て解けました。

 注意としてはεδは扱っていないところです。もし大学等の定期試験に使うのであれば気を付けたほうがいいと思います。

 25時間くらいで1周と間違った問題は2週目を解きました。

 

明解演習微分積分 (明解演習シリーズ)

明解演習微分積分 (明解演習シリーズ)

 その次にこれをやりました。これも例題の模範解答が分かりやすく、おすすめです。

 ほかの特徴は線形代数の方と同じです。

 25時間くらいで1周と間違った問題は2週目を解きました。

 

統計学

統計学入門 (基礎統計学Ⅰ)

統計学入門 (基礎統計学Ⅰ)

 統計はこれしかやっていません。

 難しいというレビューもよく見るのですが、具体例も多く、とても分かりやすかったです。

 ただ、数式はかなり多いです。基本的な微積の知識(マクローリン展開、重積分)があれば大丈夫ですが、数式アレルギーの人が統計学の1冊目に選ぶのはお勧めできないです。本の後半に行くに従って数式は増えていきます。

 また、各章の末尾に練習問題があります。これもほかのレビューでは否定的な意見が多かったですが、理解を深める良問が多いと感じました。ただし、こちらも数学チックな問題が多いのは否めません(私にとってはちょうどよい難度で面白かったです)。前半の章のあまりに面倒な数値計算Pythonで解いたりしました。

 1週目は練習問題を解かずに読むだけ。2週目に読んで練習問題を解きました。20時間かかりました。

 

最後に

 機械学習にはそれほど使ってはいませんが、結構時間はかけたのである程度大学教養程度の数学は理解できたのかと思っています。

 是非参考にしてください。

*1:新版演習数学ライブラリ

*2:新版演習数学ライブラリ

*3:新版演習数学ライブラリ

『ゼロから作るDeep Learning』は深層学習するなら必読な話

 

総括

 評判が非常に良かったので読んでみたのですが,やはりとても分かりやすかったです。僕が今まで読んできた書籍はDeep Learningを扱っているものはあまりなかったので,ここで理解できて良かったです。

 完了するのに約10時間かかりました。

 機械学習の学習コンテンツとしては

  • 分かりやすさ      ★★★★☆
  • 数式の少なさ      ★★★☆☆
  • プログラミングの簡単さ ★★★★★

です。

 お勧めの対象者は

です。機械学習やったことない!という方はまずは他のリソースから始めてみてはいかがでしょうか。

machine-learning-bymyself.hatenablog.com

 

内容の評価

分かりやすさ ★★★★☆

 「ゼロから作る」という名の通り,ゼロから説明してくれるのでとても分かりやすかったです。必要なことの多くは本の中で説明してくれるので,前提知識は必要ないかもしれませんが,Pythonパーセプトロンの基本的な理解はないと難しいと思います。

 もっと具体的には,計算グラフを用いた誤差逆伝播や,畳み込みニューラルネットワーク(CNN)の説明は非常に分かりやすかったです。特に計算グラフは一度実装してみないと理解できないと思います。

 この本を読む前に『Python機械学習プログラミング』を読んだ際にはさっぱり計算グラフが理解できなかったのですが,ゼロつくを通して実装レベルで理解できました。また,畳み込みニューラルネットワークについても,入力層や畳み込み層のテンソルの次元などさっぱりだったのが納得できました。

 全体的にとても図が多くディープラーニングの複雑な層構造も分かりやすく説明されています。

 

数式の少なさ ★★★☆☆

 数式はそれほどでてきませんし,でてくるものもReluやSigmoidなど比較的簡単なものばかりです。ニューラルネットワークの誤差関数など複雑なものはカットされています。誤差逆伝播法の説明から察するに,この本のコンセプトとして数式で厳密に理解することよりも視覚的,感覚的に理解することを優先しているようです。

 逆に言えば数学的な証明,特定の関数を用いるモチベーションなどの説明はあまりありません。勾配降下法などに関しては,別のリソースで数学的に理解する方が望ましいでしょう。

 読むのに必要な数学は

  • 行列(行列同士の積が理解できれば十分)
  • 微分偏微分が理解できれば十分)

といったところです。

 

プログラミングの簡単さ ★★★★☆

 「ゼロから作る」ので,特別な難しいライブラリは使いません。Pythonの基本文法,Numpyの知識があれば問題ないでしょう。

 一応1章はPython入門に充てられているので多少不安があっても最低限のことはそこをみれば何とかなります。

 繰り返しになりますが,個人的には基本的な関数を計算グラフ上のレイヤとして実装できたのはとても理解の助けになりました。

 

その他の特徴

意外とすぐ読める

 私は10時間で読み終わりました。1冊読むのにかかる時間としてはとても短いです。理由としては実はコード量が少ないことにあると思います。本の中に書いてあるコードはそれほど多くないため,全部写経してもそれほど時間はかかりませんでした。

 ただし,理解しやすくするために省略されているコードは多いです。githubからサンプルをダウンロードできますが,本には載っていないコードがたくさんあります。これらも全部写経するとなるともっと時間はかかると思います。

 

当然だが,内容はニューラルネットワークに関することのみ

 ニューラルネットワーク以外の機械学習アルゴリズムについては全く言及がないです。また,性能の評価の種類やデータの前処理などの話もないので,それらについては別のリソースで学ぶ必要があります(当たり前)。

 

総括

 ニューラルネットワークについての理解はとても深まりました。これを読めばCNNやRNNの更なる学習がスムーズになると思います。

 基礎はなんとなくやった,という人は是非取り組んでみてはいかがでしょうか!

 私は次は2巻をやってみようと思います!

機械学習を独学するならCouseraの機械学習のコースを取るべき

受けてみた感想

 まず結論からいうと,とても良かったです。コースを通して間違いなく成長できましたし,元々知っていた知識も,より定着しました。また,無料で利用できるのも素晴らしいですね。

 機械学習の学習コンテンツとしては,

  • わかりやすさ      ★★★★☆
  • 数式の少なさ      ★☆☆☆☆
  • プログラミングの簡単さ ★★★★☆

です。

 完了するのに30時間程度かかりました。

 

内容の評価

分かりやすさ ★★★★☆

 このコースで教えてくれるのはスタンフォード大学の教授のAndrewなのですが,とにかく分かりやすいです。新しいテーマを学ぶ際にはまずその技術が何に使われているのか,そしてその理論の説明の後に具体的に数値などを使って見せてくれます。今やっていることが,何のためにやっているのか,何をやっているのか分からなくなる,といったことは全くありません。

 次の項ともつながるのですが,特に数式が出てきた際には苦手な人のことも考慮してゆっくり簡単なことから説明してくれるので数式で苦しむこともほとんどありませんでした。

 

数式の少なさ ★☆☆☆☆

 数式は非常に多いです。半分以上の授業で数式が出てきます。数学アレルギーの人にはお勧めできません。ただ,それだけ数式が出てくるということは数学的な理解が不可欠であることの裏返しですし,なによりAndrewの説明は非常に分かりやすく,それほど難しい知識は必要ないので,アレルギーでなければそれほど身構える必要はありません。

 このコースで高校数学以外で必要だったのは

  • 行列(行列同士の掛け算がわかれば十分)
  • 微分偏微分がわかれば十分)

くらいです。マセマなどのとても簡単な参考書や,場合によってはインターネット上で調べたくらいの知識でも十分です。

 私はネット上の「機械学習をやるには数学をきちんと学んでからだ」という言説を真に受けてしまい,がっちり勉強してから機械学習の勉強を始めました。数学を学ぶのは必要だと思いますし,やって良かったと思っていますが,個人的には数学はそこそこにして早く機械学習の勉強を始めていれば良かったと思っています。

 

プログラミングの簡単さ ★★★★☆

 このコースにはウェブで完結するプログラミング課題があります。しかし,丁寧な指示書もありますし,難易度は低いです。その割にこの課題に取り組むと理解がかなり深まるので非常に良い設計でした。

 実はこの課題はPythonC++などの言語ではなくOctave(またはMATLAB)で書かなければなりません。しかし,Octaveは非常に簡単な言語であることに加えて,授業内で使い方のレクチャーもあるので,他の言語を少し触ったことがある人にとっては全く問題ありません。私もはじめは心理的ハードルが大きかったのですが,始めてみれば何ということはありませんでした。

 

その他の特徴

授業が英語

 Andrewはアメリカのスタンフォード大学の教授なので,授業は英語で行われます。しかし,日本語でしっかり字幕があるので理解には困りませんでした。翻訳もかなり自然で驚きました。

 気をつけなければならないのはテストやプログラミングの課題は全て英語ということです。もちろん難しい英単語などはほぼ無いのですが,それなりにストレスでした。英語ができない方にはお勧めできません。

 

授業はオンラインでの動画視聴

 普通,機械学習を独学するとなると書籍を買って読んだりコードを書いたりするのが一般的だと思いますが,Courseraなら動画を視聴するだけで学べるのはとても助かりました。その動画もダウンロードできるので,移動中なども学べました。あとは机に向かわずに寝そべりながら学べるのは心理的ハードルを大きく下げてくれました。

 

結論

 初めに書いた通りですが,とてもお勧めです。上のお勧めできない条件

  • 数学アレルギー
  • 英語にかなりストレスを感じる

に該当しないのであれば是非取り組んでみてください。機械学習の理解は間違い無く深まりますし,終わることにはAndrewが大好きになっていることでしょう(笑)

 私は次のステップとして『ゼロから作るDeep Learning』に取り組んでいます。おわりしだいまたブログにしたいと思います。

 『ゼロから作るDeep Learning』読み終わりました! 

machine-learning-bymyself.hatenablog.com