マナティ

購入形態

PDF
3,949円
数量:

カートに追加されました。カートを見る

カートに入れる
紙の本を買う

C++で学ぶディープラーニング

マイナビ出版

ニューラルネットワークの基礎から実装まで、C++のサンプルコードで学ぶ

本書は、ディープラーニング(深層学習)の基礎を学ぶ初級者やソフトウェアエンジニアの方を対象に、ディープラーニングのベースとなっているニューラルネットワークからその派生技術や応用まで、実際に動くC++のソースコードを参照しながら学ぶ内容となっています。前半はニューラルネットワークに関する必須知識を扱い、後半ではニューラルネットワークの派生技術や応用に言及し、徐々に高度な内容となっていきます。

【本書の内容】
Chapter1「ディープラーニング概論」……ディープラーニングの概要と、ニューラルネットワーク構築時に最低限必要なC++プログラミングの知識をまとめます。

Chapter2「ニューラルネットワークのための行列演算と並列プログラミング」……並列プログラミングの重要性とその知識や行列演算を解説します。

Chapter3「ニューラルネットワーク」……パーセプトロンと呼ばれるニューラルネットワークの最小単位となるユニット、パーセプトロンを重ねたニューラルネットワークの基本形である層状パーセプトロン(MLP)を説明します。

Chapter4「誤差逆伝播」……ニューラルネットワークのパラメーター学習方法である、誤差逆伝播法を詳しく解説します。

Chapter5「C++によるニューラルネットワークの実装」……多層パーセプトロンを用いた手書き数字の画像認識を、実際にコーディングしながら動かすことで、ディープラーニングを体験します。本章では、ニューラルネットワークの基礎が詰まったベーシックな分類モデルを構築することで、処理全体の流れを把握することを目的とします。

Chapter6「学習の最適化と過学習」……機械学習全般で発生する過学習にフォーカスし、ニューラルネットワークでの過学習を抑えるテクニックを紹介します。本章以降から、単なるニューラルネットワークではなく、ディープラーニングの範疇となります。

Chapter7「事前学習」……ディープラーニングがブレイクするきっかけとなった技術の1つであるオートエンコーダーを解説します。

Chapter8「畳み込みニューラルネットワーク」……現在ディープラーニングの花形といわれる畳み込みニューラルネットワークを解説します。主に画像認識で利用され、近年はめざましい成果をあげている技術です。

Chapter9「再帰型ニューラルネットワーク」……再帰型ニューラルネットワークと呼ばれる、自己の出力を入力とする再帰構造となったニューラルネットワークを使い、自然言語処理への応用例を紹介します。統計的機械翻訳や自動応答、音声認識などの分野で、近年のAIの大きな進化の推進役となっている技術です。

本書では開発言語としてC++を採用しています。C++でほぼすべてをスクラッチから実装しており、最終的に完成するコードはディープラーニングのC++フレームワークとして機能します。サンプルコードはダウンロード可能。

発売日:2017-06-26

ページ数:264ページ

目次

Chapter1 ディープラーニング概論
1-1 ディープラーニング
   1-1-1 ディープラーニングとは
   1-1-2 ディープラーニングの背景
   1-1-3 ディープラーニングができること
   1-1-4 ディープラーニングの応用例
   1-1-5 本書が対象とする読者
   1-1-6 本書の構成
   1-1-7 本書で提供するソースコードについて
1-2 本書で必要とするC++の機能
   1-2-1 ポインター
   1-2-2 シェアードポインター
   1-2-3 vector
   1-2-4 map
   1-2-5 リスト構造
   1-2-6 ツリー構造

Chapter2 ニューラルネットワークのための行列演算と並列プログラミング
2-1 GPUの活用
   2-1-1 並列プログラミングの重要性
   2-1-2 GPUと深層学習
   2-1-3 GPUの利用
2-2 CUDAプログラミング
   2-2-1 CUDAカーネル
   2-2-2 スレッドの構成
   2-2-3 CPUメモリーとGPUメモリー
2-3 行列演算
   2-3-1 行列演算のフレームワーク化
   2-3-2 cuBLAS
   2-3-3 行列四則演算以外の例
   2-3-4 演算子の定義

Chapter3 ニューラルネットワーク
3-1 単純パーセプトロン
   3-1-1 単純パーセプトロンのモデル
   3-1-2 単純パーセプトロンが可能なこと
   3-1-3 単純パーセプトロンの学習過程
3-2 層状パーセプトロン
   3-2-1 層状パーセプトロンのモデル
   3-2-2 活性化関数
   3-2-3 回帰問題における層状パーセプトロンの学習
   3-2-4 分類問題における層状パーセプトロンの学習
3-3 ニューラルネットワークのパラメータ推定
   3-3-1 確率的最急降下法 (Stochastic Gradient Descent, SGD)
   3-3-2 ミニバッチ
   3-3-3 重みの初期化

Chapter4 誤差逆伝播
4-1 順方向の計算
   4-1-1 計算グラフ
   4-1-2 ミニバッチの行列表現
