最近、「ディープラーニング:Deep Learning (深層学習)」が注目されています。
ディープラーニングは、人工知能アルゴリズムの中の1つで、機械学習と呼ばれる分野の技術です。ニューラルネットワークを進化させたアルゴリズムです。
ディープラーニングは、すでにわたしたちの身近で使われていて、Google、Amazon、Facebook などの企業では、たとえば自社のページの広告配信に、ディープラーニングを応用しています。
ディープラーニングは広告配信に効果的なパターンをみつけるのに役立っています。
- へぇ~、ディープラーニングってすごそうだねぇ~
- でも、ディープラーニングって大企業だけで使われてる技術なんでしょ~
- 縁がなさそう~
と思われるかもしれません。
でも、実はそうではないんです。
「ディープラーニング」は、高度な数学とアルゴリズムによって成り立っていますが、
ディープラーニングは、「フレームワーク」を使うことで、誰でも意外と簡単に実行することができます。
本記事の概要
「ディープラーニング」は、「フレームワーク」を使うとより手軽に実行できる
え?フレームワークってなに?
って方もおられるかと思います。
フレームワークの実体は、ある役割をもったプログラムのまとまりです。今回はディープラーニングを実行するためのプログラムの集団です。
フレームワークは、専門家のような役割を果します。
どういうことかというと、ディープラーニングの詳しい内容は知らなくても、難しいところは、フレームワーク(専門家)に任せてしまうことで、気軽に実行することができます。
たとえば、て特許を出願したいときに、詳しいことは専門家である弁理士に依頼する方法がありますよね。
これと同じで、ディープラーニングの難しいところはフレームワークという専門家に任せてしまえばいいんです。
そうすることで、ディープラーニングを意外と簡単に実行できるというメリットが生まれます。
え!?そうなの!
それならできそう!
って思ってもらえたのではないでしょうか。しかも、無料で使えるのでお金は1円もかかりません。
ディープラーニングをフレームワークで実行するための2つのポイント
ディープラーニングをフレームワークでスムーズに実行するには、
①、簡単なプログラミングの知識
②、ディープラーニングの概要
を知っておくとはかどります。
①、簡単なプログラミングの知識
まずプログラミングですが、最初は使っている人が多い言語で学ぶといいと思います。
なにかつまずいたときも、相談できる人やネットの情報も多くなるので解決しやすくなります。
ディープラーニングでよく使われている言語は、「Python」です。
Pythonはプログラミング言語の中でも理解しやすい言語で、ディープラーニングなどの機械学習を使いやすいという特徴があります。
ディープラーニングの初学者が選択しやすい言語となっています。
②、ディープラーニングの概要
ディープラーニングのフレームワークは、無料で公開されていて、さまざまなものがあります。
以下にアルファベット順で示してみました。(他にもあるかと思いますので、抜けているものがあれば教えていただけますと幸いです)
- Caffe
- Chainer
- CNTK
- DL4J
- KERAS
- MATCONVNET
- MXNET
- TensorFlow
- Theano
- Torch
などのフレームワークがあります。
こんなにあったらどれを選べばいいかわからないよ~
と思われたかもしれません。これらはそれぞれ特徴があり、Pythonだけでなく、他の言語で使えるものもあります。
今回はこの中で、Chainer, TensorFlow などは、Pythonを使って実行することができます。
「Chainer」 は日本のベンチャー企業「Preferred Networks」が開発している国産フレームワークで、日本語のドキュメントも多いので、初学者がつまずいたときに助かるかもしれません。
Chainer で深層学習を学ぶにはこちらの書籍もございます。↓
また、「TensorFlow」 は Google が公開したフレームワークで、世界的に使ってる人が多いので、これもドキュメントが多く、迷った時に解決しやすいかと思います。
TensorFlow でディープラーニングを学ぶにはこちらもございます。↓
フレームワークを手に入れた後の、具体的な手順はどうするの?
これでディープラーニングを実行できる!
でも具体的にはどう実行すればいいんだろう?
まとまった手順が学べると助かるんだけどな~
と思われたかもしれません。
そこで今回は、フレームワークを使って、Pythonで手軽にディープラーニングをやってみたいあなたにおすすめの1冊をご紹介します↓
本書では、
- 深層学習とはなにか
- 深層学習の現状
- 深層学習の理解に欠かせないニューラルネットワークの考え方
- 深層学習の理論
- 深層学習のフレームワーク
- 深層学習の応用例
- Pythonの使い方
- Pythonでのデータの扱い方
- Pythonから深層学習を使うための手順
といった、ディープラーニングを実行するうえで必要となる知識から、
具体的な実行手順などを効率よく学ぶことができます。
本書の構成は以下の通りです
1、はじめに
1-1、深層学習の現状
1-2、日常の中の深層学習
1-3、実践による理解
1-4、本書で使用した環境
1-5、必要な予備知識
1-6、取り上げた話題
1-7、理論および技術の展開
1-8、本書で用いた処理系、ツール、パッケージ
Caffe
Chainer
TensorFlow
Theano
本書の構成
数学表記
章末問題
2、Python
2-1、動作環境
2-2、Python2 か Python3 か
2-3、参考情報
2-4、コーディングスタイル
2-5、Python と NumPy 概略
基本データ型
コンテナ
関数
クラス
NumPy
2-6、Pythonによる深層学習フレームワーク
Caffe
Theano
Chainer
LSTM とゲート付き再帰ユニット
TensorFlow
2-7、scikit-learn
章末問題
3、ニューラルネットワークの基盤となる考え方
3-1、ニューロンモデル
生物学的ニューロンモデル
人工ニューロンのモデル
3-2、パーセプトロン
3-3、バックプロパゲーション
バックプロパゲーションの問題点
中間層の意味
3-4、多層化
3-5、リカレントニューラルネットワーク
単純再帰型ニューラルネットワーク
リカレントニューラルネットワークの学習
系列予測と系列生成
章末問題
4、深層学習理論
4-1、畳み込みニューラルネットワーク
LeNet
一般化行列積(GEMM)
AlexNet
畳み込みニューラルネットワークの諸技法
4-2、LSTM
CEC の呪い
勾配消失問題、勾配爆発問題
ゲート付き再帰ユニット
双方向再帰モデル:BRNN
LSTMの変種
4-3、確率的勾配降下法
勾配降下法:GD
ニュートン法:2GD
確率的勾配降下法:SGD
2階確率的勾配降下法:2SGD
AdaGrad
AdaDelta
Adam
RMSprop
Nesterov
章末問題
5、深層学習の現在
5-1、GoogLeNet
5-2、VGG
5-3、SPP
5-4、ネットワーク・イン・ネットワーク
5-5、残差ネット ResNet
5-6、画像からの領域切り出し
5-7、R-CNN
5-8、Fast R-CNN
5-9、Faster R-CNN
5-10、リカレントニューラルネットワーク言語モデル
従来法
リカレントニューラルネットワーク言語モデル上の意味空間
スキップグラム(Word2vec)
ニューラルネットワーク機械翻訳
ニューラル言語モデル
注意の導入
プログラムコード生成
ニューラルチューリングマシン
構文解析
音声認識
リカレントニューラルネットワーク関係の実装サイト
6、深層学習の展開
6-1、ニューラル画像脚注づけ
MS COCO
グーグルの方法
スタンフォード大の方法
UCバークリー校の方法
ニューラル画像脚注づけへ注意の導入
6-2、強化学習によるゲームAI
ボードゲーム
強化学習
TD学習
TDバックギャモン
Q学習
ディープQ学習ネットワーク
ロボット制御
6-3、メモリネットワーク
6-4、強化学習ニューラルチューリングマシン
6-5、顔情報処理
従来法
深層学習による顔情報処理
章末問題
7、おわりに
7-1、工学と哲学の狭間にある尊厳
7-2、変容する価値と社会
章末問題
付録
A1,画像処理基本と用語
SIFT
HOG
Bag-of-Words
スーパーピクセルズ
グラフ理論による領域分割
MCG
A2,ミコロフのリカレントニューラルネットワーク言語モデル
A3,自然言語処理における指標
TD-IDF
パッケージ
BLEU
F-値
パープレキシティ
METEOR
ROUGE-L
CIDEr
バックオフ標準化
トークナイザ
WER
A4,ヴィオラ・ジョーンズ法による顔領域の切り出し
引用文献
索引
となっています
本書を参照しながら1つ1つ試していくことで、ディープラーニングを理解しながら実行することができるようになります。
Pythonで深層学習を実行する際に必要となる「知識」や「実行手順」が、網羅的に系統立ててまとめられているので、お手元にあって損はない1冊となっています。
「Python」で「ディープラーニング」をより手軽にやってみたい方や、ディープラーニングの現状や理論・実行方法などを、網羅的に系統的に整理して理解したいあなたに最適な良書です。
初学者からある程度学んだ方まで幅広く役に立ち、辞書的な使い方もできる良書です。
はじめてのディープラーニング -Pythonで学ぶニューラルネットワークとバックプロパゲーション- (Machine Learning)
夢見るディープラーニング ニューラルネットワーク[Python実装]入門
ディープラーニング入門 ―Pythonではじめる金融データ解析― (FinTech ライブラリー)
初めてのTensorFlow 数式なしのディープラーニング
ディープラーニングがわかる数学入門
プログラマのための ディープラーニングのしくみがわかる数学入門
やさしく学ぶ 機械学習を理解するための数学のきほん ~アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで~
人工知能プログラミングのための数学がわかる本
機械学習 ─データを読み解くアルゴリズムの技法─
機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)
計算物理学I ―数値計算の基礎/HPC/フーリエ・ウェーブレット解析― (実践Pythonライブラリー)
Rで学ぶデータサイエンス: データマイニングの基礎から深層学習まで
ゲームAIと深層学習: ニューロ進化と人間性
PythonとKerasによるディープラーニング
画像認識の極み‟ディープラーニング” (映像情報MOOK)
実装 ディープラーニング
深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ)
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロから作るDeep Learning ❷ ―自然言語処理編
TensorFlow Machine Learning Cookbook: Over 60 recipes to build intelligent machine learning systems with the power of Python, 2nd Edition (English Edition)
Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow, 2nd Edition (English Edition)
Deep Learning from Scratch: Building with Python from First Principles
こちらの記事もございます↓