SlideShare a Scribd company logo
1 of 80
Download to read offline
ディープラーニングの導⼊入と
ディープラーニングフレームワーク
Caffe・Chainerの紹介
株式会社Preferred Networks
⼤大野健太 oono@preferred.jp
2015/9/1⽇日本神経回路路学会主催セミナー
「Deep Learningを使ってみよう!」
更更新履履歴
• 2015/8/26:初版公開
• 2015/8/30:資料料の⼀一部を補⾜足資料料とする。インストールに関する記述を追加
⾃自⼰己紹介
• ⼤大野健太(@delta2323_)
• 経歴:数理理科学研究科・修⼠士課程(共形幾何)
• → 2012.3 PFI → 2014.10 PFN
• 所属:研究班(理理論論解析・ライフサイエンス・Chainer開発メンバー)
• ブログ:http://delta2323.github.io
• 最近の活動
• NIPS2014読み会・ICML2015読み会主催
• ⽇日経ビッグデータ短期連載「ディープラーニングのビジネス活⽤用を探る」
• 「この1冊でまるごとわかる! ⼈人⼯工知能ビジネス」寄稿
3
アジェンダ
• ディープラーニングの導⼊入
• ディープラーニングフレームワーク:Caffe
• ディープラーニングフレームワーク:Chainer
x1
xN
・・・・・・
h1
hH
・・・・
ニューラルネットワーク(多層パーセプトロン)
k
M
k1
y
M
y1
Forward
Backward
・・
・・
5
⼊入⼒力力層 隠れ層 出⼒力力層
⽂文書
画像
センサー
チューリップ
異異常確率率率50%
カテゴリ:政治
機械学習の典型的なプロセス
6
(0,        1,  2.5,  -‐‑‒1,  …)
(1,  0.5,      -‐‑‒2,    3,  …)
(0,        1,  1.5,    2,  …)
特徴ベクトル
グラフィカルモデル
分類/回帰
SVM/LogReg/PA
CW/ALOW/Naïve  
Bayes/CNB/DT
RF/ANN…
クラスタリング
K-‐‑‒means/Spectral  
Clustering/MMC/L
SI/LDA/GM…
構造分析
HMM/MRF/CRF…  
分野に依存しない
抽象化データ
様々な⼿手法
理理論論を適⽤用
機械
学習
⽂文書
画像 センサー
⾏行行動履履歴
様々な様式の
⽣生データ
特徴
抽出
⽂文章からの特徴抽出
例例:固有名詞を取り出してニュース記事の特徴とする
7
2020年年の東京五輪輪・パラリンピックの主会
場となる新国⽴立立競技場をめぐり、安倍晋三⾸首相
は、総⼯工費が2520億円に膨らんだ建設計画
を⾒見見直す考えを17⽇日に表明する⽅方向で最終調
整に⼊入った。競技場を19年年のラグビーワール
ドカップ(W杯)の主会場にする計画は断念念す
る。同⽇日、東京五輪輪・パラリンピック組織委員
会会⻑⾧長の森喜朗元⾸首相と会談し、計画⾒見見直しへ
の協⼒力力を求める⽅方針だ。
2020年年の東京五輪輪・パラリンピックの主会
場となる新国⽴立立競技場をめぐり、安倍晋三⾸首相
は、総⼯工費が2520億円に膨らんだ建設計画
を⾒見見直す考えを17⽇日に表明する⽅方向で最終調
整に⼊入った。競技場を19年年のラグビーワール
ドカップ(W杯)の主会場にする計画は断念念す
る。同⽇日、東京五輪輪・パラリンピック組織委員
会会⻑⾧長の森喜朗元⾸首相と会談し、計画⾒見見直しへ
の協⼒力力を求める⽅方針だ。
単語 頻度度
東京五輪輪 2
パラリンピック 2
新国⽴立立競技場 1
安倍晋三 1
・・・ ・・・
機械学習アルゴリズム
⽂文章からの固有名詞の抽出は固有表現抽出
(Named Entity Recognition; NER)という
画像からの特徴抽出
例例:Histogram of Gradient (HoG特徴量量)
http://www.vlfeat.org/overview/hog.html
機械学習
アルゴリズム
各ピクセルでの勾配を⼩小ブロック(セル)
単位でまとめてヒストグラム化
各セルでのヒストグラムを(正
規化して)すべてまとめる
特徴抽出は職⼈人技
• 特徴抽出の重要性
• 特徴の良良し悪しが学習精度度に⼤大きく影響
• 学習アルゴリズムの選択以上に精度度に効く場合も
• 特徴抽出は難しい
• タスクごとに最適な特徴抽出⽅方法は異異なる
• 機械学習コンテストは最後は特徴抽出のチューニング勝負
• これまで様々な特徴抽出⽅方法が研究されてきた
• ⾃自然⾔言語:n-gram/BoW 画像:SIFT/SURF/HOG/PHOW/BoVW
• その他にも様々なヒューリスティックが存在
9
10
2012年年画像認識識コンテストで
Deep Learningを⽤用いたチームが優勝
→
ILSVRC2012
優勝チームSupervisonの結果
[Krizhevsky+ ‘12]
• 限界と思われた認識識エラーを4割も減らした
(26%→16%)
• 特徴抽出を⾏行行わず、⽣生の画素をNNに与えた
翌年年の同コンテストの上位チームはほぼDeep
Learningベースの⼿手法
Neural Netブーム
• 様々なコンペティションでDLが既存⼿手法を凌凌駕
• 16%(‘12) → 11%(‘13) → 6.6%(’14) → 4.8%('15)
• 各企業がDL研究者の獲得競争
• Google/FaceBook/Microsoft/Baidu
• 実サービスもDLベースに置き換えられる
• Siri/Google画像検索索
GoogLeNetのアーキテクチャ↓
11
http://research.google.com/archive/un
supervised_icml2012.html
Google Brainによる猫認識識↑
[Le, Ng, Jeffrey+ ’12]
ニューラルネットワークが利利⽤用されたタスク
データ 画像
タスク カテゴリ
分類
顔検出 ⽣生成 ゲームAI シーン認識識
動画 画像+
⾃自然⾔言語
⾳音声+動画
カテゴリ
分類
動作認識識 キャプ
ション⽣生成
表現学習 ⾳音声認識識
⾃自然⾔言語 ⾳音声 化合物
表現学習 翻訳 質問応答 会話検出 QSAR
(活性予測)
応⽤用分野
⾳音声検索索
画像キュレーション
eコマース
⾃自動運転
ロボティックス
医療療画像
マーケティング
代表的なニューラルネットワーク(1)
Convolutional Neural Network • 畳み込み層とプーリング層を交互に重ねた
構造をしたニューラルネットワーク
• 主に画像解析で利利⽤用されている
• 畳み込み層
• 前層の近傍のユニットのみと結合して
いる
• ユニット間で重みを共有
• プーリング層
• ユニットの活性をまとめる
• 最⼤大値をとる(Max Pooling)か平均値
をとる(Average Pooling)のが⼀一般的
畳み込み層
プーリング層
同じ⾊色の結合は
重みが等しい
代表的なニューラルネットワーク(2)
Recurrent Neural Network
• 中間層の活性が、前層と前時刻の
⾃自分⾃自⾝身の活性により決定される
• ⾳音声・動画・⾃自然⾔言語などの可変
⻑⾧長データの解析に利利⽤用されている
• 中間層のループ部分を時間⽅方向に
展開すると通常のフィードフォ
ワードニューラルネットとみなせ
る
ディープラーニングの応⽤用例例
Deep Q Network*(深層学習で強化学習)
* Mnih, Volodymyr, et al. "Human-level control through deep reinforcement learning." Nature 518.7540 (2015): 529-533.
** CaffeでDeep Q-Networkを実装して深層強化学習してみた http://d.hatena.ne.jp/muupan/20141021/1413850461
*** PFIインターン2014 最終発表 http://www.ustream.tv/recorded/53153399
15
ディープラーニングの応⽤用例例
画像⽣生成
• ⽂文字を”描く“ニューラルネット
• ⼊入⼒力力と同じ「雰囲気」の数字が出⼒力力されて
いる。同じ数字でも、最左画像と⽣生成画像
は異異なる事に注意
⼊入⼒力力 ⽣生成結果
Kingma, Diederik P., et al. "Semi-supervised learning with deep
generative models." Advances in Neural Information Processing
Systems. 2014. の実験を弊社で再現
• 絵を”描く“ニューラルネット
http://soumith.ch/eyescream/
典型的なNeural Network(多層パーセプトロン)
x1
xN
・・・・・・
h1
hH
・・・・
k
M
k1
y
M
y1
f1
f2
f3
W2/b2
W1/b1
tM
t1
損失関数で評価
正解ラベル⼊入⼒力力
Forward
Backward
出⼒力力
・・
・・
・・
学習すべきパラメータ
• W1:1層⽬目のパラメータ⾏行行列列
• b1:1層⽬目のバイアス項
• W2:2層⽬目のパラメータ⾏行行列列
• b2:2層⽬目のバイアス項
17
Forward更更新式
• h = f1(x) = Sigmoid(W1x+b1)
• k = f2(h) = Sigmoid(W2h+b2)
• y = f3(k) = SoftMax(k)
f3i(k) = exp(ki)/Σ_{j} exp(kj)
Deep Learningフレームワークの構成要素
Caffe Chainer
変数
(n次元配列列)
Blob Variable
層 Layer Function
計算グラフ Net (FunctionSet)
最適化
アルゴリズム
Solver Optimizer
順伝播
逆伝播
ニューラル
ネット
変数 層
18
正解データも⼊入⼒力力
の⼀一部とみなすと
⾒見見通しが良良い
途中で分岐して
もよい
(⼀一般にはDAG)
活性化関数に関する注意
• 論論⽂文では層の中で活性化関数を含む事が多いが、実装では活性化関数を層の⼀一つとして実現する
ことが多い
Y=σ(WX)
W
X
X
WX
Y
W
σ
19
minibatch j
訓練の流流れ
Epoch 1
Epoch N
Epoch 2
Epoch i
Epoch i
全訓練データを
シャッフル
minibatch 1
Forward
minibatch 2
パラメータ更更新
時刻
• Epoch (Iteration):全訓練データを1巡する事
→ 各訓練データはNetにN回与える
• Solver:Netを訓練するモジュール
• minibatch:少数の訓練データをまとめたもの
20
パラメータ更更新
minibatch j
Backward
Forward Propagation (順伝播)
• 計算グラフの先頭のユニット(緑)に値を与え、
順⽅方向に計算を進める
• Forward計算の過程で損失(Loss)とエラーを計
算する
• 通常エラーは計算グラフの最後のユニット
(紫)での値を指す
• 計算グラフの途中の値をエラーに加えても
良良い
• Lossは各ユニットの値や各レイヤーのパラメー
タの関数になっている
Forward
Chain Rule(連鎖律律)
• Forward Propagationがy = f(x; θ)の場合を考える
• θ : Layerのパラメータ(例例:全結合層の重み)
• 損失をLとすると、連鎖律律より
• (エラー), (勾配)と書くと
→ エラーは活性と逆向きに伝播する
x y
活性の
伝播⽅方向
エラーの
伝播⽅方向
θ
Backward Propagation(逆伝播、誤差逆伝播)
• 計算グラフの末端のユニット(紫)にエラーを
与え、逆⽅方向に計算を進める
• Backwardの過程で各パラメータについてのエ
ラーを計算する
Backward
パラメータの更更新
• Backwardにより得られた各パラメータについ
ての勾配δθを⽤用いてパラメータθを更更新
• 最も単純なのは確率率率的勾配法
• θ ← θ – η δθ (η : 学習率率率)
• 更更新式には様々なバリエーションがある
• 例例:学習率率率が更更新ごとに変化する
• 例例:過去の勾配も利利⽤用する
• SGD / Momentum / AdaGrad / ADADELTA /
RMSprop / Adam etc…
http://imgur.com/a/Hqolp
フレームワークごとのGithub Starsの⽐比較
https://twitter.com/fchollet/status/63589
1305084796929を元に作成
PyLearn2
紫下線はTheanoをベース
としたフレームワーク
• ディープラーニング導⼊入
• Caffe
• Chainer
Caffe概要
• 製作者:Yangqing Jia(現Google)、メンテナンス:Berkeley⼤大学 (BVLC)
• ライセンス:BSD 2 clause
• バージョン:0.9999(2014年年8⽉月9⽇日)、rc2(2015年年2⽉月21⽇日)
• ⾔言語:C++, CUDA、バインディング:Python, Matlab
特徴
• Expressive architecture : CPU/GPUの変更更が設定ファイル(prototxt)を1⾏行行変えれば良良い
• Extensible code : 最初の1年年で1000⼈人の開発者にforkされる
• Speed : NVIDIA K40GPU1台で毎秒60M枚の画像を処理理可能(Supervision + IO Cache)
• Community : 学術界、スタートアップ、産業界での⼤大規模利利⽤用、画像、⾳音声、マルチメディア
27
http://caffe.berkeleyvision.org
Video Intelligence Box
• ⼈人物検出・属性判定を搭載したカメラ
• IoTデバイス上での⾼高度度解析を実現した例例
• 属性判定に深層学習(Caffe)を使⽤用
• バッテリー内蔵で数時間稼働可
28
インストールについて
• ドキュメント
• 公式:http://caffe.berkeleyvision.org/installation.html
• Wiki (⾮非公式) :https://github.com/BVLC/caffe/wiki
• Wikiの⽅方が嬉しい情報が多い(AWS/AMIの利利⽤用⽅方法など)が、公式ではないので注意
• 動作確認済OS:Ubuntu, Mac OS X, RHEL, CentOS, Fedora
• Mac OS(10.9以上)ならばCUDAは7.0以上推奨(libc++関連)
• Windowsも対応版がある(⾮非公式*)
* fork レポジトリ:https://github.com/niuzhiheng/caffe
詳細は事前資料料「Caffeのインストールについて」参照
http://www.slideshare.net/KentaOono/20150706-jnns-caffeinstall
CPU版インストール概要
• インストール⼿手順
1. Caffeの依存ライブラリのインストール
2. Makefile.configの作成(CPU_ONLY := 1追加の修正が必要)
3. Caffeのインストール
4. PythonからCaffeを利利⽤用するための作業 ← スクリプト参照
• CPU Only版Caffeのインストールスクリプト(AWS・Ubuntu14.04インスタンスで確認)
• https://github.com/delta2323/JNNS2015-tutorial/blob/master/caffe/cpu/install.sh
• rootユーザーのホームディレクトリに置き、上記コマンド実⾏行行すると、caffeユーザー(パス
ワードはユーザー名と同⼀一)を作成し、/opt/caffeにCaffeをcaffeユーザーでインストールし
ます
30
$ cd
$ sudo bash ./install.sh
GPU版インストール概要
• インストール⼿手順
1. CUDAのインストール ← GPU版だけの作業、ここが超⻤⿁鬼⾨門
2. Caffeの依存ライブラリのインストール
3. Makefile.configの作成 ← CPU_ONLYの変更更は必要なし
4. Caffeのインストール
• インストール⼿手段は⼤大きく分けて2通り
• AWSのGPUインスタンス上でCaffeコミュニティーが提供するAMIを利利⽤用する
• GPUインスタンスを利利⽤用できるなら、この⽅方法が楽かつ確実
• ⾃自前でマシンを⽤用意し、⼿手動でGPU版Caffeをインストールする
• インストールしたいマシンが既にある場合 / インストール⼿手順を体験したい場合
Caffeの使⽤用⽅方法
• コマンドラインツールとして利利⽤用
• prototxt(後述)の記述のみ、“プログラム”の必要なし
• ライブラリ・モジュールとして⾃自作プログラム内で利利⽤用
• C++ / Python / Matlabで利利⽤用可能
32
全体の流流れ(画像分類の例例)
画像データ
データ変換
convert_imageset
変換済データ
(LMDB/LDB)
Solver設定
(solver.prototxt)
訓練/テスト⽤用Net
(train_val.prototxt)
デプロイ⽤用Net
(deploy.prototxt)caffe train
Solver中間状態
(.solverstate)
重みファイル
(.caffemodel)
caffe test
アプリケーション
XX_classification
AをBに⼊入⼒力力
A内でBをパス指定
A B
A B
prototxt:いわゆる設定ファイル
• 3種類
• 訓練、テスト⽤用のNetの構成:train_val.prototxt
• 訓練時のSolverの設定:solver.prototxt
• 訓練に⽤用いる訓練⽤用のNetのprototxtを指定する
• デプロイ⽤用のNetの構成:deploy.prototxt
• Protocol Buffersを⽤用いて実現
GoogLeNetのprototxt
2000⾏行行以上ある↓
https://github.com/BVLC/caffe/pull/1367/files
34
Protocol Buffer:Googleが開発している構造化
データのシリアライズフォーマット。データ構造を
定義する⾔言語(IDL)を備えており、そこから様々
な⾔言語での構造化データの定義を⽣生成できる
prototxtの記述(1):Train/Test⽤用のNet
Train/Test
mnist
ip
loss
label
Net
Layer
Blob
data
ip
データはData Layer
として抽象化
損失関数はLoss Layer
として抽象化
LayerでTop Blob
とBottom Blobを指定
35
caffe/docs/tutorial/net_layer_blob.mdより
prototxtの記述(2):Deploy⽤用Net
Net
ip
prob
Deploy
data
ip
prob
Layer
Blob
Layerに挟まれないBlobは
テンソルで指定
36
prototxtのパラメータは何を与えれば良良い?
• prototxtのパラメータに対応するデータ構造は
Protocol Bufferで⽣生成
• パラメータ定義のための専⽤用⾔言語があると思
えば良良い
• src/caffe/proto/caffe.proto
• パラメータの意味はコメント参照
• 正確な使い⽅方の把握はコードを⾒見見るしかない
• 例例:LayerParameter
• 例例:InnerProductParameter
・・・
・・・
prototxt(抜粋)
prototxtの記述(3):Solverの設定
net: "examples/mnist/lenet_train_test.prototxt"
test_iter: 100
test_interval: 500
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
lr_policy: "inv"
gamma: 0.0001
power: 0.75
display: 100
max_iter: 10000
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: GPU
(確率率率的)勾配降降下法
に関するの設定
訓練500イテレーショ
ンごとにテストを100
イテレーション実施
5000イテレーション
ごと学習モデルを保存
GPUモード
利利⽤用するネットワークを指定
コマンドラインからの実⾏行行
• 訓練
• build/tools/caffe train --solver solver.prototxt [--snapshot
snapshot.solverstate]
• テスト
• build/tools/caffe test --model train_val.prototxt --weight
network.caffemodel
• ベンチマーク
• build/tools/caffe time --model train_val.prototxt
• 学習済モデルを利利⽤用して画像分類
• build/examples/cpp_classification/classification.bin deploy.prototxt
network.caffemodel mean.binaryproto labels.txt img.jpg
ソースコードは
caffe/tools/caffe.cpp参照
Caffe Model(.caffemodel)
• 学習途中 or 学習終了了時のNetの状態をバイナリ形式で保存したもの
• Caffe Modelの保存間隔はsolver.prototxtのsnapshotで調節可能
• 学習済みの.caffemodelはModel Zoo(後述)で公開可能
デモ:example(MNIST)の実⾏行行
• ⼿手順の詳細・exampleの解説は公式
ドキュメントを参照
• http://caffe.berkeleyvision.org/
gathered/examples/mnist.html
データセットの準備
$ cd $CAFFE_ROOT
$ ./data/mnist/get_mnist.sh
$ ./examples/mnist/create_mnist.sh
CPUでの実⾏行行に変更更
examples/mnist/lenet_solver.prototxtの以下の⾏行行を変更更
solver_mode: GPU → solver_mode: CPU
実⾏行行
$ ./examples/mnist/train_lenet.sh
41
配布AMIで実験可
⾃自作プログラムからCaffeを利利⽤用する
• 訓練済学習モデルの利利⽤用や独⾃自の学習⽅方法(強化学習との組み合わせなど)をする時に必要
• prototxtを読み込み、Solver(訓練時)やNet(デプロイ時)のインスタンスを作成するのが良良い
• 使⽤用⽅方法はコマンドラインツールやExampleを参考
• 訓練
• C++:tools/caffe.cppのtrain関数
• Python:examples/01-learning-lenet.ipynb
• 学習モデルの利利⽤用
• C++:example/cpp_classification, example/hdf5_classification
• Python:python/classify.py
訓練済モデルをModel Zooで公開可能
• Caffeの学習済ネットワーク(model)・パラメータ(weights)利利⽤用する フレームワーク
• BVLC-trained models:BVLC公式のモデル
• レポジトリのmodels/以下にある
• ILSVRCで上位⼊入賞した主要なモデルは公開されている
• Community models:ユーザーが⾃自由に公開できるモデル
• wikiページで公開されている
• BVLCが公開するモデルは制限なしに利利⽤用できる ("released for unrestricted use")
• 使⽤用⽅方法はexamples/cpp_classification/ classification.cpp(C++), examples/00-
classification.ipynb(Python)を参考
デモ:ModelZooの訓練済モデルの利利⽤用
• bvlc_reference_caffenetのcaffemodelを⼊入⼿手
• imagenetのmeanfileを作成
• synsetを⼊入⼿手
• cpp_classificationにより画像を分類 (C++)
• classify.pyにより画像を分類(Python)
Caffe2
• Yangqing Jia(Caffeの著者)によるCaffeの試験的再実装
• Caffeが依存するライブラリが膨⼤大になる
• アーリーアダプター⽤用で多くの機能が未実装(CuDNN対応など)
• Caffeとの関係がどうなるかは未定
• 特徴
• 画像解析だけでなく、機械学習全般への汎⽤用性を志向
• 機能モジュールに分解(caffe-core, caffe-image, caffe-gpu, caffe-etc)
• インターフェースの単純化
まとめ
• Caffeは最も利利⽤用されているディープラーニングフレームワークの⼀一つです
• ネットワーク・最適化アルゴリズムの設定をprototxtで記述し、コマンドラインツールから訓
練・テスト・デプロイが可能です
• Python / Matlabから利利⽤用可能で、特にPythonはiPython notebookでの実例例が充実しています
• 訓練済の学習モデルはレポジトリやModel Zooで公開され、制限なしで利利⽤用可能です
• ディープラーニング導⼊入
• Caffe
• Chainer
Chainer概要
• 製作者:得居誠也、開発:Preferred Networks、Preferred Infrastructure
• バージョン:1.0.0(2015年年6⽉月9⽇日)、1.3.0(2015年年9⽉月2⽇日予定)
• ライセンス:MIT
• ⾔言語:Python(pip install chainerでインストール可)
• 依存モジュール:Python2.7+/3.4+、Numpy1.9+、Six1.9+
• CUDA依存モジュール:CUDA6.5+
特徴
• Powerful:CUDA・マルチGPU対応
• Flexible:ほぼ任意のアーキテクチャーを実現可能
• Intuitive:計算グラフを通常のPythonコードで記述可能
http://chainer.org
分散深層強化学習による⾃自動運転制御
https://research.preferred.jp/2015/06/distributed-deep-
reinforcement-learning/
深層学習フレームワークの現状
固定⻑⾧長データから可変⻑⾧長データへ
x
1
x
N
h
1
h
H
k
M
k
1
⼊入出⼒力力 応⽤用 機械学習⼿手法 アーキテクチャ
これまでの主流流 固定⻑⾧長 画像・⾳音声 分類・回帰 全結合, CNN
これからの主流流 可変⻑⾧長 映像・⾳音声
⾃自然⾔言語・センサー
強化学習
プログラム実⾏行行
RNN, LSTM,
NTM
CNN(LeNet)*
RNN LSTM **
50
* Deep Learning Tutorials http://deeplearning.net/tutorial/lenet.html
** Graves, Alex, et al. "A novel connectionist system for unconstrained handwriting recognition.
" Pattern Analysis and Machine Intelligence, IEEE Transactions on 31.5 (2009): 855-868. Figure 11
LSTM=Long Short-term Memory
NTM=Neural Turing Machine
深層学習フレームワークの現状
アーキテクチャの複雑化
• 深層学習で扱われるアーキテクチャーの複雑化
• GoogLeNet, NTM, Recursive Net, LSTM …
• 既存フレームワークではネットワーク記述が困難
Chainer Caffe
167⾏行行 2058⾏行行
GoogleNetのアーキテクチャ定義の必要⾏行行数
(2012)AlexNet*, 7層 ↑
(2014) GoogLeNet**, 22層→
51
* ImageNet Classification with Deep Convolutional Neural Networks
http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf
** Szegedy, Christian, et al. "Going deeper with convolutions." arXiv preprint arXiv:1409.4842 (2014).
CPU版インストール
pip:pythonのパッケージ管理理ツール
six:Python2とPython3の差異異を吸収
し、同⼀一のコードが2/3両⽅方で動くよう
にするモジュール。2  *  3  =  6でsix
コマンド例例
$ apt-get update
$ apt-get upgrade
$ pip install -U six
$ pip install chainer
詳細は事前資料料「Chainerのインストールについて」参照
http://www.slideshare.net/KentaOono/chainer
GPU版インストール
• インストール⼿手順
• CUDAのインストール
• ChainerでGPUを利利⽤用する際に必要な依存
ライブラリのインストール
• chainer-cuda-depsというモジュールで
まとまっているのでこれをpipすれば良良
い
• Chainerのインストール(CPU版と同様)
コマンド例例
$ apt-get update
$ apt-get upgrade
$ pip install chainer-cuda-deps
$ pip install -U six
$ pip install chainer
example(MNIST)の実⾏行行
コードの⼊入⼿手(配布AMIでは不不要)
$ wget https://github.com/pfnet/chainer/archive/v1.2.0.tar.gz
$ tar xzf v1.2.0.tar.gz
$ python chainer-1.2.0/examples/mnist/train_mnist.py
CPU実⾏行行
$ python chainer/examples/mnist/train_mnist.py
GPU実⾏行行 <device id>は利利⽤用するGPUのID(nvidia-smiで確認可能、⼤大抵は0)
$ python chainer/examples/mnist/train_mnist.py -g <device id>
配布AMIで実験可
計算グラフ構築のパラダイム:Define-and-Run
• 計算グラフを構築した後に、データを計算グラフに順伝播する
• 計算グラフ構築⽅方法はフレームワークにより異異なる
• prototxt, yamlファイル, Luaスクリプト etc.
• 多くの深層学習フレームワークが採⽤用
• Caffe/Torch/Theanoベースのフレームワーク
• ⻑⾧長所
• メモリ管理理の必要がほとんどない
• 計算グラフの最適化を暗黙的に⾏行行える
• 短所
• 1訓練ループの中では計算グラフを変更更できない
f g
x f g
計算グラフ構築
データフィード
計算グラフ構築のパラダイム:Define-by-Run
• データの順伝播とそのデータに対する計算グラフの構築を
同時に⾏行行う
• ⻑⾧長所
• 順伝播を通常のプログラムで記述できる
• コントロールフロー(条件分岐、forループ)を計
算グラフ構築に利利⽤用可能
• 設定ファイル⽤用のミニ⾔言語を作る必要がない
• 訓練データごとに異異なる計算グラフを変更更可能
• 短所
• 訓練データ全体に渡る最適化は⾃自明ではない
• 計算グラフを動的に構築するので、メモリ管理理が必要
x yf
x = chainer.Variable(...)
y = f(x)
z = g(x)
zg
データフィード
= 計算グラフ構築
Chainerはこの
パラダイムを採⽤用
Chainerの構成要素(1):Variable / Function
• Variable:n次元配列列(ndarray/GPUArray)のラッパー
• x = chainer.Variable(numpy.ndarray(...))
• 元の配列列はx.dataに格納される
• Function:Variableの操作の基本単位
• Variable(s)を受け取り、Variable(s)を出⼒力力する
• Functionは⾃自分がどのVariableを⼊入⼒力力としたかを記憶する
• 出⼒力力のVariableは⾃自分がどのFunctionから出⼒力力されたかを記憶する
x yf
x = chainer.Variable(...)
y = f(x)
z = g(x)
zg
Forwardと同時に計算グラフを構築
x = chainer.Variable(...)
y = chainer.Variable(...)
z = x**2 + 2*x*y + y
z.backward()
実際には Splitノードが⾃自動的に挿⼊入される
x
y
_ ** 2
2 * _ _ * _
_ + _ z
_ + _
構築した計算グラフ上でBackward
x = chainer.Variable(...)
y = chainer.Variable(...)
z = x**2 + 2*x*y + y
z.backward()
z(x, y)のx, yに関する勾配が⾃自動的に計算される
それぞれの勾配はx.grad, y.gradに格納される
x
y
_ ** 2
2 * _ _ * _
_ + _ z
_ + _
例例:MNISTによる多層パーセプトロンの訓練
# Model definition
model = FunctionSet(
l1=F.Linear(784, 100),
l2=F.Linear(100, 100),
l3=F.Linear(100, 10)).to_gpu()
opt = optimizers.SGD()
opt.setup(model)
# Forward computation
def forward(x, t):
h1 = F.relu(model.l1(x))
h2 = F.relu(model.l2(h1))
y = model.l3(h2)
return F.softmax_cross_entropy(y, t)
# Training loop
for epoch in xrange(n_epoch):
for i in xrange(0, N, batchsize):
x = Variable(to_gpu(...))
t = Variable(to_gpu(...))
opt.zero_grads()
loss = forward(x, t)
loss.backward()
opt.update()
順伝播時に計算グ
ラフを動的構築
計算グラフ上
で逆伝播
例例:Recurrent Language Model
# Model definition
model = FunctionSet(
emb=F.EmbedID(1000, 100),
x2h=F.Linear( 100, 50),
h2h=F.Linear( 50, 50),
h2y=F.Linear( 50, 1000))
opt = optimizers.SGD()
opt.setup(model)
# Forward computation of one step
def fwd1step(h, w, t):
x = F.tanh(model.emb(w))
h = F.tanh(model.x2h(x) + model.h2h(h))
y = model.h2y(h)
return h, F.softmax_cross_entropy(y, t)
# Full RNN forward computation
def forward(seq):
h = Variable(...) # init state
sum_loss = 0
for curw, nextw in zip(seq, seq[1:]):
x = Variable(curw)
t = Variable(nextw)
h, loss = fwd1step(h, x, t)
sum_loss += loss
return sum_loss
h h
x,t
lo
ss
x,t
lo
ss
h
fwd1step
RNNの1ステップ
の計算
Chainerの構成要素(2):FunctionSet, Optimizer
FunctionSet:パラメータ化されたfunctionをまとめあげるクラス
主な使い⽅方
• functionのパラメータをまとめてGPUに転送する
• functionのパラメータと勾配をまとめてOptimizerに受け渡す
Optimizer:最適化アルゴリズム
l 主要なアルゴリズムを提供:SGD, MomentumSGD, AdaGrad, RMSprop, ADADELTA, Adam
l パラメータや勾配の操作も可能:weight decay, gradient clip,
例例:MNISTによる多層パーセプトロンの訓練
# Model definition
model = FunctionSet(
l1=F.Linear(784, 100),
l2=F.Linear(100, 100),
l3=F.Linear(100, 10)).to_gpu()
opt = optimizers.SGD()
opt.setup(model)
# Forward computation
def forward(x, t):
h1 = F.relu(model.l1(x))
h2 = F.relu(model.l2(h1))
y = model.l3(h2)
return F.softmax_cross_entropy(y, t)
# Training loop
for epoch in xrange(n_epoch):
for i in xrange(0, N, batchsize):
x = Variable(to_gpu(...))
t = Variable(to_gpu(...))
opt.zero_grads()
loss = forward(x, t)
loss.backward()
opt.update()
パラメータ・勾配を
まとめてGPUへ転送
Optimizerにパラ
メータ・勾配をま
とめてセット
柔軟なグラフ操作(1):unchain_backward
• 変数yより前のグラフを切切り落落とす
• yより前にはエラーが伝搬しない
• truncated BPTTを実装するのに便便利利
x f y g z
y g z
y.unchain_backward()
x = Variable(…)
y = f(x)
z = g(y)
y.unchain_backward()
BPTT:Back Propagation Through Time
RNNを時間⽅方向に展開したネットワーク上で逆伝播
をする操作(通常最初の時刻まで逆伝播する)
truncated BPTT
BPTTで逆伝播時に遡る時刻を途中で打ち切切る⼿手法
柔軟なグラフ操作(2):Volatile変数
• 計算グラフを構築しない変数
• ⾃自分を出⼒力力した関数を覚えていない
• ⾃自分を⼊入⼒力力して利利⽤用した関数は⼊入⼒力力したこ
とを覚えていない
• 誤差逆伝播が不不要な時や⼀一部分でのみ⾏行行う時に
有⽤用(例例:テスト時)
• volatile属性へのセットで変更更可能
x = Variable(..., volatile=True)
y = f(x)
y.volatile = False
z = h(y)
x f y g z
Volatile
Volatile:揮発性の
⾮非
Volatile
Volatile
⾮非
Volatile
Volatile性は関数適⽤用
で引き継がれる
Caffe Reference Modelサポート
• Caffe Model Zooで提供されているBVLC
Reference ModelをChainerのfunctionとして利利
⽤用可能
func =
CaffeFunction('path/to/bvlc_reference_
caffenet.caffemodel')
x = Variable(…)
y, = func(inputs={'data': x},
outputs=['fc8'])
CuPy:GPU版NumPy
• cupy.ndarray:numpy.ndarrayの配列列操作のサ
ブセットをサポート
• Elementwiseカーネル、Reduction カーネルを
記述可能
• CPUコードとGPUコードの統⼀一的な記述をサ
ポート
def softmax(x)
xp = get_array_module(x)
y = x – x.max(axis=1, keepdims=True)
y = xp.exp(y)
return y / y.sum(axis=1, keepdims=True)
⼊入⼒力力に応じて
numpy/cupyを選択
xp=numpy/cupy
いずれでもOK
まとめ
• ChainerはDefine-By-Runのコンセプトに基づいたPythonベースのディープラーニングフレーム
ワークです
• データの順伝播時に計算グラフを動的に構築することで、柔軟なネットワーク構築が可能です
• NumPy互換のGPU多次元配列列ライブラリCuPyをバックエンドに持つことで、CPUとGPUで統⼀一
的なコードの記述をサポートします
Copyright  ©  2014-‐‑‒
Preferred  Networks  All  Right  Reserved.
補⾜足資料料
ディープラーニングの応⽤用例例
定量量的構造活性相関(QSAR)での成功* **
71
* Multi-task Neural Networks for QSAR Predictions
George E. Dahl, Navdeep Jaitly and Ruslan Salakhutdinov
http://arxiv.org/abs/1406.1231
** http://blog.kaggle.com/2012/10/31/merck-
competition-results-deep-nn-and-gpus-come-out-to-play/
• 19アッセイでの化合物の活性をDeep NNを⽤用
いて同時に予測、これまでの予測精度度を超え
る結果を得る*
• ほぼ同様の⼿手法で同研究Gr. がMerck 主催の化
合物活性予測のコンペティションで優勝**
x
1
x
N
h
1
h
H
k
M
k
1
y
M
y
1
k
M
k
1
y
M
y
1
k
M
k
1
y
M
y
1
タスク
1
タスク
2
タスク
3
(参考)protoファイルからC++コード⽣生成と⽣生成コードの利利⽤用
build/src/caffe/proto/caffe.pb.h
・・・
・・・
src/caffe/proto/caffe.proto
src/caffe/layers/inner_product_layer.cpp
Caffeで定義済のLayer
• 画像認識識関連(畳み込み・プーリング・正規化など): vision_layers.hpp
• [De]ConvolutionLayer/Im2ColLayer/LRNLayer/[CuDNN]PoolingLayer/SPPLayer…
• 基本的な操作(Blobの変形など): common_layers.hpp
• ConcatLayer/SplitLayer/EltwiseLayer/ReshapeLayer…
• データフィーダーの抽象化: data_layers.hpp
• DummyDataLayer/HDF5DataLayer/ImageDataLayer/MemoryDataLayer…
• 損失関数: loss_layers.hpp
• AccuracyLayer/EucledianLossLayer/SigmoidCrossEntropyLayer/SoftmaxLayer…
• Elementwiseな操作(活性化関数など): neuron_layers.hpp
• AbsLayer/ExpLayer/LogLayer/DropoutLayer…
(参考)⾃自作のLayerを作成する(例例:MyLossLayer)
• 変更更箇所
• caffe.proto(パラメータ定義)
• loss_layers.hpp(Layer宣⾔言)
• 追加コード
• my_loss_layer.cpp(CPU実装)
• my_loss_layer.cu(GPU実装)
• test_my_loss_layer.cpp(テストコード)
• 命名規則はある程度度統⼀一されているので可能な
限りそれに従うのが良良い
caffe.proto
train_val.prototxtを改造
Chainer実装済のFunction(chainer.functions パッケージ)
Parameterized function:Pythonのクラスとして提供
• BatchNormalization Convolution2D Linear LSTM PReLU ReLU Inception, InceptionBN
• ⾃自然⾔言語処理理関係: EmbedID Bilinear HierachicalSoftMax NegativeSampling
Non-parameterized function:Pythonの通常の関数として提供
• 基本的な演算:basic_math identity matmul sum
• 活性化関数:dropout leaky_relu sigmoid softmax softplus tanh
• 損失関数:accuuracy cross_covariance mean_squared_error sigmoid_cross_entropy
softmax_cross_entropy
• 配列列操作:concat copy reshape split_axis
• 画像認識識関連:max_pooling_2d average_pooling_2d spatial_pyramidal_pooling
local_response_normalization
• サンプリング:gaussian
unchain_backwardによるTruncated BPTTの例例
I
0.2
am
0.3
+
メモリ上に
動的に展開
76
for i in xrange(jump*n_epoch):
x_batch = numpy.array(…)
y_batch = numpy.array(…)
state, loss = fwd1step(x_batch, y_batch, state)
accum_loss += loss
if i % bprop_len == 0:
optimizer.zero_grads()
accum_loss.backward()
accum_loss.unchain_backward()
accu_loss = 0
optimizer.update()
unchain_backwardによるTruncated BPTTの例例
I
0.2
am
0.3
+
77
for i in xrange(jump*n_epoch):
x_batch = numpy.array(…)
y_batch = numpy.array(…)
state, loss = fwd1step(x_batch, y_batch, state)
accum_loss += loss
if i % bprop_len == 0:
optimizer.zero_grads()
accum_loss.backward()
accum_loss.unchain_backward()
accu_loss = 0
optimizer.update()
unchain_backwardによるTruncated BPTTの例例
I
0.2
am
0.3
+
参照されていない変数は
本当はGCで回収される
78
for i in xrange(jump*n_epoch):
x_batch = numpy.array(…)
y_batch = numpy.array(…)
state, loss = fwd1step(x_batch, y_batch, state)
accum_loss += loss
if i % bprop_len == 0:
optimizer.zero_grads()
accum_loss.backward()
accum_loss.unchain_backward()
accu_loss = 0
optimizer.update()
unchain_backwardによるTruncated BPTTの例例
I
0.2
am
0.3
+
a
0.5
+
boy
1.0
+
79
for i in xrange(jump*n_epoch):
x_batch = numpy.array(…)
y_batch = numpy.array(…)
state, loss = fwd1step(x_batch, y_batch, state)
accum_loss += loss
if i % bprop_len == 0:
optimizer.zero_grads()
accum_loss.backward()
accum_loss.unchain_backward()
accu_loss = 0
optimizer.update()
unchain_backwardによるTruncated BPTTの例例
I
0.2
am
0.3
+
a
0.5
+
boy
1.0
+
80
for i in xrange(jump*n_epoch):
x_batch = numpy.array(…)
y_batch = numpy.array(…)
state, loss = fwd1step(x_batch, y_batch, state)
accum_loss += loss
if i % bprop_len == 0:
optimizer.zero_grads()
accum_loss.backward()
accum_loss.unchain_backward()
accu_loss = 0
optimizer.update()

More Related Content

What's hot

ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題Kenta Oono
 
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Seiya Tokui
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"Ken'ichi Matsui
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMCKenta Oono
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-Yasuyuki Sugai
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能Yuya Unno
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてYuya Unno
 
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Ohsawa Goodfellow
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装Ryosuke Okuta
 
Recurrent Neural Networks
Recurrent Neural NetworksRecurrent Neural Networks
Recurrent Neural NetworksSeiya Tokui
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践するKazuaki Tanida
 
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Ryosuke Okuta
 
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesPractical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesKoji Matsuda
 
Chainer, Cupy入門
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門Yuya Unno
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJun-ya Norimatsu
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
深層学習フレームワーク Chainerとその進化
深層学習フレームワークChainerとその進化深層学習フレームワークChainerとその進化
深層学習フレームワーク Chainerとその進化Yuya Unno
 

What's hot (20)

ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題
 
Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)Chainer/CuPy v5 and Future (Japanese)
Chainer/CuPy v5 and Future (Japanese)
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMC
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
 
Chainer入門と最近の機能
Chainer入門と最近の機能Chainer入門と最近の機能
Chainer入門と最近の機能
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
 
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)
 
ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装ディープラーニングフレームワーク とChainerの実装
ディープラーニングフレームワーク とChainerの実装
 
