忙しいあなたの代わりに、史上最強の「良い本・良い暮らし」のご提案

1冊の本に出会うことで、人生が大きく変わることがあります。良い品物に出会ったことで幸せになれることもあります。とはいっても、多様な商品があふれる中で、より価値の高いものを選び出すのは大変です。そこでこのブログでは、忙しいあなたの代わりに、史上最強の「良い本・良いくらし」の提案をさせていただきます。

分析 / 学問

スポンサードリンク
 

Pythonの入門書については、以下の記事にまとめました。よかったらどうぞ

Pythonを学習し、未経験からバイトや転職に結びつけたいあなたにおすすめの入門書はこちらです





近年ディープラーニングを活用することで、これまで不可能だったことが可能になりつつあります。
  • 将棋やチェスや囲碁では、ディープラーニングを用いた人工知能が、人間のチャンピオンに勝利しました。

  • 自動運転車では、人の運転技術やセンサーからの情報などをディープラーニングを使って学習することで、実用化の兆しが見えてきています。

  • 画像認識では、ディープラーニングによる認識は、ヒトの認識レベルと同じレベルになっています。たとえば、手書き文字(1、2、3・・・など)を正確に(99%)認識することができるようになっています。

このように、ディープラーニングは私たちの身近なところにも影響を与えてきています。

そしてその変化は、さまざまなビジネスチャンスにもなっています。


でも、いきなりディープラーニングと聞いても、


「なんかすごそうだ」「でも、いったい何なの??」


となるのではないでしょうか。


ぐぐってみると、

ディープラーニング(深層学習・Deep Learning)とは、ニューラルネットワークを何層にも重ねた深い層を持つニューラルネットワークのことです。
また、ニューラルネットワークとは、機械学習アルゴリズムの1つです。


ディープラーニングを分かるにはニューラルネットワークの理解が必要で、


ニューラルネットワークは機械学習のアルゴリズムの1つってあるけど、


じゃあ、「機械学習ってなによ?」


と、なにをどうしてるのか「イマイチわからない・・・」ってのが本音でないでしょうか



ディープラーニングを理解するむずかしさの1つは、専門知識が足りないことがありました。


専門知識を身につけようにも、かんたんではないからです。



そこで今回は、ディープラーニングが、


なかで何をしてるのか?


というギモンを、「専門知識なし」で解決する1冊を紹介します。







本書はディープラーニングを理解するために必要なことを、「専門知識なし」で学べます。
 

この本では、分かりやすい説明とともに、Pythonによるコードを交えながら進んでいきます。


知識を理解し、実装して確かめる」という手順をふむことで、

ディープラーニングがなかで何をしているかを「より深く」学べるようになっています。



この「知識+実装」を、本の構成の順番に、


パーセプトロン(ニューラルネットワークの基礎)



ニューラルネットワーク(ディープラーニングの基礎)



ディープラーニング



と繰り返していくうちに、ディープラーニングがなにをしていて、

どんな特徴があるのか、など自然に理解できるようになっています。



ちなみにPythonは、わかりやすいプログラミング言語で、

自信がない方も、本書の第1章を読めば、Pythonの概要がつかめるので安心です。

(下の目次を見るとわかります↓)


わたしはプログラムは書きません!という方も、

順をおって中身を1つ1つみていくことで、だんぜん理解が深まりますよ!



本書の特徴をまとめると以下になります。

  • ディープラーニングとその基礎となるニューラルネットワークの理論を理解できる

  • ディープラーニングで使われる「誤差逆伝播法」や「畳み込み演算」などのアルゴリズムを理解できる

  • ディープラーニングをライブラリを使わずに実装する力を養える

  • 実装したコードを手元で試すことができるように説明がある

  • ディープラーニングで使われるパラメータ(学習率重みの初期値など)の決め方がわかる

  • Batch NormalizationやDropout、Adamなどの新しいテクニックが理解できる

  • 画像生成自動運転強化学習などディープラーニングの応用例を理解できる

このようにディープラーニングをシッカリ理解したい人にもオススメの本となっています。


 





本書の構成は、以下の通りです
〜〜〜
まえがき

1章 Python入門
1.1 Pythonとは
1.2 Pythonのインストール

