なっとく!ディープラーニング(Andrew W. Trask 株式会社クイープ 株式会社クイープ)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. なっとく!ディープラーニング

なっとく!ディープラーニング


翻訳
監修

形式:
書籍
発売日:
ISBN:
9784798155012
定価:
2,860(本体2,600円+税10%)
仕様:
B5変・336ページ
カテゴリ:
人工知能・機械学習
キーワード:
#プログラミング,#開発手法,#データ・データベース,#ビジネスIT
紙の書籍

機械に学習させる調教師への道

【本書の内容】
本書は
Andrew W. Trask, "Grokking Deep Learning",
Manning Publications 2019
の邦訳版です。

業種を問わず、すべての局面において自動化が強烈に推進されている昨今、
機械学習/深層学習(ディープラーニング)の重要性は増すばかりです。

本書は「機械が学習する」というテーマのもと、
その根幹を成す「ディープラーニング」という手法を平易に解説した書籍です。

一般に「ディープラーニング」というと、その背景となる数学的厳密性を全面に押し出し、
微に入り細に入る解説が仇となって、面白くなるとばぐちでリタイアすることになりがちです。
本書は数学的厳密性はそこそこに、むしろディープラーニングの全体像を俯瞰し、
ディープラーニングがカバーする範囲とその構築方法、
そしてそのための基礎知識をイメージしてもらえるように工夫しています。

Webアプリケーションを開発する際に、フレームワークによってインフラを意識することなく
サービスを構築できるようなスタイル、と言えばいいでしょうか。

なにはともあれ、最初に提示されるPythonコードを「暗記」してみてください。
それを拡張することで、機械に学習させる「調教師」になれることが分かるはずです。

【本書のポイント】
・数式を使った基礎理論ではなく「扱える」ディープラーニングを学べる
・線形代数、微積分、凸最適化はもちろん、機械学習の知識も前提としない
・ニューラルネットワークの基礎から上位層やアーキテクチャを学べる
・Python 3.x系で実際に試せる

【読者が得られること】
・ディープラーニングの全体像
・ニューラルネットワークの基礎
・学習精度の上げ方
・各種フレームワークによる実装法

第1章 ディープラーニング入門|ディープラーニングを学ぶのはなぜか
1.1 ディープラーニングの世界へようこそ
1.2 なぜディープラーニングを学ぶべきなのか
1.3 ディープラーニングを学ぶのは難しい?
1.4 なぜ本書を読むべきなのか
1.5 どのような準備が必要か
1.6 Pythonの知識が必要
1.7 まとめ

第2章 基本概念|機械はどのように学習するか
2.1 ディープラーニングとは何か
2.2 機械学習とは何か
2.3 教師あり機械学習
2.4 教師なし機械学習
2.5 パラメトリック学習とノンパラメトリック学習
2.6 教師ありパラメトリック学習
2.7 教師なしパラメトリック学習
2.8 ノンパラメトリック学習
2.9 まとめ

第3章 ニューラル予測|順伝播
3.1 予測する
3.2 予測を行う単純なニューラルネットワーク
3.3 ニューラルネットワークとは何か
3.4 このニューラルネットワークは何をするか
3.5 複数の入力を持つ予測
3.6 複数の入力:このニューラルネットワークは何をするか
3.7 複数の入力:完全なコード
3.8 複数の出力を持つ予測
3.9 複数の入力と出力を持つ予測
3.10 複数の入力と出力:どのような仕組みになっているか
3.11 予測値に基づく予測
3.12 速習:NumPy
3.13 まとめ

第4章 ニューラル学習|勾配降下法
4.1 予測、比較、学習
4.2 比較
4.3 学習
4.4 比較:ネットワークの予測は正確か
4.5 誤差を測定するのはなぜか
4.6 最も基本的なニューラルネットワーク
4.7 ホット&コールド学習
4.8 ホット&コールド学習の特徴
4.9 誤差から方向と量を割り出す
4.10 勾配降下法の1回のイテレーション
4.11 学習とは誤差を小さくすること
4.12 学習ステップ
4.13 どのような仕組みになっているか
4.14 1つの考えにこだわる
4.15 棒が突き出た箱
4.16 微分係数:テイク2
4.17 知っていないと困ること
4.18 知っていなくてもそれほど困らないこと
4.19 微分係数を使ってどのように学習するか
4.20 ここまでのまとめ
4.21 勾配降下法の分解
4.22 過度の補正を可視化する
4.23 ダイバージェンス
4.24 アルファ
4.25 アルファのコーディング
4.26 暗記する

