現在、人工知能の分野では Deep Learning という技術が注目されています。メディアにも頻繁に取り上げられ、Deep Learning がどういう技術で、どういったことができるのかは、ある程度、認知されているとは思います。
ただ Deep Learning のプログラムは何をやっているのか、どうやって作成すればよいのかなどのプログラムに関する部分は、まだ広くは知られていないと思います。
通常、Deep Learning のプログラムを作るには、Deep Learning のフレームワークを利用します。そして従来から様々なフレームワークが提案されてきましたが、どれも皆、対象とするネットワークがサンプルプログラムのものと違ってしまうと、とたんにプログラミングが困難になってしまいます。
このような状況において、2015年6月に 株式会社 PFI がChainer というDeep Learning のフレームワークを公開しました。Chainer は複雑なネットワークでも、簡単にDeep Learning のプログラムが書けるという大きな特徴があります。
本講座では Chainer を使った Deep Learning のプログラム作成法を示します。簡単なネットワークでも、複雑なネットワークでも、作り方は同じであることを理解し、Chainer を用いて、自分の考えたモデルに対するDeep Learning のプログラムが書けるようになることを目指します。 またプログラムの書き方が分かれば、Deep Learning についてもう一歩深く理解できると思います。
- ニューラルネット
- Deep Learning をニューラルネットという観点から説明します。
- Deep Learning は簡単に言ってしまえば従来のニューラルネットを多層にしたものです。なぜこれまで多層にできなかったのか、なぜ多層にすることで、これほどの成果が出せるのかを説明します。
- ニューラルネットとは何か
- ニューラルネットの層の数
- 多層にする工夫
- 最急降下法と誤差逆伝播法
- ニューラルネットは訓練データから関数を推定する回帰のモデルです。
- その推定方法が最急降下法になります。ニューラルネットの関数のモデルはネットワークなので、この最急降下法がいわゆる誤差逆伝播法と呼ばれるものであることを解説します。
- ニューラルネットにおける学習
- 目的関数
- 最急降下法
- Chainer の仕組み
- Deep Learning の学習も関数を推定する回帰の問題であり、最急降下法が使われます。最急降下法では勾配を求める部分がポイントです。Chainer ではどのように勾配を求めるのかを説明します。具体的にChainer のプログラムで利用するオブジェクトを説明しながら、どのように関数を推定しているのかを確認してゆきます。
- 合成関数と計算グラフ
- 計算グラフを利用した勾配計算
- Chainer 基本オブジェクト
- Variable
- functions
- links
- 最適化
- Chainer の基本
- まず Chainer のプログラムのひな形を示します。次に簡単な分類問題を例として、その問題を解く Chainer のプログラムをひな形に沿って作って見ます。またミニバッチによる動作及び誤差の累積による動作を簡単な例で示し、それらの違いを説明します。
- Chainer のプログラムのひな形
- パラメータ推定
- Chainer による分類問題の分類器構築
- ミニバッチ
- 誤差の累積
- Recurrent Neural Network
- Recurrent Neural Network (RNN) は従来のフィードフォワード型のネットワークではなく、少し複雑なネットワークです。どういうネットワークで何に使えるかを説明した後に、Chainer による RNN のプログラムを示します。ただしChainer が提供する L.LSTM は用いずに、ネットワークの図から LSTM をChainer で作成する方法を示します。
- RNN とは何か
- RNN のネットワーク図
- Chainer による RNN の
- LSTM
- LSTM のネットワーク図
- Chainer による LSTM の
- GPU の利用
- 現在、Deep Learning の学習には GPU は必須と言えます。導入に際しての基礎知識と、Chainer からの利用方法を説明します。
- GPU とは何か
- GPU の選択
- CUDA の導入
- cuDNN の導入
- CuPy
- Chainer での GPU の利用