〜 最急降下法と誤差逆伝播法、Chainerの基本プログラム、Trainer、RNNとLSTM、ChainerでのGPU利用・CuPy 〜
- Trainer やNStepLSTM、CuPyなど新しく導入されている使い方も含め、Chainerのポイントを解説する講座!
- Chainerの基礎から、便利な機能を修得し、深層学習の実装に活かそう!
〜 最急降下法と誤差逆伝播法、Chainerの基本プログラム、Trainer、RNNとLSTM、ChainerでのGPU利用・CuPy 〜
本セミナーはディープラーニングのフレームワークの一つである Chainer のチュートリアルです。Chainer は日本生まれの比較的新しいフレームワークであり、その扱いやすさが大きな特徴です。複雑なネットワークであっても、比較的容易に実装できます。
まずディープラーニングの基本であるニューラルネットワークについて解説します。ディープラーニングは従来の3層からなるニューラルネットワークを複雑なあるいは巨大なグラフ構造に拡張したものと見なせます。基本はニューラルネットワークであり、その理解はディープラーニングの理解に直結します。その後に Chainer の部品と、ニューラルネットワークのChainer による実装例を示します。これをプログラムのひな形として、様々なネットワークが Chainer により実装できることを解説します。複雑なネットワークの例としてRNN を取り上げ、RNN であってもこのひな形を拡張して作成できることを示します。
上記のようにプリミティブな部品を使ってプログラムを作っていけば、独自の工夫を入れて改良するなど、柔軟な拡張、改良が可能です。ただし、ある程度型が決まっているタスクに対しては、マクロ的な記述方法があれば便利です。そのためVer.1.11 から Trainer が導入されました。Trainer を利用すれば簡単な実装ができます。
また Ver.1.16 からは NStepLSTM が導入され、RNN のミニバッチが簡単に実現できるようになりました。NStepLSTM についても実装例を示します。またディープラーニングがブレークするきっかけとなった畳み込みニューラルネットワークの解説と Chainer を使った実装例も示します。
最後に GPU の利用についても解説します。ディープラーニングの学習プログラムを現実的な時間で動かすには GPU が必須です。Ver.2.0 から Chainer でGPU を使う部分はCuPy として独立しました。CuPy の利用方法と利用上のTips を紹介します。
開催日時 |
|
---|---|
開催場所 | 日本テクノセンター研修室 |
カテゴリー | ソフト・データ・画像・デザイン |
受講対象者 | ・Chainer で Deep Learning のプログラムを作りたいと思っているが、どのようにプログラムを書けばよいか知りたい方 ・ディープラーニングの基本を知りたい方 |
予備知識 | ・大学初年度程度の数学知識 ・機械学習とは何かくらいは知っている ・プログラミングの経験がある、またはプログラムの基本をある程度知っている(どんな言語でもよいです。少しでもプログラミング経験があれば大丈夫だと思います)。 ・Python のエキスパートである必要はありませんが、ある程度、その文法を知っている方が理解しやすいと思います。 |
修得知識 | ・ニューラルネットの基本が理解できる ・Chainer である程度のモデル(ネットワーク)に対するプログラムを書けるようになる |
プログラム |
1.ニューラルネット
ディープラーニングは簡単に言ってしまえば従来のニューラルネットワークを多層にしたものです。またニューラルネットワークは一種のパラメトリックな関数であり、学習は回帰の問題です。つまり、ディープラーニングも基本的には回帰の問題です。この点を解説します。またニューラルネットワークの特徴となる活性化関数についても解説します。
(1).ディープラーニングとニューラルネット
(2).ニューラルネットワークはパラメトリックな関数
(3).活性化関数
2.最急降下法と誤差逆伝播法
ニューラルネットは訓練データから関数を推定する回帰のモデルです。その推定方法が最急降下法です。ニューラルネットの関数のモデルはネットワークなので、この最急降下法がいわゆる誤差逆伝播法と呼ばれるものです。このアルゴリズムを数式を用いて解説します。
(1).ニューラルネットにおける学習
(2).目的関数
(3).最急降下法
3.Chainer の仕組み
ディープラーニングの学習も関数を推定する回帰の問題であり、最急降下法が使われます。最急降下法では勾配を求める部分がポイントです。Chainer ではどのように勾配を求めるのかを説明します。具体的に Chainer のプログラムで利用するオブジェクトを説明しながら、どのように関数を推定しているのかを確認してゆきます。
(1).合成関数と計算グラフ
(2).計算グラフを利用した勾配計算
(3).Chainer 基本オブジェクト
a.Variable
b.functions
c.links
(4).最適化
4.Chainer の基本プログラム
まず Chainer のプログラムのひな形を示します。次に簡単な分類問題を例として、その問題を解く Chainer のプログラムをひな形に沿って作って見ます。またミニバッチによる動作及び誤差の累積による動作を簡単な例で示し、それらの違いを説明します。
(1).Chainer のプログラムのひな形
(2).パラメータ推定
(3).Chainer による分類問題の分類器構築プログラム
(4).ミニバッチ
(5).誤差の累積
5.Trainer
上記で示したプログラムのひな形の学習部分に Trainer というものが使えます。Trainer を使えば学習部分の記述が簡単になります。特にミニバッチが容易に導入できるので便利です。ここでは Trainer の使い方を示します。
(1).基本形
(2).TupleDataset
(3).Trainer の長所と短所
(4).iterators
6.Recurrent Neural Network
Recurrent Neural Network (RNN) は従来のフィードフォワード型のネットワークではなく、少し複雑なネットワークです。どういうネットワークで何に使えるかを説明した後に、Chainer による RNN のプログラムを示します。ただしChainer が提供する L.LSTM は用いずに、ネットワークの図から LSTM をChainer で作成する方法を示します。
(1).RNN とは何か
(2).RNN のネットワーク図
(3).Chainer による RNN のプログラム
(4).LSTM
(5).LSTM のネットワーク図
(6).Chainer による LSTM のプログラム
7.NStepLSTM
RNNは各データが時系列データであり、その長さがばらばらです。そのためにバッチ処理には煩雑な作業が伴います。NStepLSTM を使うと、長さの違いを気にせずにバッチ処理ができます。ここでは NStepLSTM の使い方を解説します。
(1).RNN におけるバッチ
(2).ignore_label の利用
(3).NStepLSTM の利用方法
8.畳み込みニューラルネットワーク(CNN)
画像認識で大きな成果を出した畳み込みニューラルネットワークについて解説します。畳み込み層とプーリング層をブラックボックス的に見れば、従来のニューラルネットワークと同じ構造になっています。畳み込み層やプーリング層で行っていることを解説し、それぞれの層に対応する関数の使い方を示します。これにより簡単に畳み込みニューラルネットワークが実装できます。
(1).CNN とは何か
(2).畳み込み層
(3).プーリング層
(4).Convolution2D 関数
(5).max_pooling_2d 関数
(6).Chainer による CNN のプログラム
9.GPU の利用
現在、ディープラーニングの学習には GPU は必須と言えます。導入に際しての基礎知識と、Chainer からの利用方法を説明します。
(1).GPU とは何か
(2).GPU の選択
(3).CUDA の導入
(4).cuDNN の導入
(5).CuPy
(6).Chainer での GPU の利用
(7).Trainer での GPU の利用
Chainerの動向により、内容が修正されることもあります |
キーワード | Chainer 活性化関数 回帰 最急降下法 誤差逆伝播法 ミニバッチ 誤差の累積 RNN LSTM CuPy Trainer NStepLSTM GPU |
タグ | 統計・データ解析、データ解析、組み込みソフト |
受講料 |
一般 (1名):49,500円(税込)
同時複数申込の場合(1名):44,000円(税込) |
会場 |
日本テクノセンター研修室〒 163-0722 東京都新宿区西新宿2-7-1 新宿第一生命ビルディング(22階)- JR「新宿駅」西口から徒歩10分 - 東京メトロ丸ノ内線「西新宿駅」から徒歩8分 - 都営大江戸線「都庁前駅」から徒歩5分 電話番号 : 03-5322-5888 FAX : 03-5322-5666 |
こちらのセミナーは受付を終了しました。
次回開催のお知らせや、類似セミナーに関する情報を希望される方は、以下よりお問合せ下さい。
営業時間 月~金:9:00~17:00 / 定休日:土日・祝日