第5章 一度に複数の重みを学習する|勾配降下法を汎化させる
5.1 複数の入力を持つ勾配降下法による学習
5.2 複数の入力を持つ勾配降下法の説明
5.3 学習ステップを確認する
5.4 1つの重みを凍結する
5.5 複数の出力を持つ勾配降下法による学習
5.6 複数の入力と出力を持つ勾配降下法
5.7 これらの重みは何を学習するか
5.8 重みの値を可視化する
5.9 内積(加重和)を可視化する
5.10 まとめ

第6章 初めてのディープニューラルネットワークの構築|誤差逆伝播法
6.1 信号機の問題
6.2 データの準備
6.3 行列と行列関係
6.4 Pythonで行列を作成する
6.5 ニューラルネットワークを構築する
6.6 データセット全体を学習する
6.7 完全勾配降下法、バッチ勾配降下法、確率的勾配降下法
6.8 ニューラルネットワークは相関を学習する
6.9 重みの圧力
6.10 エッジケース:過学習
6.11 エッジケース:相反する圧力
6.12 間接相関を学習する
6.13 相関を作り出す
6.14 ニューラルネットワークを積み重ねる
6.15 誤差逆伝播法:誤差の原因を突き止める
6.16 誤差逆伝播法はどのような仕組みになっているか
6.17 線形と非線形
6.18 ニューラルネットワークがまだうまくいかないのはなぜか
6.19 条件付き相関の秘密
6.20 ちょっとひと息
6.21 初めてのディープニューラルネットワーク
6.22 誤差逆伝播法のコード
6.23 誤差逆伝播法の1回のイテレーション
6.24 ここまでのまとめ
6.25 ディープニューラルネットワークはなぜ重要か

第7章 ニューラルネットワークの描き方|頭の中で、そして紙の上で
7.1 単純化
7.2 相関の要約
7.3 必要以上に複雑だった可視化
7.4 可視化を単純化する
7.5 さらに単純化する
7.6 このネットワークの予測値を確認する
7.7 図の代わりに文字を使って可視化する
7.8 変数をリンクする
7.9 ここまでのまとめ
7.10 可視化ツールの重要性

第8章 シグナルを学習し、ノイズを取り除く|正則化とバッチ
8.1 MNISTの3層ネットワーク
8.2 そう難しいことではない
8.3 記憶と汎化
8.4 ニューラルネットワークの過学習
8.5 過学習の原因
8.6 最も単純な正則化:早期終了
8.7 業界標準の正則化:ドロップアウト
8.8 ドロップアウトは擬似的なアンサンブル学習
8.9 ドロップアウトのコード
8.10 MNISTでのドロップアウトを評価する
8.11 バッチ勾配降下法
8.12 まとめ

第9章 確率と非線形性のモデル化|活性化関数
9.1 活性化関数とは何か
9.2 標準的な隠れ層の活性化関数
9.3 標準的な出力層の活性化関数
9.4 重要な問題点:入力の類似性
9.5 ソフトマックス関数の計算
9.6 活性化関数を組み込む
9.7 デルタに傾きを掛ける
9.8 出力を傾きに変換する
9.9 MNISTネットワークをアップグレードする

第10章 エッジとコーナーに関するニューラル学習|畳み込みニューラルネットワーク
10.1 複数の場所で重みを再利用する
10.2 畳み込み層
10.3 NumPyでの単純な実装
10.4 まとめ

第11章 言語を理解するニューラルネットワーク|king-man+womanは何か
11.1 言語を理解するとはどういう意味か
11.2 自然言語処理(NLP)
11.3 教師ありNLP
11.4 IMDb映画レビューデータセット
11.5 入力データで単語の相関を捕捉する
11.6 映画レビューを予測する
11.7 埋め込み層
11.8 出力を解釈する
11.9 ニューラルアーキテクチャ
11.10 単語埋め込みを比較する
11.11 ニューロンの意味は何か
11.12 穴埋め
11.13 損失の意味
11.14 King-Man+Woman ≃ Queen
11.15 単語類推
11.16 まとめ