Recurrent Neural Networks
Recurrent Neural NetworksRecurrent Neural Networks
Recurrent Neural Networks
 
Kerasで深層学習を実践する
Kerasで深層学習を実践するKerasで深層学習を実践する
Kerasで深層学習を実践する
 
Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能Chainer v1.6からv1.7の新機能
Chainer v1.6からv1.7の新機能
 
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesPractical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
 
Chainer, Cupy入門
Chainer, Cupy入門Chainer, Cupy入門
Chainer, Cupy入門
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
Jupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep LearningJupyter NotebookとChainerで楽々Deep Learning
Jupyter NotebookとChainerで楽々Deep Learning
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
深層学習フレームワーク Chainerとその進化
深層学習フレームワークChainerとその進化深層学習フレームワークChainerとその進化
深層学習フレームワーク Chainerとその進化
 

Similar to 日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料

Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafKenta Oono
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーションYasushi Hara
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution GuideKenta Oono
 
[DL輪読会]Meta-Learning Probabilistic Inference for Prediction
[DL輪読会]Meta-Learning Probabilistic Inference for Prediction[DL輪読会]Meta-Learning Probabilistic Inference for Prediction
[DL輪読会]Meta-Learning Probabilistic Inference for PredictionDeep Learning JP
 
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習Preferred Networks
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twmYuta Kashino
 
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」Naoya Chiba
 