Pythonのバージョン
使用する外部ライブラリ
Anaconda ディストリビューション
1.3 Pythonインタプリタ
算術計算
データ型
変数
リスト
ディクショナリ
ブーリアン
if 文
for 文
関数
1.4 Pythonスクリプトファイル
ファイルに保存
クラス
1.5 NumPy
NumPyのインポート
NumPy配列の生成
NumPyの算術計算
NumPyのN次元配列
ブロードキャスト
要素へのアクセス
1.6 Matplotlib
単純なグラフの描画
pyplotの機能
画像の表示
1.7 まとめ


2章 パーセプトロン
2.1 パーセプトロンとは
2.2 単純な論理回路

AND ゲート
NAND ゲートとOR ゲート
2.3 パーセプトロンの実装
簡単な実装
重みとバイアスの導入
重みとバイアスによる実装
2.4 パーセプロトンの限界
XOR ゲート
線形と非線形
2.5 多層パーセプトロン
既存ゲートの組み合わせ
XOR ゲートの実装
2.6 NANDからコンピュータへ
2.7 まとめ



3章 ニューラルネットワーク
3.1 パーセプロトンからニューラルネットワークへ
ニューラルネットワークの例
パーセプロトンの復習
活性化関数の登場
3.2 活性化関数
シグモイド関数
ステップ関数の実装
ステップ関数のグラフ
シグモイド関数の実装
シグモイド関数とステップ関数の比較
非線形関数
ReLU 関数
3.3 多次元配列の計算
多次元配列
行列の内積
ニューラルネットワークの内積
3.4 3層ニューラルネットワークの実装
記号の確認
各層における信号伝達の実装
実装のまとめ
3.5 出力層の設計
恒等関数とソフトマックス関数
ソフトマックス関数の特徴
出力層のニューロン数
3.6 手書き数字認識
MNIST データセット
ニューラルネットワークの推論処理
バッチ処理
3.7 まとめ


4章 ニューラルネットワークの学習
4.1 データから学習する
データ駆動
訓練データとテストデータ
4.2 損失関数
2乗和誤差
交差エントロピー誤差
ミニバッチ学習
[バッチ対応版] 交差エントロピー誤差の実装
なぜ損失関数を設定するのか?
4.3 数値微分
微分
数値微分の例
偏微分
4.4 勾配
勾配法
ニューラルネットワークに対する勾配
4.5 学習アルゴリズムの実装
2層ニューラルネットワークのクラス
ミニバッチ学習の実装
テストデータで評価
4.6 まとめ


5章 誤差逆伝播法
5.1 計算グラフ
計算グラフで解く
局所的な計算
なぜ計算グラフで解くのか?
5.2 連鎖率
計算グラフの逆伝播
連鎖率とは
連鎖率と計算グラフ
5.3 逆伝播
加算ノードの逆伝播
乗算ノードの逆伝播
リンゴの例
5.4 単純なレイヤの実装
乗算レイヤの実装
加算レイヤの実装
5.5 活性化関数レイヤの実装
ReLU レイヤ
Sigmoid レイヤ
5.6 Affine / Softmaxレイヤの実装
Affine レイヤ
バッチ版 Affine レイヤ
Softmax-with-Loss レイヤ
5.7 誤差逆伝播法の実装
ニューラルネットワークの学習の全体図
誤差逆伝播法に対応したニューラルネットワークの実装
誤差逆伝播法の勾配確認
誤差逆伝播法を使った学習
5.8 まとめ


6章 学習に関するテクニック
6.1 パラメータの更新
冒険家の話
SGD
SGDの欠点
Momentum
AdaGrad
Adam
どの更新手法を用いるか?
MNISTデータセットによる更新手法の比較
6.2 重みの初期値
重みの初期値を0にする?
隠れ層のアクティベーション分布
ReLU の場合の重みの初期値
MNISTデータセットによる重み初期値の比較
6.3 Batch Normalization
Batch Normalization のアルゴリズム
Batch Normalization の評価
6.4 正則化
過学習
Weight decay
Dropout
6.5 ハイパーパラメータの検証
検証データ
ハイパーパラメータの最適化
ハイパーパラメータ最適化の実装
6.6 まとめ


7章 畳み込みニューラルネットワーク
7.1 全体の構造
7.2 畳み込み層
全結合層の問題点
畳み込み演算
パディング
ストライド
3次元データの畳み込み演算
ブロックで考える
バッチ処理
7.3 プーリング層
プーリング層の特徴
7.4 Convolution / Pooling レイヤの実装
4次元配列
im2col による展開
Convolution レイヤの実装
Pooling レイヤの実装
7.5 CNNの実装
7.6 CNNの可視化
1層目の重みの可視化
階層構造による情報抽出
7.7 代表的なCNN
LeNet
AlexNet
7.8 まとめ