第12章 シェイクスピアのような文章を書くニューラルネットワーク|可変長データのためのリカレント層
12.1 任意長の課題
12.2 比較は本当に重要か
12.3 平均化された単語ベクトルの驚くべき効果
12.4 これらの埋め込みに情報はどのように格納されるか
12.5 ニューラルネットワークは埋め込みをどのように使用するか
12.6 BoWベクトルの限界
12.7 単位行列を使って単語埋め込みを合計する
12.8 まったく何も変更しない行列
12.9 遷移行列を学習する
12.10 有益な文ベクトルを作成するための学習
12.11 Pythonでの順伝播
12.12 逆伝播
12.13 訓練
12.14 ニューラルネットワークを訓練するための準備
12.15 任意長での順伝播
12.16 任意長での逆伝播
12.17 任意長での重みの更新
12.18 実行と出力の解析
12.19 まとめ

第13章 自動最適化|ディープラーニングフレームワークを構築しよう
13.1 ディープラーニングフレームワークとは何か
13.2 テンソルの紹介
13.3 自動勾配計算(autograd)の紹介
13.4 クイックチェック
13.5 繰り返し使用されるテンソル
13.6 複数のテンソルをサポートするために.autogradをアップグレードする
13.7 加算の逆伝播の仕組み
13.8 符号反転のサポートを追加する
13.9 関数のサポートをさらに追加する
13.10 autogradを使ってニューラルネットワークを訓練する
13.11 自動最適化を追加する
13.12 さまざまな層のサポートを追加する
13.13 層を含んでいる層
13.14 損失関数層
13.15 フレームワークをマスターするには
13.16 非線形層
13.17 埋め込み層
13.18 autogradにインデックスを追加する
13.19 埋め込み層:その2
13.20 交差エントロピー層
13.21 リカレント層
13.22 まとめ

第14章 シェイクスピアのような文章を書くための学習|LSTM
14.1 文字言語のモデル化
14.2 T-BPTTはなぜ必要か
14.3 T-BPTT
14.4 出力のサンプル
14.5 勾配消失と勾配発散
14.6 RNNの逆伝播の例
14.7 LSTMセル
14.8 LSTMのゲートを直観的に理解する
14.9 LSTM層
14.10 文字言語モデルを改良する
14.11 LSTM文字言語モデルを訓練する
14.12 LSTM文字言語モデルを調整する
14.13 まとめ

第15章 未知のデータでのディープラーニング|フェデレーションラーニング
15.1 ディープラーニングのプライバシー問題
15.2 フェデレーションラーニング
15.3 スパムの検出を学習する
15.4 フェデレーション環境をシミュレートする
15.5 フェデレーションラーニングのハッキング
15.6 セキュアアグリゲーション
15.7 準同型暗号
15.8 準同型暗号が適用されたフェデレーションラーニング
15.9 まとめ

第16章 次のステップ|クイックガイド
ステップ1:PyTorchを学び始める
ステップ2:別のディープラーニングコースを受講する
ステップ3:数学的なディープラーニングの教科書を読む
ステップ4:ディープラーニングのブログを始める
ステップ5:Twitter
ステップ6:学術論文を書く
ステップ7:GPUを手に入れる
ステップ8:報酬をもらって練習する
ステップ9:オープンソースプロジェクトに参加する
ステップ10:ローカルコミュニティを開拓する

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2020年05月14日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 082
本文下から2行目
テクチャでは、delta(0.14)にそれぞれの入力を掛けることで、
テクチャでは、delta(-0.14)にそれぞれの入力を掛けることで、
2020.03.30
1刷 083
図「(4)複数の入力:それぞれのweight_deltaを計算し、それぞれの重みに適用」内
2020.03.30
1刷 089
図版「(2)予測:予測を行い、誤差とデルタを計算」内
2020.05.14
1刷 091
図版「(2)予測:予測を行い、誤差とデルタを計算」内
2020.05.14
1刷 092
図版「(4)学習:重みを更新」内
2020.05.14
1刷 093
図「(3)比較:各weight_deltaを計算し、それぞれの重みに適用」内
2020.03.30
1刷 125
コード内
hidden_size = 4

weights_0_1 = 2 * np.random.random((3, hidden_size)) - 1
weights_1_2 = 2 * np.random.random((hidden_size, 1)) - 1
hidden_size = 4

streetlights = np.array( [ [ 1, 0, 1 ],
                                  [ 0, 1, 1 ],
                                  [ 0, 0, 1 ],
                                  [ 1, 1, 1 ] ] )

walk_vs_stop = np.array([[ 1, 1, 0, 0]]).T

weights_0_1 = 2 * np.random.random((3, hidden_size)) - 1
weights_1_2 = 2 * np.random.random((hidden_size, 1)) - 1
2020.04.07
1刷 127
図版「(1)ネットワークの重みとデータを初期化」
2020.04.07