『PythonとKerasによるディープラーニング』はディープラーニングを使ってみたい人は必読!
読んでみて
私はこれまで機械学習のアルゴリズムはある程度学んできていたのですが,フレームワークの使い方など,「実際に使ってみる」という面においてはかなり弱かったです。
この本は表紙にもあるように,構造の理解よりもディープラーニングを使えるようになるためには非常に良いものでした。読んでみた後では,この本を参考にすればどんなタスクもある程度の精度を出せるのでは?と思ってしまうほどです。
完了には20時間ほどかかりました。
機械学習の学習リソースとしては
- 分かりやすさ ★★★★☆
- 数式の少なさ ★★★★★
- プログラミングの簡単さ ★★☆☆☆
です。
対象読者
読むのをお勧めするのは,
- すでにニューラルネットワークの理論はある程度理解したので,実践できるようになりたい方
- Kaggleなどディープラーニングを使ってやりたいことが既にあり,理論より実践方法を効率よく知りたい方
です。理論より実践向けの本なので,
- 機械学習(ニューラルネットワーク)が初めての方
- 様々な形のニューラルネットワークがどのようにして動いているのかの理論を知りたい方
にはお勧めできないです。理論を学びたい方は以前紹介したリソースの方が良いと思います。
machine-learning-bymyself.hatenablog.com
machine-learning-bymyself.hatenablog.com
内容の評価
分かりやすさ ★★★★☆
この本の著者はKerasの開発者なので,Kerasに精通しています。また,所々で著者がKaggle(機械学習コンペティション)に参加している,という話もでてくるように,著者もディープラーニングを使いまくっています。その上でのトライアンドエラーやベストプラクティスを丁寧に書いてくれています。また,本文中にはKaggleでディープラーニングを使うだけでなく,使って好成績を残せるようなノウハウを詰め込んだ,と書かれています。
二値分類,多クラス分類,回帰分析はもちろん,データ型としてテキストシーケンス,時系列データ,画像など様々なものを扱ってくれており,実際にディープラーニングを応用したくなったときには,この本を見ればどこかに似た例が出てきていると思います。書かれているコードも実践的なので,ほとんど真似するだけで学習,予測まで漕ぎ着けることができると思います。
数式の少なさ ★★★★★
数式はほとんど出てこないと言って良いでしょう。一応疑似コードの形で説明されている部分はあるにはありますが,微々たるものです。
ただ,逆に言えば数学的な説明はあまりないとも言えるので,理論的な解説を求める方は他のリソースで学ぶ方が良いでしょう。この本はあくまでもディープラーニングを使うための本ですね。
machine-learning-bymyself.hatenablog.com
プログラミングの簡単さ ★★☆☆☆
これまで読んできた本に比べるとちょっと難しい気がしました。
とはいえ,Kerasを用いてニューラルネットワークを構築し,学習させ,結果を表示するのはフレームワークがよくできているのでとても簡単です。
難しく感じたのはデータの前処理の部分ですね。テキストシーケンスを各サンプルをベクトル化した上でone-hotエンコーディングし,単語とインデックスをつなげる部分や,時系列データにおいて,バッチサイズごとに特徴量と正解データを生成するジェネレータを実装するなど,結構難しく,自分でコメントを書きながら実装しました。
難しいと感じる,ということは自分の力だけでは実装できなかったということですから,サンプルコードとして実装してくれているのは実際に他の例に応用する際に非常に役に立ちました。ジェネレータなんて普段あまり書かないですよね…。
その他の特徴
扱っている幅が圧倒的に広い
もちろんニューラルネットワーク限定の話ではありますが,ニューラルネットワークを用いた話はかなり網羅されていると言って良いと思います。
先述の通り,一般的な二値分類や回帰はもちろん,画像処理やテキスト分析,時系列データ分析も扱っていますし,さらにはジェネレーティブディープラーニング(ディープラーニングを使って新しく何かを生み出す技術)まで紹介されています。流石にこの辺りは深くは掘り下げられていないですが。予測ではなくクリエイティブな用途にディープラーニングを使いたい方には参考になると思います。
具体的なベストプラクティスが多い。
「○○で困ったら△△を試せ」のようなベストプラクティスが山のようにあるので,困ったときにはこの本を見てさらにはコードも真似してより良いモデルを作ることができます。
一つ前の扱っている幅が広いことと合わせると,このうまくいかない時は一冊のどこかにヒントがあると言っても過言ではないと思います。ほとんどの種類のニューラルネットワークのタスクの精度をかなり上げられるのではないでしょうか。
最後に
個人的にこの本を参考にしてとても助かっているので少し贔屓目が入っているかもしれませんが,非常に良い本でした。これまでは理論ばかりで使うことができていませんでしたが,かなり大きなステップアップをできたと感じています。
「ディープラーニング使ってみたい!」という方は是非読んでみてはいかがでしょうか。