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

[cover photo]
TOPICS
Data Science , Database , R
発行年月日
PRINT LENGTH
400
ISBN
978-4-87311-857-4
原書
Deep Learning with R
FORMAT
Print PDF
Ebook
4,400円
Ebookを購入する
Print
4,400円

Pythonのディープラーニング用ライブラリKeras開発者のFrançois Cholletと、RStudio創設者兼CEO兼開発者としてRコミュニティで絶大な信頼を集めるJ. J. Allaireによる共著。ディープラーニングを学びたいRユーザ向けに、まず概念を説明し、それを実装したサンプルを示すというスタイルで、実際にサンプルを動かしながら学ぶことができます。ディープラーニングとはどんなものか、AIや機械学習との関連、なぜ重要性が増しているのかだけでなく、コンピュータビジョン、自然言語処理などの実用的な例題も扱います。使い慣れたRを使ってディープラーニングについて学びたいというRユーザの期待に応える一冊です。

目次

はじめに

第Ⅰ部 ディープラーニングの基礎

1章  ディープラーニングとは何か
    1.1  人工知能、機械学習、ディープラーニング
        1.1.1  人工知能
        1.1.2  機械学習
        1.1.3  データから表現を学習する
        1.1.4  ディープラーニングの「ディープ」なところは何か
        1.1.5 3枚の図で理解するディープラーニングの仕組み
        1.1.6  ディープラーニングが今までに達成してきたこと
        1.1.7  短期的な達成に過大な期待をかけてはならない
        1.1.8 AIの可能性
    1.2  ディープラーニング以前:機械学習小史
        1.2.1  確率モデリング
        1.2.2  初期のニューラルネットワーク
        1.2.3  カーネル法
        1.2.4  決定木、ランダムフォレスト、勾配ブースティングマシン
        1.2.5  ニューラルネットワークの復活
        1.2.6  ディープラーニングは何が違うのか
        1.2.7  機械学習の現状
    1.3  なぜディープラーニングなのか、なぜ今なのか
        1.3.1  ハードウェア
        1.3.2  データ
        1.3.3  アルゴリズム
        1.3.4  投資の新しい波
        1.3.5  ディープラーニングの大衆化
        1.3.6  この流れは続くのか

2章  始める前の準備:ニューラルネットワークの数学的基礎
    2.1  初めてのニューラルネットワーク
    2.2  ニューラルネットワークのデータ表現
        2.2.1  スカラー(0Dテンソル)
        2.2.2  ベクトル(1Dテンソル)
        2.2.3  行列(2Dテンソル)
        2.2.4 3Dテンソル以上の高次テンソル
        2.2.5  主要な属性
        2.2.6 Rによるテンソル演算
        2.2.7  データバッチの記法
        2.2.8  データテンソルの実際例
        2.2.9  ベクトルデータ
        2.2.10  時系列データ、シーケンスデータ
        2.2.11  イメージデータ
        2.2.12  動画データ
    2.3  ニューラルネットワークのギア:テンソル演算
        2.3.1  要素ごとの演算
        2.3.2  次元の異なるテンソルを使った演算
        2.3.3  テンソルのドット積
        2.3.4  テンソルの形状変更
        2.3.5  テンソル演算の幾何学的解釈
        2.3.6  ディープラーニングの幾何学的解釈
    2.4  ニューラルネットワークのエンジン:勾配に基づく最適化
        2.4.1  微分係数とは何か
        2.4.2  テンソル演算の微分係数:勾配
        2.4.3  確率的勾配降下法
        2.4.4  微分係数の連鎖:誤差逆伝播法
    2.5  最初のプログラム例の見直し
    2.6  まとめ

