More Related Content Similar to 実装ディープラーニング (17) 実装ディープラーニング2. 紹介
岡 右⾥里里恵 (早⼤大理理⼯工M1)
出⾝身、住まい等 横浜
趣味 映画鑑賞, シンセ / kaggle歴 3ヶ⽉月
好きな物 redbullと最近はドクペ
@0kayu
研究 脳画像を⽤用いた診断補助法の開発
2
3. DEEP LEARNING
1. Deep Learning の 仕組み スライド
がたくさん!
2. Deep Learning パラメータ/学習法 について
3. 実装: パッケージ調べ ←
今日はこれ!!!!!!!!!!!
ディープラーニングをもっと、もっと手軽に
3
6. 1. ディープラーニング概要(2)
プレトレーニング + ファインチューニング
各層の●,●,●は
入力データ●の特徴量を表す
http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/
CVIM_tutorial_deep_learning.pdf
6
7. 1. ディープラーニング概要(2)
判別器
プレトレーニング + ファインチューニング
SVM, LR, ... etc
AE(3)
AE(2)
AE(1)
教師無し学習器群
AE:オートエンコーダー
RBM:制限ボルツマンマシン
http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/
CVIM_tutorial_deep_learning.pdf
DBM,
stacking
AE
DBN,
stacking
AE
7
10. RBM +
DeepStructure
+
max
pooling
ConvDBN
(ConvoluFonal
Belief
Network)
RBMに畳み込みニューラル
ネットで使われるmax
pooling
を追加したもの
http://www.vision.is.tohoku.ac.jp/files/9313/6601/7876/CVIM_tutorial_deep_learning.pdf
10
11. オートエンコーダー(AE)
AE (オートエンコーダー)
⼊入⼒力力データを再現するような[表現h, encoder, decoder] を学習する
dAE(denoising Auto Encoder)
ノイズを加えたデータで学習させる
スパースオートエンコーダー
出⼒力力層がスパースになるように正規化したもの
y(=x)
h
入力データ
x
Decoder
y = f ´(W´h)
スパースオートエンコーダーでは次の
評価関数を最小化する
Encoder
h = f (Wx)
正規化項
11
13. 2. 各層の学習法について
基本 バッチ学習 + 確率率率的勾配法 (SGD)
バッチ学習 : 全データで学習
確率率率的勾配法(SGD) : t個⽬目のサンプルだけを⽤用いて重みが更更新可能
→ データをミニバッチに分け、ミニバッチごとに重みを更更新
→ 学習の⾼高速化 !
バッチ関連のパラメータ
ミニバッチサイズ
データを分割する量量。分割したデータ(バッチ)を⽤用いて学習させる。
バッチ毎の学習
バッチを学習させて、バッチごとにパタメータを更更新
モニター数(⇔速度度に影響)
すべてのバッチのうち、⼀一部のバッチのみvalidationをしてモデルが学習できているか確認す
る
max_̲epoch
1つのデータを何回(何epoch)繰り返して学習させるか
13
14. 2. パラメータについて
1. 機械全体の形
レイヤーの数
教師無し学習器(モデル)の選択
判別器の選択
太字 = 「特に重要なパラメータ」
2. 各層のモデルのパラメータ
隠れ層のユニット数
重みの正規化
ユニットのスパース化
活性化関数の選択
3. 最適化のためのパラメータ
学習⽅方法
学習率率率 (初期値, 減衰)
ミニバッチサイズ
イテレーション回数
Momentum
4. その他
重みの初期化 (のスケール)
乱数
前処理理
おすすめの参考スライド http://www.slideshare.net/koji_matsuda/practical-recommendationfordeeplearning
14
15. 3. 実装 : 現状の関連コード比較
pylearn2
python
+theano
元の言語
Torch7
Lua
python
numpy+scipy
nolearn deepnet
python
+ sklearn
△
導入しやすさ(mac)
ディープラーニン RBM, DBN, AE,
MLP, Maxout
グの種類等
ー
python
+ gnumpy
ー
RBM, AE,
DBN
DBN, RBM
RBM, AE, DBM,
DBN, CNN, feedforward NN
ー
GPU計算
とっつきやすさ
入力データの準備
特徴
sugomori
さん
△
△
種類が豊富, 画
像の可視化
ー
ー
ー
matlab
ライク
ー
Java版あり,
オプションが
ー
GPU計算が前提
多いsklearn風
シンプル
pylearn2
http://deeplearning.net/software/pylearn2/index.html
DL先→ torch7
http://www.torch.ch/manual/install/index
sugomori
http://blog.yusugomori.com/post/42424440144/pythondeep-learning-stacked-denoising
nolearn
h'ps://github.com/dnouri/nolearn
or
pip
install
nolearn
deepnet
h'ps://github.com/niQshsrivastava/deepnet
15
16. 1. pylearn2
市民権争い pylearn2 VS torch7
利利点
-‐‑‒ Benjio先⽣生(先のスライドの原著) の最新のアルゴリズムが実装されて
いる (Maxout等)
-‐‑‒ 市⺠民権の獲得に積極的 (kaggleのベンチマーク)
-‐‑‒ 実装の⾒見見た⽬目は綺麗麗, 評価を下すのにmonitor.py がなかなか使える
-‐‑‒ 設定をエディットしやすい
⽋欠点
-‐‑‒ データ構造が⽞玄⼈人向け、慣れれば快適...??
-‐‑‒ 公式HPのチュートリアルやドキュメントが開発途中
-‐‑‒ pylearn2のgoogle groups等を追う姿勢が⼤大事
16
17. 1. pylearn2
DL実装の流れ@pylearn2(1)
layer_̲1.yaml
1層⽬目学習
train
=
yaml_parse.load(layer1_yaml)
train.main_loop() **
dae_l1.pkl
layer_̲2.yaml
2層⽬目学習
train
=
yaml_parse.load(layer2_yaml)
train.main_loop()
dae_l2.pkl
mlp.yaml
判別器学習
train
=
yaml_parse.load(mlp_yaml)
train.main_loop()
mlp_best.pkl
簡単3ステップ+α
STEP1:
データをpylearn2のデータ形式で登録
(ベンチマーク系は既に登録済み)
STEP2:
YAMLファイル形式(テンプレあり)で、
train{入力データ,学習器,学習法}を指定
STEP3:
train.pyに作った
*.yamlを放り込む
STEPα:
モニター結果から学習できてるか判断
**:
$
train.py
layer_1.yaml
でも可
17
19. 1. pylearn2
DL実装の流れ@pylearn2(2)
2層目の学習で、train.pyに与えるYAMLファイルの例
!obj:pylearn2.train.Train {
dataset: &train !obj:pylearn2.datasets.transformer_dataset.TransformerDataset {
raw: !obj:pylearn2.datasets.mnist.MNIST {
1.
入力データ:
which_set: 'train',
start: 0,
#データのうち0から50000を学習
TransformerDataset(MNIST)
stop: 50000
},
transformer: !pkl: "./dae_l1.pkl"
},
model: !obj:pylearn2.models.autoencoder.DenoisingAutoencoder {
nvis : 500, #visible layerの次元
2.
学習器
:
Denoising
Autoencoder
nhid : 500, #hidden layerの次元
irange : 0.05,
corruptor: !obj:pylearn2.corruption.BinomialCorruptor {
corruption_level: .3, #ノイズの程度
},
act_enc: "tanh",
act_dec: null,
# Linear activation on the decoder side.
},
algorithm: !obj:pylearn2.training_algorithms.sgd.SGD {
learning_rate : 1e-3, #学習率
3.
学習法:
StochasQcGradient
Descent
batch_size : 100,
#バッチサイズ(100データごとに学習)
monitoring_batches : 5,
#モニターするバッチの数
monitoring_dataset : *train,
cost : !obj:pylearn2.costs.autoencoder.MeanSquaredReconstructionError {},
termination_criterion : !obj:pylearn2.termination_criteria.EpochCounter {
max_epochs: 10,
},
},
save_path: "./dae_l2.pkl",
save_freq: 1
}
19
20. 1. pylearn2
DL実装の流れ@pylearn2(3)
評価例
$
print_monitor.py
<学習して出力した
*.pkl>
や
summarize_model.py
*.pkl
epochs
seen:
10
Qme
trained:
141.956558943
learning_rate
:
0.001
monitor_seconds_per_epoch
:
11.0
objecQve
:
11.414127059
$
plot_monitor.py
<学習して出力した
*.pkl
>
→
デモ
20
22. 1. pylearn2
pylearn2を今からはじめるには
公式のドキュメント + script以下のコードのコメントから学ぶ
ディープラーニングの知識識をコードから学びたい
→ pylearn2の前⾝身の http://deeplearning.net/tutorial/
→ pylearn2/srcripts/tutorials/*.ipynb : 数式や⽂文章付きで学べる
ええい!とにかく試してみたい!かじりたい!
→ pylearn2/scripts/tutorials/stacked_̲autoencoders.ipynb
→ pylearn2/scripts/tutorials/dbm_̲demo/rbm.yaml
kaggleに殴り込みをしようと思うんだが...
⼿手持ちのデータをさくっとディープラーニングできないかな~∼
→ pylearn2/scripts/icml_̲2013_̲wrepl/emotions/
22
23. 2. その他のpython系パッケージ
特徴
-‐‑‒ Theanoを覚えるのが⼤大変なあなたに
-‐‑‒ インストールが簡単,
-‐‑‒ SGD/RBM/dA 多値ロジスティック回帰 が使⽤用可能
-‐‑‒ sparse.matrix に対応していないので、⼤大規模疎⾏行行列列は扱えない
-‐‑‒ 少量量のデータならばnumpy+scipyのほうがてっとり早い
-‐‑‒ 速度度はpylearn2と⼤大きく変わらない (CPU計算の場合)
23
30. パッケージまとめ
◎
pylearn2
h$p://deeplearning.net/soHware/pylearn2/
◎
deeplearning
Tutorial
h$p://deeplearning.net/tutorial/
◎
Torch7
h$p://torch.ch
◎
nolearn
h$ps://github.com/dnouri/nolearn
◎
deepnet
h'ps://github.com/niQshsrivastava/deepnet
◎
sugomiriさん
http://blog.yusugomori.com/post/42424440144/python-deep-learning-stacked-denoising
30