書籍概要

はじめての深層学習(ディープラーニング)プログラミング

著者
発売日
更新日

概要

本書は,わずか11行のプログラム解説からはじまります。たったそれだけで深層学習を体験できるのが,いまの状況です。自らがハマってコードを書いて習得した著者が,Deel,Chainer,TensorFlowといった深層学習用フレームワークを使い,畳込みニューラルネットワークやリカレントニューラルネットワークのしくみをコードを読み解きながら解説します。

ニューラルネットワークの学習には,画像と自然言語を対象に,GUIツール(CSLAIER)を使って行う方法を紹介。さらに後半では,AlphaGoにも使われた深層強化学習,ファインチューニングの手法,深層化の本命と目されているオートエンコーダについても知ることができます。

こんな方におすすめ

  • AIプログラミング初学者

サンプル

samplesamplesample

目次

第1章 深層学習超入門

  • 1.1 11行で書ける深層学習AIプログラム
  • 1.2 環境のセットアップ
    • 1.2.1 深層学習のためのマシン構成
  • 1.3 ソフトウェア環境のセットアップ
    • 1.3.1 Gitとpipをインストールする
    • 1.3.2 OpenCVをインストールする
    • 1.3.3 CUDAをインストールする
    • 1.3.4 Chainerをインストールする
    • 1.3.5 Deelをインストールする
  • 1.4 手軽に画像認識を試す
  • 1.5 カメラに写ったものをリアルタイムに認識する
  • 1.6 ビデオから物体認識する
  • 1.7 どうして画像認識できるのか?
  • 1.8 畳込みニューラルネットワークで画像をクラスに分類する
  • 1.9 わずか15行のプログラムで画像を学習させてみる
  • 1.10 本格的に学習させてみよう
    • 1.10.1 深層学習のためのGUI環境CSLAIERのインストール
    • 1.10.2 学習データセットの作り方
    • 1.10.3 学習をさせてみよう
    • 1.10.4 学習グラフを見るコツ
    • 1.10.5 うまく学習させるためのコツ

第2章 Chainerで機械学習を基礎から学ぼう

  • 2.1 最も簡単なニューラルネットワーク
  • 2.2 論理演算を学習させてみる
  • 2.3 畳込みニューラルネットワーク(CNN,Convolutional Neural Network)
  • 2.4 畳込みニューラルネットワークのいろいろ
  • 2.5 学習させた畳込みニューラルネットワークをPythonから利用する

第3章 リカレントニューラルネットワークのプログラミング

  • 3.1 入力するたびに答えが変わるニューラルネットワーク
  • 3.2 CSLAIERによるLSTM
  • 3.3 LSTMによるプログラミング
  • 3.4 学習させたデータからの推定

第4章 TensorFlowを学ぼう

  • 4.1 分散計算に適した本格的なフレームワーク「TensorFlow」
  • 4.2 TensorFlowのインストール
  • 4.3 テンソルとは?
  • 4.4 Hello, TensorFlow
  • 4.5 ChainerとTensorFlowを比較しながら学ぶ
  • 4.6 TensorFlowでの画像分類(Inception-v3)
  • 4.7 会話ロボットはここまで喋れる!?
  • 4.8 TensorFlowのseq2seqで英仏自動翻訳ニューラルネットワークを作ろう

第5章 深層強化学習 Deep Q Learning

  • 5.1 強化学習とは?
  • 5.2 DQNとは?
  • 5.3 LIS,Life In Silico(CNNとDQNの組み合わせで作る人工生命)
  • 5.4 LIS のインストールと実行

第6章 深層学習のこれから

  • 6.1 名画のタッチを真似する人工知能
  • 6.2 写真から説明文を生成 その逆も可能!? 意訳し,創作する人工知能
  • 6.3 超解像からビッグデータ解析まで,深層学習の本命 オートエンコーダ
  • 6.4 積層オートエンコーダによるビッグデータ解析
  • 6.5 畳込みニューラルネットワークのファインチューニング
  • 6.6 複雑なAIをよりシンプルなAIに学習させる「蒸留」
  • 6.7 人工知能と生体知能の類似性と違い
  • 6.8 おわりに