3章  ニューラルネットワークによる問題解決の基礎
    3.1  ニューラルネットワークの構造
        3.1.1  階層:ディープラーニングの基本要素
        3.1.2  モデル:階層のネットワーク
        3.1.3  損失関数と最適化器:学習プロセスの鍵を握る存在
    3.2  Kerasの基礎
        3.2.1  Keras、TensorFlow、Theano、CNTK
        3.2.2  Kerasのインストール
        3.2.3  Kerasを使った開発:簡単な概要
    3.3  ディープラーニングワークステーションのセットアップ
        3.3.1  Kerasの実行環境:2つのオプション
        3.3.2  クラウドでのディープラーニングジョブの実行が持つ長所と短所
        3.3.3  ディープラーニングにもっとも適したGPUは何か
    3.4  映画のレビュー記事の分類:2クラス分類の例
        3.4.1 IMDBデータセット
        3.4.2  データの準備
        3.4.3  ネットワークの構築
        3.4.4  アプローチのチェック
        3.4.5  訓練されたネットワークを使った新データに対する予測
        3.4.6  ほかにしてみたい実験
        3.4.7  この節のまとめ
    3.5  ニュース配信記事の分類:多クラス分類の例
        3.5.1  ロイターデータセット
        3.5.2  データの準備
        3.5.3  ネットワークの構築
        3.5.4  アプローチのチェック
        3.5.5  新しいデータに対する予測の生成
        3.5.6  ラベルと損失関数の別の処理方法
        3.5.7  中間層を十分大きなものにすることの重要性
        3.5.8  ほかにしてみたい実験
        3.5.9  この節のまとめ
    3.6  住宅の価格の予測:回帰の例
        3.6.1  ボストンの住宅価格のデータセット
        3.6.2  データの準備
        3.6.3  ネットワークの構築
        3.6.4 k分割交差検証によるアプローチのチェック
        3.6.5  この節のまとめ
    3.7  まとめ

4章  機械学習の基礎
    4.1  機械学習の4つの領域
        4.1.1  教師あり学習
        4.1.2  教師なし学習
        4.1.3  自己学習
        4.1.4  強化学習
    4.2  機械学習モデルの評価
        4.2.1  訓練、評価、テストセット
        4.2.2  注意点
    4.3  データの前処理、特徴量エンジニアリング、特徴量学習
        4.3.1  ニューラルネットワークのためのデータの前処理
        4.3.2  特徴量エンジニアリング
    4.4  過学習と学習不足
        4.4.1  ネットワークのサイズの縮小
        4.4.2  重みの正則化
        4.4.3  ドロップアウトの追加
    4.5  機械学習の共通ワークフロー
        4.5.1  問題の定義とデータセットの構築
        4.5.2  成功の尺度の選択
        4.5.3  評価プロトコルの選択
        4.5.4  データの準備
        4.5.5  基準値以上の性能を持つモデルの開発
        4.5.6  スケールアップ:過学習するモデルの開発
        4.5.7  モデルの正則化とハイパーパラメータの調整
    4.6  まとめ

第Ⅱ部 ディープラーニングの実践

5章  コンピュータビジョンのディープラーニング
    5.1  CNN入門
        5.1.1  畳み込み操作
        5.1.2  最大値プーリング
    5.2  小規模なデータセットを対象とするCNNの0からの訓練
        5.2.1  小規模データのディープラーニング問題の重要性
        5.2.2  データのダウンロード
        5.2.3  ネットワークの構築
        5.2.4  データの前処理
        5.2.5  データ拡張
    5.3  訓練済みCNNの利用
        5.3.1  特徴量抽出
        5.3.2  ファインチューニング
        5.3.3  この節のまとめ
    5.4  CNNが学習したことの可視化
        5.4.1  中間活性化の可視化
        5.4.2  CNNフィルタの可視化
        5.4.3  クラス活性化ヒートマップの可視化
    5.5  まとめ

6章  テキストとシーケンスのためのディープラーニング
    6.1  テキストデータの操作
        6.1.1  単語と文字のワンホットエンコーディング
        6.1.2  単語埋め込みの使い方
        6.1.3  部品の結合:未加工テキストから単語埋め込みへ
        6.1.4  この節のまとめ
    6.2  RNNとは何か
        6.2.1  Kerasによる再帰層
        6.2.2 LSTM層とGRU層
        6.2.3  Kerasによる具体的なLSTMのコード例
        6.2.4  この節のまとめ
    6.3  RNNの高度なテクニック
        6.3.1  気温の予想の問題
        6.3.2  データの準備
        6.3.3  機械学習を使わない常識的な基準線
        6.3.4  初歩的な機械学習アプローチ
        6.3.5 RNNの基準線となる最初の試み
        6.3.6  過学習に対処するための再帰型ドロップアウト
        6.3.7  再帰層の多層化
        6.3.8  双方向RNN
        6.3.9  性能をさらに上げる方法
        6.3.10  この節のまとめ
    6.4  CNNを使ったシーケンス処理
        6.4.1  時系列データの1D畳み込み
        6.4.2  シーケンスデータの1Dプーリング
        6.4.3 1D CNNの実装
        6.4.4  長いシーケンスを処理するためのCNNとRNNの結合
        6.4.5  この節のまとめ
    6.5  まとめ