Similar to 日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料 (8)

Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション
 
Chainer Contribution Guide
Chainer Contribution GuideChainer Contribution Guide
Chainer Contribution Guide
 
[DL輪読会]Meta-Learning Probabilistic Inference for Prediction
[DL輪読会]Meta-Learning Probabilistic Inference for Prediction[DL輪読会]Meta-Learning Probabilistic Inference for Prediction
[DL輪読会]Meta-Learning Probabilistic Inference for Prediction
 
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
PFNインターン最終発表: 怪我をしても歩ける6足歩行ロボットの学習
 
Deep learning Libs @twm
Deep learning Libs @twmDeep learning Libs @twm
Deep learning Libs @twm
 
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」
論文紹介「PointNetLK: Robust & Efficient Point Cloud Registration Using PointNet」
 

More from Kenta Oono

Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Kenta Oono
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryKenta Oono
 
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Kenta Oono
 
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Kenta Oono
 
深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介Kenta Oono
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2Kenta Oono
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1Kenta Oono
 
情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノートKenta Oono
 
GTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionGTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionKenta Oono
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of ChainerKenta Oono
 
Tokyo Webmining Talk1
Tokyo Webmining Talk1Tokyo Webmining Talk1
Tokyo Webmining Talk1Kenta Oono
 