サポート

補足情報

(2016年12月9日更新)

P.129 4.8 本文2~3行目のURLについて

P.129に掲載しているseq2seqのチュートリアルページから,本書で解説したr0.8が削除されてしまいました。最新バージョンのURLは,

https://www.tensorflow.org/versions/r0.12/tutorials/seq2seq/index.html

です。

ただし本書の内容はr0.8で確認したものですので,上記サイトの内容と異なる可能性があることをご承知おきください。

Facebookサポートサイト

著者の清水亮氏により,Facebookの公開グループ「はじめての深層学習プログラミング」が開設されています。アップデート情報や本書に関するご質問ができます。本書をお持ちの方はよろしければご参加ください。

https://www.facebook.com/groups/first.deeplearning.programming/

Deelについて

2016年12月9日にDeelの修正を行いました。この日以前にgit cloneをされた方は,たいへんお手数ですが,git pullをしてから本書の内容をお試しください。

最新版のChainerをインストールする場合

最新版(2016年12月9日現在でv1.18.0)のChainerをインストールする場合は,Python 2.7.8以降である必要があります。ご注意ください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2017年6月12日最終更新)

P.61 本文下から4行目

2層パーセプトロン
1層パーセプトロン

P.61 本文下から3行目

2層パーセプトロン
1層パーセプトロン

(以下,2017年4月19日更新)

P.92 リスト3.2 CharRNN.pyのコード9行目


9: l0 = F.linear(1, units),

9: embed = F.EmbedID(n_vocab, n_units),

P.93 リスト3.2 CharRNN.pyのコード29行目


29: h0 = F.relu(self.l0(x))

29: h0 = self.embed(x)

P.94 リスト3.2 CharRNN.pyのコード66行目


66: volatile = not train)

66: volatile = not train) for name in ('c1', 'h1', 'c2', 'h2', 'c3', 'h3','c4','h4','c5','h5')}

P.95 リスト3.3 train.pyのコード15行目からのload_data関数


15: def load_data(args):
16:     vocab = {}
17:     print ('%s/input.txt'% args.data_dir)
18:     # words = codecs.open('%s/input.txt' % args.data_dir, 'rb','UTF-8').read()
19: 
20:     dat = []
21:     for l in open('%s/input.txt' % args.data_dir).readlines():
22:         data = eval(l[:-1])
23:         dat.append(data)
24: 
25:     words = dat
26:     dataset = np.ndarray((1,1), dtype=np.float32)
27:     for i, word in enumerate(words):
28:         if word not in vocab:
29:             vocab[word] = len(vocab)
30:         dataset[i] = word
31:     print 'corpus length:', len(words)
32:     print 'vocab size:', len(vocab)
33:     return dataset, words, vocab

15: def load_data(args):
16:     vocab = {}
17:     print ('%s/input.txt'% args.data_dir)
18:     words = codecs.open('%s/input.txt' % args.data_dir, 'rb','UTF-8').read()
19:     words = list(words)
20:     dataset = np.ndarray((len(words),), dtype=np.int32)
21:     for i, word in enumerate(words):
22:         if word not in vocab:
23:             vocab[word] = len(vocab)
24:         dataset[i] = vocab[word]
25:     print 'corpus length:', len(words)
26:     print 'vocab size:', len(vocab)
27:     return dataset, words, vocab

(以下,2016年12月27日更新)

P.19 1.4 実行例の1行目

$ cd deel
削除

P.56 2.2 OR演算の学習プログラムのコード9行目

9: l=L.Linear(2, 1),
9: l1=L.Linear(2, 1),

P.57 OR演算の学習プログラム解説のコード9行目

9: l=L.Linear(2, 1),
9: l1=L.Linear(2, 1),

P.58 OR演算の学習プログラムに活性化関数を加えたプログラム解説のコード9行目

9: l=L.Linear(2, 1),
9: l1=L.Linear(2, 1),

P.119 図4.6

誤

正

※出力「y」の手前の「sigmoid」が不要。

商品一覧