8章 ディープラーニング
8.1 ネットワークをより深く
よりディープなネットワークへ
さらに認識精度を高めるには
層を深くすることのモチベーション
8.2 ディープラーニングの小歴史
ImageNet
VGG
GoogLeNet
ResNet
8.3 ディープラーニングの高速化
取り組むべき問題
GPUによる高速化
分散学習
演算精度のビット削減
8.4 ディープラーニングの実用例
物体検出
セグメンテーション
画像キャプション生成
8.5 ディープラーニングの未来
画像スタイル変換
画像生成
自動運転
Deep Q-Network(強化学習)
8.6 まとめ


付録A Softmax-with-Loss レイヤの計算グラフ
A.1 順伝播
A.2 逆伝播
A.3 まとめ



参考文献
Python / NumPy
計算グラフ(誤差逆伝播法)
Deep Learningのオンライン授業(資料)
パラメータの更新方法
重みパラメータの初期値
Batch Normalization / Dropout
ハイパーパラメータの最適化
CNNの可視化
代表的なネットワーク
データセット
計算の高速化
MNISTデータセットの精度ランキングおよび最高精度の手法
ディープラーニングのアプリケーション


索引 
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

目次は以上です。


わたしが読んだ感想としては、

本書のニューラルネットワークの説明のところが、とくにわかりやすかったです。



他書では、「数式を用いた説明」がほとんどですが、

この本では「計算グラフ」を使って、ビジュアルで理解させてくれます。


計算グラフは、ネットワークの要素(ノード)をつないで(エッジ)、グラフとして表したもので、

ネットワークの全体像をパッと目でみて理解できるメリットがあります。


ニューラルネットワークやディープラーニングの説明では、

計算グラフで表現されたネットワーク上の信号が、前方に後方に伝わる様子を、

手に取るようにイメージでき、すんなりと理解できます。



たとえば「誤差逆伝播法」がどのようにして微分を求めていくかなど、計算グラフで理解することで

「あ〜そういうこと!」「なるほど!」

と、すばらしい方法であることを納得させてくれます。


その後、ディープラーニングの説明でも、

「畳み込み」演算など、図や計算グラフによって、サクッと理解できます。



もちろん初心者の方も迷子にしないように、図や計算グラフが充分にあり、

最後まで理解を導いてくれますし、

ある程度学んだことのある方でも、系統的に書かれているので、

「これまでの知識が体系化される」メリットもあります。



この本で計算グラフの理解をしておくことで、

リカレントニューラルネットワーク(RNN)など、

その他のディープラーニング技術を学ぶときにも、理解が促進されると思います。
 

ていねいでわかりやすく、

モノを作る過程から多くのことを学べる1冊、オススメです。






注意点として、以下のことは含まれていませんので、

それが目的の方は他の本を参照されるようにしてください。
  • ディープラーニングのフレームワーク(Caffe, TensorFlow, Chainerなど)の使い方

  • ディープラーニングのパラメーターチューニングの詳細

  • GPUに対応したディープラーニングの実装

  • 音声認識や自然言語処理の例


フレームワークを使ったディープラーニングの実装などはこちらをどうぞ




Googleの「TensorFlow」を使いながらディープラーニングを学べる1冊です。






こちらは国産のフレームワーク「Chainer」による実装方法が解説されています。




初めてのディープラーニング
武井宏将
リックテレコム
2016-09-21


「Caffe」による演習ができる1冊です。


こちらもどうぞ

Pythonを学習し、未経験からバイトや転職に結びつけたいあなたにおすすめの入門書はこちらです



Python でできることってなに?チャットボットやテキストマイニング、人工知能やスクレイピングなどPythonの使い方をまとめました

 

Python のフレームワーク・ライブラリ・ツール・開発環境などを活用し、Pythonで業務効率化をしたいあなたはこちらをどうぞ

 

 

『「Python」に関する記事を一覧はこちらです

 


こちらの記事もございます。






スポンサードリンク
 
このエントリーをはてなブックマークに追加 mixiチェック

コメント

コメントフォーム
評価する
  • 1
  • 2
  • 3
  • 4
  • 5
  • リセット
  • 1
  • 2
  • 3
  • 4
  • 5
  • リセット

↑このページのトップヘ