VAE-type Deep Generative Models
VAE-type Deep Generative ModelsVAE-type Deep Generative Models
VAE-type Deep Generative ModelsKenta Oono
 
Common Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksCommon Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksKenta Oono
 
提供AMIについて
提供AMIについて提供AMIについて
提供AMIについてKenta Oono
 
Chainerインストール
ChainerインストールChainerインストール
ChainerインストールKenta Oono
 
Caffeインストール
CaffeインストールCaffeインストール
CaffeインストールKenta Oono
 
Techtalk:多様体
Techtalk:多様体Techtalk:多様体
Techtalk:多様体Kenta Oono
 
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...Kenta Oono
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みKenta Oono
 
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...Kenta Oono
 

More from Kenta Oono (20)

Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
Minimax statistical learning with Wasserstein distances (NeurIPS2018 Reading ...
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistry
 
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
Overview of Machine Learning for Molecules and Materials Workshop @ NIPS2017
 
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...Comparison of deep learning frameworks from a viewpoint of double backpropaga...
Comparison of deep learning frameworks from a viewpoint of double backpropaga...
 
深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介深層学習フレームワーク概要とChainerの事例紹介
深層学習フレームワーク概要とChainerの事例紹介
 
20170422 数学カフェ Part2
20170422 数学カフェ Part220170422 数学カフェ Part2
20170422 数学カフェ Part2
 
20170422 数学カフェ Part1
20170422 数学カフェ Part120170422 数学カフェ Part1
20170422 数学カフェ Part1
 
情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート情報幾何学の基礎、第7章発表ノート
情報幾何学の基礎、第7章発表ノート
 
GTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introductionGTC Japan 2016 Chainer feature introduction
GTC Japan 2016 Chainer feature introduction
 
On the benchmark of Chainer
On the benchmark of ChainerOn the benchmark of Chainer
On the benchmark of Chainer
 
Tokyo Webmining Talk1
Tokyo Webmining Talk1Tokyo Webmining Talk1
Tokyo Webmining Talk1
 
VAE-type Deep Generative Models
VAE-type Deep Generative ModelsVAE-type Deep Generative Models
VAE-type Deep Generative Models
 
Common Design of Deep Learning Frameworks
Common Design of Deep Learning FrameworksCommon Design of Deep Learning Frameworks
Common Design of Deep Learning Frameworks
 
提供AMIについて
提供AMIについて提供AMIについて
提供AMIについて
 
Chainerインストール
ChainerインストールChainerインストール
Chainerインストール
 
Caffeインストール
CaffeインストールCaffeインストール
Caffeインストール
 
Techtalk:多様体
Techtalk:多様体Techtalk:多様体
Techtalk:多様体
 
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...
Encode勉強会:GENCODE: The reference human genome annotation for The ENCODE Proje...
 
Deep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組みDeep Learning技術の最近の動向とPreferred Networksの取り組み
Deep Learning技術の最近の動向とPreferred Networksの取り組み
 
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...
Learning Image Embeddings using Convolutional Neural Networks for Improved Mu...
 

日本神経回路学会セミナー「DeepLearningを使ってみよう!」資料