これからディープラーニングを勉強したい
機械学習を学習するための参考書を探している
ゼロから作るDeep Learningについて知りたい
こんな疑問を持ったディープラーニング初心者の方に読んでいただきたい内容です。
良著「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」の内容について紹介します。
機械学習に関連する書籍の中でも「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」は、特に人気ですし見かけたことがある人も多いのでは、と思います。
実際、こちらの本の内容をネットで調べてみると、実際にコードを動かしてみた記事や、内容解説の記事もちらほら見かけますし、レビュー等も豊富にあります。
プログラミング初心者にはおすすめしてる人としていない人がいるので、購入するべきか迷ってしまう人も少なくないと思い、この記事を書くことにしました。
私はこちらの本を購入し、内容を一通り理解できました。
なので今回は、私と同じくプログラミング初心者かつゼロから作るDeep Learningを買うべきか迷っている方へ向けて、ゼロから作るDeep Learningの内容について紹介していきます。
購入するかの検討に役立てていただければ幸いです。
ゼロから作るDeep Learning から初心者が学べること
ゼロから作るDeep Learningを実際に読むことで、学べること・学べないことを解説していきます。
ディープラーニングの具体的な内容については触れず、書籍として何が書いてあるかについてまとめました。
ゼロから作るDeep Learningの内容構成
ゼロから作るDeep Learningの目次は以下の通りです。
- Python入門
- パーセプトロン
- ニューラルネットワーク
- ニューラルネットワークの学習
- 誤差逆伝播法
- 学習に関するテクニック
- 畳み込みニューラルネットワーク
- ディープラーニング
具体的な内容については触れませんが、この目次に沿って、ニューラルネットワークについて学ぶことができます。
各章の具体的な内容について知りたい方は以下の記事が参考になります。
1章から4章までの本の内容がほぼ書いてあるので概要を知りたい方は読んでみるべし。
ゼロから作るDeep Learningから学べること
ゼロから作るDeep Learningを読むことで学べることは以下の通り。
ゼロから作るDeep Learningから学べること
- ニューラルネットワークのつくり方
- ディープラーニングの仕組み
- CNN(画像認識用のニューラルネットワーク)の仕組み
簡単にいうと、ニューラルネットワーク自体の構成や仕組みを学ぶことがメインです。
TensorflowやKerasといった外部ライブラリを使用せずに、Numpy、matplotlib等の最低限のライブラリのみを使用してニューラルネットワークを構築する方法を学べます。
ゼロから作るDeep Learningから学べないこと(書いていない内容)
ゼロから作るDeep Learningを読んでも学べないことは以下の通り。
ゼロから作るDeep Learningから学べないこと
- Tensorflow, keras, chainer等外部ライブラリの使用方法
- Webアプリ, 複雑なニューラルネットワークの構築方法
- 学習し正解率を高める試行錯誤の仕方
- 学習高速化のためにGPUを利用する方法
Tensorflow等のディープラーニング用ライブラリの使い方については全く触れません。
基礎となるニューラルネットワークの中身について解説することがメインです。
ディープラーニングを活用したアプリ開発の情報はありません。
ディープラーニングは学習に時間がかかるため、GPUを利用すると効率が良いのですが、こちらの書籍はGPU導入はしません。
また、複雑なニューラルネットワークの構築方法については扱っていません。
ゼロから作るDeep Learningで扱っているのは以下2種類のNNです。(基礎的なニューラルネットワークです)
全結合型ニューラルネットワーク(すべてのNNの基礎となる仕組み)
CNN(画像認識の最もベーシックなNN)
以下のような複雑なニューラルネットワークについては解説していません。
(上記のNNを元につくられる複雑なNNです)
・GAN(画像を生成するNN)
・RNN(株価予測や自然言語処理等、前後の繋がりのあるデータを扱うNN)
etc…
ゼロから作るDeep Learningを買うべき人と買わなくてもいい人
一通り読み終えた初心者の立場から、勝手に買うべきと買わなくてもいい人の人物像をまとめてみました。
ゼロから作るDeep Learningを買うべき人
- 今後ディープラーニングを学んでいきたい方
- ニューラルネットワークの中身を知りたい方
- ライブラリを使わずに、ニューラルネットワークをつくりたい方
基本的にニューラルネットワークの仕組みについて知りたい方はぜひ読んでみることをおすすめします。
説明が非常にわかりやすいので数学の知識(行列)がなくてもスムーズに理解できます。
ゼロから作るDeep Learningを買わなくてもいい人
こんな人は買う必要がないかと。
- ニューラルネットワークの構造、CNNについて理解している方
- Tensorflow等外部ライブラリについて学びたい方
- 複雑なニューラルネットワークについて学びたい方
ニューラルネットワークの仕組みの解説が主のため、Tensorflow等のディープラーニング用ライブラリの使い方については説明がありません。
また、ニューラルネットワークの構造を理解している方が得られる情報はほぼほぼない、と思います。別の書籍を探したほうが無難です。
ただし、複雑なニューラルネットワークについての説明はありませんが、こちらの本を読んでおくと、複雑なニューラルネットワークの中身がどうなっているかの理解が深められます。
ゼロから作るDeep Learningはディープラーニング初心者におすすめ?
ディープラーニング初心者には、個人的にはおすすめです。
理由は、私自身こちらの本から学べることがたくさんあったからです。
ただし、以下の条件を満たしている初心者の方におすすめします。
<ゼロから学ぶDeep Learningを読んでほしい初心者>
Pythonの文法が理解できている(classやdefとか)
ニューラルネットワークの概要を知っている(全体の流れを知っておくことで理解がしやすくなる)
読破してやるという強い信念を持っている
0から学ぶとはいっても専門書です。難しいので挫折に注意ですよ。
実のところ私はPythonの文法を勉強してすぐこちらの本を購入して一回挫折してました。挫折の理由は単純に難しくて理解できなくなってしまったからです。
挫折後、ネット記事やチュートリアルを勉強してニューラルネットワークの基礎を学んでから読み直してやっと理解できました。
なので、これからディープラーニングを学びたい方は、こちらの本を購入する前にネット記事でニューラルネットワークの概要を知っておくと、スムーズに学べるかと思います。
個人的には、ニューラルネットワークの専門用語について知っておくとベストです。
例えばこんなの↓
バッチ、活性化関数、損失関数、プーリング、畳み込み層
用語を知っておくと理解しやすくなります。読めるかどうか不安な方はあらかじめ用語だけ押さえておきましょう。
ゼロから作るDeep Learningを読む際のポイント【初心者にはぜひ読んでほしい!】
最後に、これから読む方にポイントをお伝えします。これらは、一度挫折した私が再挑戦するときに効果があるなーと感じたポイントですので、初心者の学習のお役に立てるかと思います。
ソースコードは必ず手を動かして書いてみる
読み進めていくと、ニューラルネットワークの構成解説に沿って、ソースコードも紹介されています。
紹介されるソースコードは必ず手を動かして、コーディングすることを推奨します。
自分の手でコーディングすることで理解が深まります。読み進めていくだけで理解した気になってしまうのには気を付けてくださいね。(自戒)
完全に理解しようとしなくても大丈夫!
1回読んで理解できてないからといって、また1から勉強する必要はありません。
私自身1巡しても理解できていない部分がありましたが、Tensorflowのチュートリアル等、一度書籍から離れて学習した後に読み直してみると理解することができました。
実際ニューラルネットワークを使う際は、Tensorflow等を使うことが多いかと思うので、完全に理解せずとも動かすことは可能ということを知っておいてほしいです。
ニューラルネットワークについて学ぶことが目標なので、書籍の読解を目標にしないよう注意です。(特に完璧主義の方は注意して下さいね)
学習後は何か実際につくってみるのがおすすめ
本を一通り読み終えたら、何かつくってみるのがおすすめです。
初心者の方はTensorflowやPytorch等のディープラーニング用ライブラリの使い方を学べば手っ取り早くディープラーニングを使えます。
ネットでググれば「やってみた系記事」や「無料チュートリアル」がたくさん見つかるので、実際につくってみてください。
つくりたいものがない方は、ネット上に公開されているニューラルネットワークのコードを模写してみるのがおすすめです。ひらめきでつくりたいものが見つかるかもしれません。
実際につくることで理解が深まりますし、座学より楽しいのでおすすめです!
最後に学習の役に立つNNについて少しだけ紹介しておきます。
ニューラルネットワークは種類がたくさんあるため、自分の作りたいものを学んでみてください。
複雑なニューラルネットワークといっても、基本的には「ゼロから学ぶ」にて解説しているニューラルネットワークを応用したものなので、本書を読んだあとなら理解しつつコーディングできるかと思います。
<ニューラルネットワークの種類>
CNN 画像認識、何が写っているかを当てる
RNN 時系列分析、過去のデータから、未来のデータを予測する
GAN 画像生成モデル、人の顔画像を学習させて、存在しない顔画像を生成する
VAE 画像生成モデル、人の顔を学習することで、表情をつくることができる
私はGANをつくってみましたが、この本を読む前と読んだあとでは、ニューラルネットワークの理解度が明らかに良くなってました。
ちなみに初めての結果はこんな感じ
先日DCGANを使って顔を学習させた結果です。GitHubにて公開されていたシンプル&簡単そうなモデルを使いました。学習用画像データ700枚ほど10000回の学習でこんな感じ。データの量増しはやってないはず。やっぱりもっと大量の学習データが必要なんですかね。#Python #プログラミング pic.twitter.com/AqUoilkLM8
— ゆあーさん@プログラミングとモデリング (@yoursun3d) July 8, 2019
話がそれましたが、個人でニューラルネットワークを組みたい方にはベストな書籍ですので、ぜひ購入を検討してみてくださいね。
以上、お役に立てれば幸いです。