4-2 微分の連鎖率
   4-2-1 合成関数の微分
   4-2-2 微分の連鎖率
   4-2-3 多層ニューラルネットワークでの各パラメーターの微分
   4-2-4 微分の連鎖率のグラフィカル表現
4-3 勾配消失問題
   4-3-1 勾配消失問題とは?
   4-3-2 勾配消失問題への対処

Chapter5 C++によるニューラルネットワークの実装
5-1 後退型自動微分の実装
   5-1-1 変数
   5-1-2 関数の基底クラス
   5-1-3 活性化関数の定義例
   5-1-4 線形関数の定義例
   5-1-5 クロスエントロピー誤差関数
   5-1-6 逆伝播
5-2 関数ラッパー
5-3 モデル
   5-3-1 モデルの定義
   5-3-2 モデルの保存と復元
5-4 オプティマイザー
   5-4-1 オプティマイザーの基底クラス
   5-4-2 オプティマイザーの例
5-5 MNISTを例にした学習と評価
   5-5-1 MNISTデータセットの入手
   5-5-2 MNISTのデータフォーマット
   5-5-3 分類モデル
5-6 Irisを例にした学習と評価
   5-6-1 Irisのデータフォーマット
   5-6-2 分類モデル

Chapter6 学習の最適化と過学習
6-1 学習の最適化
   6-1-1 モーメンタムSGD
   6-1-2 NAG
   6-1-3 AdaGrad
   6-1-4 RMSprop
   6-1-5 AdaDelta
   6-1-6 Adam
   6-1-7 Adamの実装
6-2 過学習への対応
   6-2-1 正則化
   6-2-2 ドロップアウト
   6-2-3 ドロップアウトの実装
   6-2-4 バッチ正規化
   6-2-5 バッチ正規化の実装

Chapter7 事前学習
7-1 オートエンコーダーと事前学習
   7-1-1 オートエンコーダー
   7-1-2 スパースオートエンコーダー
   7-1-3 隠れ層の重み
   7-1-4 デノイジングオートエンコーダー
   7-1-5 事前学習
7-2 オートエンコーダーの実装
   7-2-1 隠れ層
   7-2-2 隠れ層のラッパー
   7-2-3 オートエンコーダーの構築と学習

Chapter8 畳み込みニューラルネットワーク
8-1 畳み込み
   8-1-1 画像
   8-1-2 画像フィルター
   8-1-3 パディング
   8-1-4 プーリング
8-2 畳み込み層
   8-2-1 畳み込み層の計算
   8-2-2 畳み込み層計算の工夫
   8-2-3 フィルター係数の初期化
   8-2-4 畳み込み層の実装
   8-2-5 プーリング層の実装
   8-2-6 全結合層
8-3 CIFAR-10 を使った画像認識
   8-3-1 CIFAR-10のラベル
   8-3-2 ファイルフォーマット
   8-3-3 分類モデル

Chapter9 再帰型ニューラルネットワーク
9-1 広く応用できる再帰型ニューラルネットワーク
   9-1-1 再帰型ニューラルネットワークのモデル
   9-1-2 再帰型ニューラルネットワークの逆伝播
   9-1-3 逆伝播の詳細
9-2 再帰型ニューラルネットワークの問題点と解決策
   9-2-1 LSTM
   9-2-2 LSTMの誤差逆伝播
   9-2-3 LSTMの実装
   9-2-4 GRU
   9-2-5 GRUの実装
   9-2-6 Truncated BPTT
   9-2-7 数字の記憶
   9-2-8 サイン波の再現
9-3 単語のベクトル表現
   9-3-1 ベクトル表現
   9-3-2 ベクトル表現の実装
9-4 翻訳モデル・アテンションモデル
   9-4-1 エンコーダー・デコーダーのモデル
   9-4-2 パディング
   9-4-3 アテンションモデル
9-5 自動翻訳の実装
   9-5-1 翻訳コーパス
   9-5-2 エンコーダー・デコーダーモデルを使ったネットワーク訓練
   9-5-3 エンコーダー・デコーダーモデルを使った翻訳(推定)
   9-5-4 実行結果の考察

著者プロフィール

  • 藤田毅(著者)

    エキサイト株式会社テクノロジー戦略室室長ならびにExcite Media Service PH Inc.取締役。機械学習をベースとしたプロダクト開発に従事し、コンテンツレコメンデーションエンジンWisteriaなど、自社サービスの開発指揮を執っている。2000年エキサイト株式会社入社後、Web検索エンジンの開発運用に携わり、インフラ責任者やアプリケーション開発責任者として活躍。2008年にWebサイトの受託開発、モバイル向けアプリケーションやゲームを開発・運用会社を設立。2013年にはビッグデータ解析を核とするスタートアップ企業にジョインし、ソーシャルメディア上のデータ解析および株価分析などを担当。2015年以降はエキサイト株式会社に戻り現職に至る。