7章  高度なディープラーニングのベストプラクティス
    7.1  シーケンシャルモデルを越えて:Keras関数型API
        7.1.1  関数型API入門
        7.1.2  マルチ入力モデル
        7.1.3  マルチ出力モデル
        7.1.4  有向非巡回グラフの階層
        7.1.5  階層の重み共有
        7.1.6  階層としてのモデル
        7.1.7  この節のまとめ
    7.2  KerasコールバックとTensorBoardを使ったディープラーニングモデルの観察、モニタリング
        7.2.1  コールバックを使った訓練中のモデルの操作
        7.2.2 TensorBoard:TensorFlow可視化フレームワーク
        7.2.3  この節のまとめ
    7.3  モデルから最大限のものを引き出すために
        7.3.1  高度なアーキテクチャパターン
        7.3.2  ハイパーパラメータの最適化
        7.3.3  アンサンブル法
        7.3.4  この節のまとめ
    7.4  まとめ

8章  生成的ディープラーニング
    8.1  LSTMによるテキスト生成
        8.1.1  生成的RNN小史
        8.1.2  シーケンスデータを生成する仕組み
        8.1.3  サンプリング戦略の重要性
        8.1.4  文字レベルLSTMテキスト生成の実装
        8.1.5  この節のまとめ
    8.2  DeepDream
        8.2.1  KerasによるDeepDreamの実装
        8.2.2  この節のまとめ
    8.3  ニューラル画風変換
        8.3.1  内容の損失
        8.3.2  画風の損失
        8.3.3  Kerasによるニューラル画風変換
        8.3.4  この節のまとめ
    8.4  変分オートエンコーダによるイメージ合成
        8.4.1  イメージの潜在意味空間からのサンプリング
        8.4.2  イメージ編集のための概念ベクトル
        8.4.3  変分オートエンコーダ
        8.4.4  この節のまとめ
    8.5  敵対的生成ネットワーク(GAN)の基本原理
        8.5.1  GANの実装概要
        8.5.2  さまざまなトリック
        8.5.3  生成器
        8.5.4  判別器
        8.5.5  敵対的ネットワーク
        8.5.6  DCGANの訓練方法
        8.5.7  この節のまとめ
    8.6  まとめ

9章  まとめと展望
    9.1  重要概念の復習
        9.1.1 AIに対するさまざまなアプローチ
        9.1.2  機械学習の分野でディープラーニングが特別な地位を占めている理由
        9.1.3  ディープラーニングについてどのように考えればよいか
        9.1.4  ディープラーニングを可能にしたテクノロジー
        9.1.5  機械学習の普遍的なワークフロー
        9.1.6  主要なネットワークアーキテクチャ
        9.1.7  応用可能な領域
    9.2  ディープラーニングの限界
        9.2.1  機械学習モデルの擬人化が持つ危険
        9.2.2  局所的な汎化と極端な汎化
        9.2.3  この節のまとめ
    9.3  ディープラーニングの未来
        9.3.1  プログラムとしてのモデル
        9.3.2  誤差逆伝播法と微分可能な階層を越えて
        9.3.3  自動機械学習
        9.3.4  「生涯学習」とモジュール化されたサブルーチンの再利用
        9.3.5  長期的なビジョン
    9.4  変化のペースが速い分野についていくために
        9.4.1  Kaggleによる実世界の問題を使った練習
        9.4.2  最新の研究開発の成果を読めるarXiv
        9.4.3  Kerasエコシステムの活用
    9.5  最後に

付録A UbuntuへのKerasと依存ファイルのインストール方法
    A.1  インストールプロセスの概要
    A.2  システムレベルで必要とされるファイルのインストール
    A.3  GPUサポートのセットアップ
        A.3.1  CUDAのインストール
        A.3.2 cuDNNのインストール
        A.3.3  CUDA環境
    A.4  KerasとTensorFlowのインストール

付録B EC2 GPUインスタンス上でのRStudio Serverの実行方法
    B.1  ディープラーニングのためになぜ AWSを使うのか
    B.2  ディープラーニングのためになぜ AWSを使わないか
    B.3  AWS GPUインスタンスのセットアップ
        B.3.1  RとRStudio Serverのインストール
        B.3.2  CUDAの設定
        B.3.3  Kerasで必要なファイル
    B.4  RStudio Serverへのアクセス
    B.5  Kerasのインストール

索引