C++で学ぶディープラーニング
内容紹介
ニューラルネットワークの基礎から実装まで、C++のサンプルコードで学ぶ
本書は、ディープラーニング(深層学習)の基礎を学ぶ初級者やソフトウェアエンジニアの方を対象に、ディープラーニングのベースとなっているニューラルネットワークからその派生技術や応用まで、実際に動くC++のソースコードを参照しながら学ぶ内容となっています。前半はニューラルネットワークに関する必須知識を扱い、後半ではニューラルネットワークの派生技術や応用に言及し、徐々に高度な内容となっていきます。
【本書の内容】
Chapter1「ディープラーニング概論」……ディープラーニングの概要と、ニューラルネットワーク構築時に最低限必要なC++プログラミングの知識をまとめます。
Chapter2「ニューラルネットワークのための行列演算と並列プログラミング」……並列プログラミングの重要性とその知識や行列演算を解説します。
Chapter3「ニューラルネットワーク」……パーセプトロンと呼ばれるニューラルネットワークの最小単位となるユニット、パーセプトロンを重ねたニューラルネットワークの基本形である層状パーセプトロン(MLP)を説明します。
Chapter4「誤差逆伝播」……ニューラルネットワークのパラメーター学習方法である、誤差逆伝播法を詳しく解説します。
Chapter5「C++によるニューラルネットワークの実装」……多層パーセプトロンを用いた手書き数字の画像認識を、実際にコーディングしながら動かすことで、ディープラーニングを体験します。本章では、ニューラルネットワークの基礎が詰まったベーシックな分類モデルを構築することで、処理全体の流れを把握することを目的とします。
Chapter6「学習の最適化と過学習」……機械学習全般で発生する過学習にフォーカスし、ニューラルネットワークでの過学習を抑えるテクニックを紹介します。本章以降から、単なるニューラルネットワークではなく、ディープラーニングの範疇となります。
Chapter7「事前学習」……ディープラーニングがブレイクするきっかけとなった技術の1つであるオートエンコーダーを解説します。
Chapter8「畳み込みニューラルネットワーク」……現在ディープラーニングの花形といわれる畳み込みニューラルネットワークを解説します。主に画像認識で利用され、近年はめざましい成果をあげている技術です。
Chapter9「再帰型ニューラルネットワーク」……再帰型ニューラルネットワークと呼ばれる、自己の出力を入力とする再帰構造となったニューラルネットワークを使い、自然言語処理への応用例を紹介します。統計的機械翻訳や自動応答、音声認識などの分野で、近年のAIの大きな進化の推進役となっている技術です。
本書では開発言語としてC++を採用しています。C++でほぼすべてをスクラッチから実装しており、最終的に完成するコードはディープラーニングのC++フレームワークとして機能します。サンプルコードはダウンロード可能。
続きを読む
充実のラインナップに加え、割引セールも定期的に実施中!
商品を選択する
フォーマット | 価格 | 備考 | |
---|---|---|---|
3,949円 | ※ご購入後、「マイページ」からファイルをダウンロードしてください。 ※ご購入された電子書籍には、購入者情報、および暗号化したコードが埋め込まれております。 ※購入者の個人的な利用目的以外での電子書籍の複製を禁じております。無断で複製・掲載および販売を行った場合、法律により罰せられる可能性もございますので、ご遠慮ください。 |
備考
藤田毅(フジタ タケシ)
エキサイト株式会社テクノロジー戦略室室長ならびにExcite Media Service PH Inc.取締役。
機械学習をベースとしたプロダクト開発に従事し、コンテンツレコメンデーションエンジンWisteriaなど、自社サービスの開発指揮を執っている。
2000年エキサイト株式会社入社後、Web検索エンジンの開発運用に携わり、インフラ責任者やアプリケーション開発責任者として活躍。2008年にWebサイトの受託開発、モバイル向けアプリケーションやゲームを開発・運用会社を設立。2013年にはビッグデータ解析を核とするスタートアップ企業にジョインし、ソーシャルメディア上のデータ解析および株価分析などを担当。2015年以降はエキサイト株式会社に戻り現職に至る。
目次
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 実行結果の考察