Pythonによる機械学習入門 ~Deep Learningに挑戦~

Yasutomo Kawanishi
Yasutomo KawanishiAssistant Professor - Nagoya University at Nagoya University
Pythonによる機械学習⼊⾨
〜Deep Learningに挑戦〜
ITSS名古屋チャプタ2016年度 第1回講演会
2016/07/15
名古屋⼤学 情報科学研究科
メディア科学専攻 助教
川⻄康友
本⽇の内容
l機械学習
lプログラミング⾔語Python
lPythonでの機械学習
l各種⼿法の⽐較
lDeep Learningの利⽤ (Chainer / Keras)
lまとめ
サンプルコードはgithubにあります
https://github.com/yasutomo57jp/ssii2016_tutorial
https://github.com/yasutomo57jp/deeplearning_samples
機械学習とは
l データから規則性や知識を⾒つけること
l 出来ること
Ø 回帰
²関数のパラメータを推定する
Ø クラス分類
²クラスを分類する基準,ルールを⾒つける
Ø クラスタリング
²データを複数の集合に分割するルールを⾒つける
データに潜む規則性
知識を発⾒
⼤量の
データ
機械学習
機械学習の例:多クラス分類
l画像分類問題
Ø画像を⼊⼒として,どのクラスに属するかを出⼒
Ø例
²MNIST:⼿書き⽂字認識
²bird-200:⿃の200種分類問題
²Caltech-101:101種類の物体認識
分類する基準を,
⼤量の学習データから
機械学習によって獲得する
多クラス分類器の学習と評価
l学習段階
l評価段階
学習データ
の準備
識別器の
初期化
識別器の
学習
評価データ
の準備
評価データ
の分類
結果の
集計,出力
プログラムによって実現
特徴量と正解ラベルのペア 評価データを
クラス分類器にかける
クラス分類器が得られる特徴量と正解ラベルのペア
多クラス分類器の実現
lよく使われるプログラミング⾔語/ツール
ØC/C++
ØMatlab
ØR
ØPython
Øその他(GUIで⼿軽に使えるもの)
²Weka (Java), Orange(Python), …
⼈⼯知能(機械学習)ブーム
+
機械学習ではPythonがよく使われる
Pythonのいいところ
l無料で使える
l実⾏・デバッグが容易
Øスクリプト⾔語であるメリット
lシンプルで覚えやすい
Ø基本的な⽂法が簡単
lどの環境でも動く
ØWin, Mac, Linux
l様々なモジュールが存在
lC/C++との組み合わせも可能
様々なPython環境
lpythonインタプリタ
Øpythonコードを1⾏ずつ⼊⼒・実⾏
lエディタ+pythonインタプリタ
Ø好きなエディタでコードを書く
Øpython hoge.py で実⾏
lipython(インタラクティブPython)
Øシェル機能を搭載したpythonインタプリタ
lIDLE, spyder, PyCharm, Eclipse+PyDev
Ø統合開発環境
pythonインタプリタ
ipython
シェルのように使える
IDLE
付属のエディタでコードを書き、F5キーで実行できる
pythonインタプリタの画面
エディタ
spyder
Matlabライクな開発環境
ipythonの画面
ヘルプ画面
jupyter (ipython notebook)
ブラウザ上でipythonの
実⾏結果を表⽰
jupyter (ipython notebook)
グラフなどの描画も
ブラウザ上で可能
Pythonとモジュール
l Pythonは基本機能はとてもシンプル
Ø 拡張モジュールが豊富
² ⾏列演算など:numpy
² 科学技術計算など:scipy
² グラフの描画など:matplotlib
² 機械学習:scikit-learn
² ディープラーニング:pylearn2, caffe, chainer, keras
² 画像処理:pillow, scikit-image, opencv
² シミュレーション:simpy
² 解析的な計算:theano
² インタラクティブシェル:ipython
Ø https://pypi.python.org/pypi で公開
² easy_install コマンドや,pip コマンドで簡単にインストール可能
² ⾃作モジュールを簡単に公開できる機能もある
Pythonでの機械学習
l機械学習パッケージ scikit-learn
Øhttp://scikit-learn.org/
Ø機械学習に関する
様々な⼿法が実装されたライブラリ
²クラス分類
²クラスタリング
²回帰
²データマイニング
ØBSDライセンス
scikit-learnで扱うことのできる問題⼀覧
解きたい問題に対して何を使えば良いのかのガイドも載っています
多クラス分類問題の例題
lMNIST database of handwritten digits
Ø0〜9の⼿書き数字認識問題
Ø7万枚の画像+正解ラベル
Ø例題としてよく利⽤される
Øscikit-learnでもデータセットが提供されている
²fetch_mldata("MNIST original") で取得可能
Pythonによる実装
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
学習段階
評価段階
説明の都合上,
学習段階と評価段階を
つなげたコードで
説明します
Pythonによる実装
線形Support Vector Machine (線形SVM)を使った実装例
1
2
3
4
5
6
7
8
9
10
11
12
13
from	sklearn.datasets import	fetch_mldata
from	sklearn.cross_validation import	train_test_split
from	sklearn.svm import	LinearSVC as	Classifier
from	sklearn.metrics import	confusion_matrix
import	numpy	as	np
mnist =	fetch_mldata("MNIST	original",	 data_home=".")
data	=	np.asarray(mnist.data,	np.float32)
data_train,	data_test,	label_train,	label_test =	train_test_split(data,	mnist.target,	test_size=0.2)
classifier	=	Classifier()
classifier.fit(data_train,	label_train)
result	=	classifier.predict(data_test)
cmat =	confusion_matrix(label_test,	 result)
print(cmat)
たった13行で書けてしまう!
Pythonによる実装
from sklearn.datasets import fetch_mldata
from	sklearn.cross_validation import	train_test_split
from sklearn.svm import LinearSVC as Classifier
from sklearn.metrics import confusion_matrix
import numpy as np
mnist = fetch_mldata("MNIST original", data_home="
data = np.asarray(mnist.data, np.float32)
data_train, data_test, label_train, label_test = t
classifier = Classifier()
classifier.fit(data_train, label_train)
result = classifier.predict(data_test)
cmat = confusion_matrix(label_test, result)
print(cmat)
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
特徴量の読み込み
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0]] [ 0., 0., ..., 9., 9.]
minst.targetmnist.data
特徴量とラベルの表現形式
学習⽤正解ラベル学習⽤特徴量
numpyのndarray(多次元配列)形式
1⾏が1つの特徴量.それに対応するラベル.
(サンプル数, 特徴量)の⾏列
特徴量の読み込み
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
data_train, data_test, label_train, label_test = ¥
train_test_split(data, mnist.target, test_size=0.2)
特徴量と正解ラベルを
学習データと評価データへ分割
[[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0]] [ 0., 0., ..., 9., 9.]
mnist.data mnist.target
data_test label_testdata_train label_train
学習データ 評価データ
2割を評価用
にする
識別器の初期化・学習
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
classifier = Classifier()
読み込んだモジュールでの識別器
(ここでは線形SVM)のクラスのインスタンスを⽣成
引数で,ソフトマージンのパラメータ等を指定可能
classifier.fit(data_train, label_train)
学習データ(特徴量,正解ラベル)を⽤いて
識別器の学習を実⾏
特徴量 正解ラベル
評価
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
result = classifier.predict(data_test)
評価データの特徴量を,学習済み分類器で
分類する
特徴量
分類結果
正解ラベル同様,
0〜9の値をもつ配列
結果の集計・出⼒
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
accuracy = accuracy_score(label_test, result)
print(accuracy)
全体として何%の認識率なのかを調査
cmat = confusion_matrix(label_test, result)
print(cmat)
混同⾏列での評価をする場合
認識率での評価をする場合
正解ラベル 分類結果
どのクラスへの誤分類が多いかを調査
from sklearn.metrics import accracy_score
MNIST datasetの分類結果
0 1 2 3 4 5 6 7 8 9
0 1282 0 15 0 0 6 33 1 8 9
1 01503 9 0 2 5 2 2 8 6
2 24 201266 3 14 3 29 9 22 10
3 19 20 1001162 4 43 15 12 38 32
4 5 12 9 11151 4 36 4 2 107
5 33 11 14 34 341020 58 2 42 35
6 10 6 8 0 3 151360 0 3 1
7 4 24 39 4 17 1 41108 6 234
8 33 91 81 13 29 58 27 1 932 99
9 9 12 7 9 37 8 0 36 71314
分類器 認識率 学習時間(秒) 評価時間(秒)
線形SVM 0.856 128.5 0.023
PCのスペック
CPU: Intel® Core™ i7-3970K 3.50GHz
GPU: GeForce GTX 1080
識別器を⾃由に切り替える
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
書き換えの必要は1⾏だけ
from sklearn.svm import	LinearSVC as Classifier
① モジュールの読み込み
from sklearn.svm import SVC as Classifier
from sklearn.neighbors import KNeighborsClassifier as Class
from sklearn.ensemble import AdaBoostClassifier as Classifi
from sklearn.ensemble import RandomForestClassifier as Clas
1⾏書き換えるだけで,各種分類器を
切り替えて利⽤・⽐較することが可能!
様々な識別器での結果
分類器 認識率 学習時間(秒) 評価時間(秒)
線形SVM 0.856 128.5 0.023
K-Nearest Neighbor 0.970 5.846 775.0
AdaBoost 0.735 44.70 0.802
Random Forest 0.945 2.789 0.063
【注意】
全てデフォルトのパラメータを利⽤
パラメータチューニングによって性能は変化する
学習・評価サンプルの分割⽅法によっても結果は変化する
PCのスペック
CPU: Intel® Core™ i7-3970K 3.50GHz
GPU: GeForce GTX 1080
mnist = fetch_mldata("MNIST original", data_home=".")
特徴量の読み込み
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
今回はMINST databaseを使ったが…
load_svmlight_file(filename)
1. OpenCV等を使って予め特徴抽出し,保存
別の取り組みたい問題のために
⾃前で抽出した特徴量を使う場合
2. 保存した特徴量を読み込んでクラス分類
データの保存には svmlight 形式が便利
読み込み⽤の関数が存在
特徴量とラベルをまとめて読み込める
svmlight / libsvm 形式
llibsvmなどのツールで利⽤されている形式
Øそのまま svm-train などのコマンドでも利⽤可
1 1:0.111 2:0.253 3:0.123 4:-0.641 …
1 1:0.121 2:0.226 3:0.143 4:-0.661 …
2 1:0.511 2:-0.428 3:0.923 4:0.348 …
2 1:0.751 2:-0.273 3:0.823 4:0.632 …
クラスラベル
特徴量の次元番号:特徴量の値 の組が次元数分ある
mnist = fetch_mldata("MNIST original", data_home=".")
特徴量の読み込み
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
今回はMINST databaseを使ったが…
load_svmlight_file(filename)
1. OpenCV等を使って予め特徴抽出し,保存
別の取り組みたい問題のために
⾃前で抽出した特徴量を使う場合
2. 保存した特徴量を読み込んでクラス分類
データの保存には svmlight 形式が便利
読み込み⽤の関数が存在
特徴量とラベルをまとめて読み込める
DEEP LEARNINGに挑戦
Deep Learning
l 近年ものすごく注⽬を集めている
l 様々なニュースでも話題
Ø Audi、⾃動運転成功の鍵はディープラーニングと発表
Ø Facebook、“ほぼ⼈間レベル”の顔認識技術「DeepFace」を発表
Ø グーグルの⼈⼯知能、囲碁の欧州チャンピオンに5連勝
Googleトレンドでの「Deep Learning」の調査結果
Deep Learningのためのツール
名前 開発元 環境 ⾔語
導⼊の
容易さ
GPU化の
容易さ
その他
neural
network
toolbox
MathWorks * Matlab ◎ ?
caffe BVLC Linux C++
Python
△ ◎ 画像に
強い
TensorFlow Google Linux
Mac
Python ○ ○ AlphaGo
Torch7 Facebook Linux
Mac
Lua ○ ○
chainer Preferred
Networks
* Python ◎ ◎
keras Francois
Chollet
* Python ◎ ◎
MXnet ワシントン⼤,
CMU, etc.
* Python
R
Julia
○ ◎
今回はChainerとKerasでの実装例を紹介する
Deep Learningライブラリの基本
l誤差逆伝播法による学習
Ø各層で関数を微分して重み更新
²関数の微分機能が必要
l関数を表現するオブジェクト
Ø演算結果ではなく,式の構造を保持
Ø微分機能:微分した関数のオブジェクトを返す
lその他の便利機能
ØGPU上で計算する機能
Øネットワーク(関数の集まり)の構築機能
Ø学習データを与えると⾃動的に学習してくれる機能
今回紹介する例題と実装
lクラス分類器として
Ø(Deep) Neural Network
Ø3層のニューラルネットワークを例に説明
l特徴抽出+クラス分類器として
ØConvolutional Neural Network
ØConvolution 2層,全結合3層を例に
l学習済みモデルの読み込みと実⾏・Fine tuning
クラス分類器としてのDeep Learning
l⼩規模なニューラルネットワークを例に
重み付き和→活性化関数 重み付き和→活性化関数
いくつか
の隠れ層 クラス数分の
出⼒ユニット
特徴量の次元数分の
⼊⼒ユニット
誤差逆伝播法による学習
決める必要があるもの
l層のパラメータ
Ø層数
Ø各層のユニット数
l伝播のさせかた
Ø活性化関数
l学習のさせかた
Ø最適化⽅法
重み付き和→活性化関数 重み付き和→活性化関数 ・・・
誤差逆伝播法による学習
決める必要があるもの
l層のパラメータ
Ø層数
Ø各層のユニット数
l伝播のさせかた
Ø活性化関数
l学習のさせかた
Ø最適化⽅法
重み付き和→活性化関数 重み付き和→活性化関数 ・・・
誤差逆伝播法による学習
決める必要があるもの
l層のパラメータ
Ø層数
Ø各層のユニット数
l伝播のさせかた
Ø活性化関数
l学習のさせかた
Ø最適化⽅法
重み付き和→活性化関数 重み付き和→活性化関数 ・・・
誤差逆伝播法による学習
決める必要があるもの
l層のパラメータ
Ø層数
Ø各層のユニット数
l伝播のさせかた
Ø活性化関数
l学習のさせかた
Ø最適化⽅法
重み付き和→活性化関数 重み付き和→活性化関数 ・・・
誤差逆伝播法による学習
Deep Learningの処理⼿順
必要なモジュールの読み込み
特徴量の読み込み
識別器の初期化・学習
評価
結果の集計・出⼒
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
前
半
の
機
械
学
習
の
流
れ
DeepLearning
の
流
れ
CHAINERでの実装
必要なモジュールの読み込み
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
from chainer import Chain
from chainer import Variable
from chainer import optimizers
import chainer.functions as F
import chainer.links as L
from sklearn.metrics import confusion_matrix
import numpy as np
chainerで必要なものをインポート
その他,機械学習の評価⽤等のために
必要なインポート
層のパラメータ
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
class MyNetwork(Chain):
def __init__(self):
super(MyNetwork, self).__init__(
l1=F.Linear(784, 200),
l2=F.Linear(200, 100),
l3=F.Linear(100, 10))
self.is_train = True
・・・
・・・
・・・
・・・
784 200 100
10
・・・
・・・
・・・
class MyNetwork(Chain):
def __init__(self):
super(MyNetwork, self).__init__(
l1=F.Linear(784, 200),
l2=F.Linear(200, 100),
l3=F.Linear(100, 10))
self.is_train = True
⼊⼒層のユニット数 中間層のユニット数
class MyNetwork(Chain):
def __init__(self):
super(MyNetwork, self).__init__(
l1=F.Linear(784, 200),
l2=F.Linear(200, 100),
l3=F.Linear(100, 10))
self.is_train = True
出⼒層のユニット数
ネットワークのモデルを
表現するクラス
l1 l2 l3
伝播のさせ⽅
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
・・・
・・・
・・・
・・・
784 200 100
10
class MyNetwork(Chain):
def __call__(self, x):
h1 = F.sigmoid(self.l1(x))
h2 = F.sigmoid(self.l2(h1))
p = model.l3(h2)
return p
class MyNetwork(Chain):
def __call__(self, x):
h1 = F.sigmoid(self.l1(x))
h2 = F.sigmoid(self.l2(h1))
p = model.l3(h2)
return p
活性化関数の変更
l従来のニューラルネットワークでは
シグモイド関数がよく利⽤される
ØDeep Learningでは勾配の計算の都合上,
ReLU (Rectified Linear Unit)などが利⽤される
lDropoutの導⼊による汎化性能向上
Ø学習時,ランダムに誤差伝播を0にする
勾配が⼩さくなる 勾配⼀定
活性化関数の変更
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
def __call__(self, x):
h1 = F.sigmoid(self.l1(x))
h2 = F.sigmoid(self.l2(h1))
p = self.l3(h2)
return p
def __call__(self, x):
h1 = F.relu(self.l1(x))
h2 = F.relu(self.l2(h1))
p = self.l3(h2)
return p
def __call__(self, x):
h1 = F.dropout(F.relu(self.l1(x)),
train=self.is_train)
h2 = F.dropout(F.relu(self.l2(h1)),
train=self.is_train)
p = self.l3(h2)
return p
• 活性化関数をReLUにする
• Dropoutを追加する
学習のさせ⽅
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
ネットワークのインスタンスの⽣成
分類器としての評価を⾏うクラスを利⽤
network = MyNetwork()
model = L.Classifier(network)
model.compute_accuracy = True
誤差関数を指定可能
学習のさせ⽅
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
optimizer = optimizers.Adam()
optimizer.setup(model)
SGD ( Stochastic Gradient Descent)
AdaGrad
RMSprop
Adam (ADAptive Moment estimation)
modelを登録する
⾊々なパラメータ更新⽅法が利⽤可
学習率を
⾃動的に
調整する
改良
基本的には確率的勾配法が利⽤される
確率的勾配法のバリエーション
ネットワークの学習の流れ
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
ミニバッチによる逐次的な学習
オンライン学習:1個ずつ学習
→少しずつランダムにまとめて学習
ネットワークの学習
学習データをミニバッチへ分割して学習
指定回数の繰り返し
ミニバッチごとの繰り返し
誤差逆伝播法による最適化
ネットワークの学習 1/2
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
x_batch = data_train[perm[i:i+batchsize]]
t_batch = label_train[perm[i:i+batchsize]]
optimizer.zero_grads()
x = Variable(x_batch)
t = Variable(t_batch)
loss = model(x, t)
accuracy = model.accuracy
loss.backward()
optimizer.update()
ミニバッチごとの誤差逆伝播法による学習
ミニバッチ
型を変換
ネットワークを通して
誤差を評価
誤差の逆伝播
パラメータの更新
ネットワークの学習の流れ
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
ミニバッチによる逐次的な学習
ネットワークの学習
学習データをミニバッチへ分割して学習
指定回数の繰り返し
ミニバッチごとの繰り返し
誤差逆伝播法による最適化
オンライン学習:1個ずつ学習
→少しずつランダムにまとめて学習
ネットワークの学習 2/2
perm = np.random.permutation(N)
sum_accuracy = 0
sum_loss = 0
for i in range(0, N, batchsize):
(前述の順伝播,誤差逆伝播で lossとaccuracyを得る)
sum_loss += float(loss.data) * len(x_batch)
sum_accuracy += float(accuracy.data) * len(x_batc
l = sum_loss / N
a = sum_accuracy /N
print("loss: %f, accuracy: %f" % (l, a))
ミニバッチの分割の
仕⽅を決定
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
ミニバッチの分割と繰り返し
この処理を,
ミニバッチの分割の仕⽅を変えながらepoch分繰り返す
繰り返し回数
ネットワークの学習の流れ
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
ミニバッチによる逐次的な学習
ネットワークの学習
学習データをミニバッチへ分割して学習
指定回数の繰り返し
ミニバッチごとの繰り返し
誤差逆伝播法による最適化
オンライン学習:1個ずつ学習
→少しずつランダムにまとめて学習
評価のしかた
network.is_train = False
test_input = Variable(data_test)
result_scores = network(test_input)
各クラスのスコアが出てくるので
argmax を取る
今回は学習時ではない
= Dropoutしない
results = np.argmax(result_scores, axis=1)
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
評価データをネットワークに通す
最終出⼒層の最⼤値を選択
CUDAによるGPUを使った⾼速化
model = L.Classifier(network)
model.to_gpu()
x = Variable(cuda.to_gpu(x_batch))
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
CPU上での計算をGPU上へ移す (to_gpu())
model と Variableへ渡す変数をGPUへ
GPUの利⽤
from chainer import cuda
必要なモジュールをインポート
modelをGPUへ
Variableへ渡す変数をGPUへ
MINST databaseでの分類結果
分類器 認識率 学習時間(秒) 評価時間(秒)
線形SVM 0.856 128.5 0.023
K-Nearest Neighbor 0.970 5.846 775.0
AdaBoost 0.735 44.70 0.802
Random Forest 0.945 2.789 0.063
Neural Network (GPU) 0.970 1018.9(cpu: 1906) 0.063
【注意】
ニューラルネットの学習は100回繰り返した.
PCのスペック
CPU: Intel® Core™ i7-3970K 3.50GHz
GPU: GeForce GTX 1080
KERASでの実装
Kerasの仕組み
lメインの計算部分はバックエンドが担当
Øバックエンド
²Theano
²TensorFlow
ØバックエンドがGPU対応していれば,
⾃動的にGPUで実⾏される
l直感的な記述法
Øネットワークの層を順番に書く
Øscikit-learn的な学習(fit),評価(predict)
必要なモジュールの読み込み
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Activation, Dropout
from keras.utils.np_utils import to_categorical
kerasで必要なものをインポート
ネットワーク構築
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
kerasではネットワーク構築は⼀気にやる
model = Sequential()
model.add(Dense(200, input_dim=784))
model.add(Activation("relu"))
model.add(Dropout(0.5))
model.add(Dense(100))
model.add(Activation("relu"))
model.add(Dropout(0.5))
model.add(Dense(10))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
⼀番最初の層の
⼊⼒次元数は指定する
誤差関数,最適化法,
途中の評価⽅法を指定
ネットワークの学習・評価
model.fit(data_train, label_train_category,
nb_epoch=100, batch_size=100, verbose=1)
ミニバッチの分割の
仕⽅を決定
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
Kerasでの学習・評価は⾮常に簡単
results = model.predict_classes(data_test, verbose=1)
学習
評価
繰り返し回数
途中状態の可視化
label_test_category = to_categorical(label_test)
ラベルの変換
多クラスの時クラス番号は
カテゴリベクトルにしておく
MINST databaseでの分類結果
分類器 認識率 学習時間(秒) 評価時間(秒)
線形SVM 0.864 130.0 0.032
K-Nearest Neighbor 0.970 20.70 702.9
AdaBoost 0.719 64.74 0.519
Random Forest 0.946 1.026 0.152
NN (GPU, Chainer) 0.970 1018(cpu:1906) 0.063
NN (GPU, Keras) 0.831 108.2 0.653
【注意】
ニューラルネットの学習は100回繰り返した.
PCのスペック
CPU: Intel® Core™ i7-3970K 3.50GHz
GPU: GeForce GTX 1080
※Deep	Learningの認識率はミニバッチの順番等にもよるので比較するのは困難
特徴抽出+識別器としてのDeep Learning
lConvolution層を持つニューラルネットワーク
Ø局所的にのみ連結されたネットワーク
²画像処理における畳み込みフィルタ(convolution)に相当
Ø位置ずれへの頑健性
²Pooling: 局所領域の特徴を集約
16チャンネル
1チャンネル
Convolution
Pooling
64チャンネル
16チャンネル
Convolution
Pooling
64チャンネル
CNNを使う時の処理⼿順
必要なモジュールの読み込み
画像の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
前
述
の
DeepLearning
の
処
理
の
⼿
順
CNN
を
使
う
場
合
の
処
理
の
⼿
順
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
画像の読み込み
必要なモジュールの読み込み
画像の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
def conv_feat_2_image(feats):
data = np.ndarray((len(feats), 1, 28, 28),
dtype=np.float32)
for i, f in enumerate(feats):
data[i]=f.reshape(28,28)
return data
train_images = conv_feat_2_image(train_features)
test_images = conv_feat_2_image(test_features)
学習データ,評価データを画像列に変換する
画像列に変換する関数
CNNへの⼊⼒は2次元画像
[特徴量]
[特徴量]
…
[特徴量]
画像
画像画像画像
枚数xチャンネル数
x⾼さx幅
枚数x次元数
CHAINERでの実装
層のパラメータ
必要なモジュールの読み込み
画像の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
class MyNetwork(Chain):
def __init__(self):
super(MyNetwork, self).__init__(
conv1=F.Convolution2D(1, 16, 3),
conv2=F.Convolution2D(16, 64, 3),
l1=F.Linear(576, 200),
l2=F.Linear(200, 100),
l3=F.Linear(100, 10))
self.is_train = True
Convolution層が2つ,
全結合層が3つ
モノクロ1→16チャンネル
16→64チャンネル
16チャンネル1チャンネル
Convolution
3x3のフィルタ
16種類のフィルタ
Convolution層を追加する
伝播のさせ⽅
必要なモジュールの読み込み
画像の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
Pooling層を追加する
def __call__(self, x):
h1 = F.max_pooling_2d(F.relu(self.conv1(x)), 3)
h2 = F.max_pooling_2d(F.relu(self.conv2(h1)), 3)
h3 = F.dropout(F.relu(self.l1(h2)), train=self.is_train)
h4 = F.dropout(F.relu(self.l2(h3)), train=self.is_train)
p = self.l3(h4)
return p
16チャンネル 16チャンネル
Pooling
3x3
3x3の領域内で最⼤値を返す
特徴抽出+識別器としてのDeep Learning
lConvolution+Poolingのユニット数の計算
Ø画像サイズの変化
²フィルタサイズとPoolingの移動幅によって決まる
Ø全結合層のユニット数
²最後のPooling後の画像サイズxチャンネル数
16チャンネル
1チャンネル
Convolution
Pooling
64チャンネル
16チャンネル
Convolution
Pooling
64チャンネル
28x28 26x26 9x9 8x8 3x3
3x3x64=576
KERASでの実装
ネットワーク構築
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
kerasではネットワーク構築は⼀気にやる
model.add(Convolution2D(32, 3, 3, border_mode='same',
input_shape=(1, 28, 28)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(3, 3),
border_mode='same'))
model.add(Convolution2D(64, 3, 3, border_mode='same'))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(3, 3),
border_mode='same'))
model.add(Flatten())
model.add(Dense(200))
model.add(Activation("relu"))
model.add(Dropout(0.5))
⼀番最初の層の
⼊⼒形状は指定する
以下はNeural Networkと同様
1次元にのばす
MINST databaseでの分類結果
分類器 認識率 学習時間(秒) 評価時間(秒)
線形SVM 0.864 130.0 0.032
K-Nearest Neighbor 0.970 20.70 702.9
AdaBoost 0.719 64.74 0.519
Random Forest 0.946 1.026 0.152
NN (GPU, Chainer) 0.970 1018(cpu:1906) 0.063
NN (GPU, Keras) 0.831 108.2 0.653
CNN (GPU) 0.983 1509(cpu: 36324) 0.049
CNN (GPU, Keras) 0.992 350.0 1.260
PCのスペック
CPU: Intel® Core™ i7-3970K 3.50GHz
GPU: GeForce GTX 1080
※Deep	Learningの認識率はミニバッチの順番等にもよるので比較するのは困難
学習済みモデルの利⽤
lいちからネットワークを学習させるのは困難
Ø別データセットで学習させたものを流⽤
²ネットワークの出⼒を"付け替えて"追加学習
Ømodel zooでは多数の学習済みモデルが公開
²https://github.com/BVLC/caffe/wiki/Model-Zoo
²様々なモデル
– AlexNet, GoogLeNet, VGG, etc.
²様々なデータセット
– ImageNet, Places205, etc.
学習済みモデルの読み込みと利⽤
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
model	=	caffe.CaffeFunction("pretrained.caffemodel")
model.to_gpu()
ChainerはCaffeでの学習済みモデルを
容易に読み込むことが出来る
読み込んだモデルは,関数として利⽤可
result	=	model(inputs={"data":	 x},	outputs=["fc8"],	train=False)
入力を,どの層に
入れるか
どの層から出力を
とるか
この場合,result[0]に fc8 の出⼒を得る
そのまま出⼒すれば,元のネットワークの出⼒が出来る
学習済みモデルの読み込みと利⽤
必要なモジュールの読み込み
特徴量の読み込み
層のパラメータ
伝播のさせ方
学習のさせ方
ネットワークの学習
評価
結果の集計・出力
caffeのモデルを関数の⼀部として利⽤
class	BinClassNet(Chain):
def __init__(self,	caffemodel):
super(BinClassNet,	self).__init__(
base	=	caffemodel,
hlayer =	L.Linear(4096,	2000),
olayer =	L.Linear(2000,	2))
self.train =	True
def __call__(self,	x):
h1	=	self.base(inputs={"data":	x},	outputs=["fc7"],
train=self.train)
h2	=	F.relu(self.hlayer(h1[0]))
h3	=	self.olayer(h2)
return	h3
7層目から出力
参考⽂献・Webページ
l今回のサンプルコード
Øhttps://github.com/yasutomo57jp/deeplearning_sa
mples
lSSII2016の時の講演のサンプルコード
Ø https://github.com/yasutomo57jp/ssii2016_tutorial
l電⼦情報通信学会総合⼤会 2016 企画セッション
「パターン認識・メディア理解」
必須ソフトウェアライブラリ ⼿とり⾜とりガイド
Øhttp://www.slideshare.net/yasutomo57jp/pythonde
ep-learning-60544586
62
Pythonを勉強するための資料集
l Python Scientific Lecture Notes
Ø ⽇本語訳: http://turbare.net/transl/scipy-lecture-notes/index.html
Ø ⾮常におすすめ
Ø numpy/scipyから画像処理,3D可視化まで幅広く学べる
l @shima__shimaさん
Ø 機械学習の Python との出会い
² numpyと簡単な機械学習への利⽤
l @payashimさん
Ø PyConJP 2014での「OpenCVのpythonインターフェース⼊⾨」の資料
² Pythonユーザ向けの,OpenCVを使った画像処理解説
まとめ
lPythonで機械学習
ØScikit-learnで様々な分類器を切り替えて利⽤
lDeep Learningツールの紹介
ØChainer
²⽐較的分かりやすい記述⽅法
²caffeの学習済みモデルを読み込める
ØKeras
²記述⽅法が直感的
²学習⼿順が容易
– 最近はChainerも学習⼿順を簡単に書けるようになっています
1 of 81

Recommended

XAI (説明可能なAI) の必要性 by
XAI (説明可能なAI) の必要性XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性西岡 賢一郎
1.1K views20 slides
ブレインパッドにおける機械学習プロジェクトの進め方 by
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
14.5K views83 slides
因果探索: 基本から最近の発展までを概説 by
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
15.3K views47 slides
機械学習モデルの判断根拠の説明(Ver.2) by
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)Satoshi Hara
47.9K views81 slides
BlackBox モデルの説明性・解釈性技術の実装 by
BlackBox モデルの説明性・解釈性技術の実装BlackBox モデルの説明性・解釈性技術の実装
BlackBox モデルの説明性・解釈性技術の実装Deep Learning Lab(ディープラーニング・ラボ)
22.5K views96 slides
グラフニューラルネットワークとグラフ組合せ問題 by
グラフニューラルネットワークとグラフ組合せ問題グラフニューラルネットワークとグラフ組合せ問題
グラフニューラルネットワークとグラフ組合せ問題joisino
4.5K views54 slides

More Related Content

What's hot

金融予測アルゴリズムのより良い評価手法について by
金融予測アルゴリズムのより良い評価手法について金融予測アルゴリズムのより良い評価手法について
金融予測アルゴリズムのより良い評価手法についてKentaro Imajo
7.5K views35 slides
機械学習で泣かないためのコード設計 2018 by
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018Takahiro Kubo
28.9K views52 slides
Hyperoptとその周辺について by
Hyperoptとその周辺についてHyperoptとその周辺について
Hyperoptとその周辺についてKeisuke Hosaka
12.6K views54 slides
自己教師学習(Self-Supervised Learning) by
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)cvpaper. challenge
12.8K views177 slides
2014 3 13(テンソル分解の基礎) by
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)Tatsuya Yokota
40.5K views44 slides
カルマンフィルタ入門 by
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門Yasunori Nihei
5.1K views37 slides

What's hot(20)

金融予測アルゴリズムのより良い評価手法について by Kentaro Imajo
金融予測アルゴリズムのより良い評価手法について金融予測アルゴリズムのより良い評価手法について
金融予測アルゴリズムのより良い評価手法について
Kentaro Imajo7.5K views
機械学習で泣かないためのコード設計 2018 by Takahiro Kubo
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
Takahiro Kubo28.9K views
Hyperoptとその周辺について by Keisuke Hosaka
Hyperoptとその周辺についてHyperoptとその周辺について
Hyperoptとその周辺について
Keisuke Hosaka12.6K views
自己教師学習(Self-Supervised Learning) by cvpaper. challenge
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
cvpaper. challenge12.8K views
2014 3 13(テンソル分解の基礎) by Tatsuya Yokota
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
Tatsuya Yokota40.5K views
カルマンフィルタ入門 by Yasunori Nihei
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門
Yasunori Nihei5.1K views
機械学習によるデータ分析まわりのお話 by Ryota Kamoshida
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida568.1K views
【論文紹介】How Powerful are Graph Neural Networks? by Masanao Ochi
【論文紹介】How Powerful are Graph Neural Networks?【論文紹介】How Powerful are Graph Neural Networks?
【論文紹介】How Powerful are Graph Neural Networks?
Masanao Ochi3.9K views
数式を使わずイメージで理解するEMアルゴリズム by 裕樹 奥田
数式を使わずイメージで理解するEMアルゴリズム数式を使わずイメージで理解するEMアルゴリズム
数式を使わずイメージで理解するEMアルゴリズム
裕樹 奥田70.6K views
Pythonではじめるロケーションデータ解析 by Hiroaki Sengoku
Pythonではじめるロケーションデータ解析Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析
Hiroaki Sengoku6K views
ナレッジグラフ入門 by KnowledgeGraph
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph6.4K views
Jubatus Casual Talks #2 異常検知入門 by Shohei Hido
Jubatus Casual Talks #2 異常検知入門Jubatus Casual Talks #2 異常検知入門
Jubatus Casual Talks #2 異常検知入門
Shohei Hido35.4K views
機械学習モデルのハイパパラメータ最適化 by gree_tech
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
gree_tech27.9K views
強化学習と逆強化学習を組み合わせた模倣学習 by Eiji Uchibe
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
Eiji Uchibe25.3K views
機械学習チュートリアル@Jubatus Casual Talks by Yuya Unno
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno735.9K views
(修正)機械学習デザインパターン(ML Design Patterns)の解説 by Hironori Washizaki
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
Hironori Washizaki10.9K views
為替と株の予測の話 by Kentaro Imajo
為替と株の予測の話為替と株の予測の話
為替と株の予測の話
Kentaro Imajo48.2K views
機械学習で泣かないためのコード設計 by Takahiro Kubo
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
Takahiro Kubo62.2K views
海鳥の経路予測のための逆強化学習 by Tsubasa Hirakawa
海鳥の経路予測のための逆強化学習海鳥の経路予測のための逆強化学習
海鳥の経路予測のための逆強化学習
Tsubasa Hirakawa2.7K views

Viewers also liked

Pythonとdeep learningで手書き文字認識 by
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Ken Morishita
197.5K views59 slides
scikit-learnを用いた機械学習チュートリアル by
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
212.9K views37 slides
一般向けのDeep Learning by
一般向けのDeep Learning一般向けのDeep Learning
一般向けのDeep LearningPreferred Networks
487.5K views28 slides
サービスサイエンス 〜サービスイノベーションの創出に向けて〜 by
サービスサイエンス 〜サービスイノベーションの創出に向けて〜サービスサイエンス 〜サービスイノベーションの創出に向けて〜
サービスサイエンス 〜サービスイノベーションの創出に向けて〜Yuriko Sawatani
3.7K views39 slides
言語と画像の表現学習 by
言語と画像の表現学習言語と画像の表現学習
言語と画像の表現学習Yuki Noguchi
22.3K views117 slides
単語・句の分散表現の学習 by
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習Naoaki Okazaki
17.8K views60 slides

Viewers also liked(20)

Pythonとdeep learningで手書き文字認識 by Ken Morishita
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
Ken Morishita197.5K views
scikit-learnを用いた機械学習チュートリアル by 敦志 金谷
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷212.9K views
サービスサイエンス 〜サービスイノベーションの創出に向けて〜 by Yuriko Sawatani
サービスサイエンス 〜サービスイノベーションの創出に向けて〜サービスサイエンス 〜サービスイノベーションの創出に向けて〜
サービスサイエンス 〜サービスイノベーションの創出に向けて〜
Yuriko Sawatani3.7K views
言語と画像の表現学習 by Yuki Noguchi
言語と画像の表現学習言語と画像の表現学習
言語と画像の表現学習
Yuki Noguchi22.3K views
単語・句の分散表現の学習 by Naoaki Okazaki
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
Naoaki Okazaki17.8K views
Lecture 29 Convolutional Neural Networks - Computer Vision Spring2015 by Jia-Bin Huang
Lecture 29 Convolutional Neural Networks -  Computer Vision Spring2015Lecture 29 Convolutional Neural Networks -  Computer Vision Spring2015
Lecture 29 Convolutional Neural Networks - Computer Vision Spring2015
Jia-Bin Huang16.5K views
DeepPose: Human Pose Estimation via Deep Neural Networks by Shunta Saito
DeepPose: Human Pose Estimation via Deep Neural NetworksDeepPose: Human Pose Estimation via Deep Neural Networks
DeepPose: Human Pose Estimation via Deep Neural Networks
Shunta Saito14.6K views
ディープラーニングで株価予測をやってみた by 卓也 安東
ディープラーニングで株価予測をやってみたディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみた
卓也 安東35.1K views
アルゴリズム取引のシステムを開発・運用してみて分かったこと by Satoshi KOBAYASHI
アルゴリズム取引のシステムを開発・運用してみて分かったことアルゴリズム取引のシステムを開発・運用してみて分かったこと
アルゴリズム取引のシステムを開発・運用してみて分かったこと
Satoshi KOBAYASHI79K views
Deep Residual Learning (ILSVRC2015 winner) by Hirokatsu Kataoka
Deep Residual Learning (ILSVRC2015 winner)Deep Residual Learning (ILSVRC2015 winner)
Deep Residual Learning (ILSVRC2015 winner)
Hirokatsu Kataoka16.1K views
Pythonによる機械学習入門〜基礎からDeep Learningまで〜 by Yasutomo Kawanishi
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Yasutomo Kawanishi58.9K views
OpenCVをAndroidで動かしてみた by 徹 上野山
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
徹 上野山139.6K views
最新業界事情から見るデータサイエンティストの「実像」 by Takashi J OZAKI
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」
Takashi J OZAKI139.1K views
Chainerチュートリアル -v1.5向け- ViEW2015 by Ryosuke Okuta
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
Ryosuke Okuta114.6K views
機械学習概論 講義テキスト by Etsuji Nakai
機械学習概論 講義テキスト機械学習概論 講義テキスト
機械学習概論 講義テキスト
Etsuji Nakai133.5K views
Introduction to Chainer by Shunta Saito
Introduction to ChainerIntroduction to Chainer
Introduction to Chainer
Shunta Saito167.8K views
Pythonによる機械学習入門 ~SVMからDeep Learningまで~ by Yasutomo Kawanishi
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Yasutomo Kawanishi94.7K views

Similar to Pythonによる機械学習入門 ~Deep Learningに挑戦~

エンジニアのための機械学習の基礎 by
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎Daiyu Hatakeyama
7.9K views104 slides
第1回 Jubatusハンズオン by
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンJubatusOfficial
8K views39 slides
第1回 Jubatusハンズオン by
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンYuya Unno
7.9K views39 slides
はじめての人のためのDeep Learning by
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
4.9K views63 slides
2013.07.15 はじパタlt scikit-learnで始める機械学習 by
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
23.4K views20 slides
JAWSDAYS 2014 ACEに聞け! EMR編 by
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
3.2K views68 slides

Similar to Pythonによる機械学習入門 ~Deep Learningに挑戦~(20)

エンジニアのための機械学習の基礎 by Daiyu Hatakeyama
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎
Daiyu Hatakeyama7.9K views
第1回 Jubatusハンズオン by Yuya Unno
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
Yuya Unno7.9K views
はじめての人のためのDeep Learning by Tadaichiro Nakano
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
Tadaichiro Nakano4.9K views
2013.07.15 はじパタlt scikit-learnで始める機械学習 by Motoya Wakiyama
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
Motoya Wakiyama23.4K views
JAWSDAYS 2014 ACEに聞け! EMR編 by 陽平 山口
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口3.2K views
Elasticsearchと機械学習を実際に連携させる by nobu_k
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
nobu_k30K views
画像認識で物を見分ける by Kazuaki Tanida
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分ける
Kazuaki Tanida3.2K views
[第2版] Python機械学習プログラミング 第3章(~4節) by Haruki Eguchi
[第2版] Python機械学習プログラミング 第3章(~4節)[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第3章(~4節)
Haruki Eguchi482 views
DB TechShowcase Tokyo - Intelligent Data Platform by Daiyu Hatakeyama
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data Platform
Daiyu Hatakeyama676 views
TensorFlowをもう少し詳しく入門 by tak9029
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
tak902918.5K views
Jubakit の紹介 by kmaehashi
Jubakit の紹介Jubakit の紹介
Jubakit の紹介
kmaehashi13.6K views
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門 by Daiyu Hatakeyama
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Daiyu Hatakeyama530 views
科学技術計算関連Pythonパッケージの概要 by Toshihiro Kamishima
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
Toshihiro Kamishima10.8K views
Azure Machine Learning Services 概要 - 2019年3月版 by Daiyu Hatakeyama
Azure Machine Learning Services 概要 - 2019年3月版Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版
Daiyu Hatakeyama2.2K views
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi... by y-uti
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
y-uti1.7K views
Jubatusでマルウェア分類 by Shuzo Kashihara
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
Shuzo Kashihara5.4K views
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2 by Teruyuki Sakaue
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2
Teruyuki Sakaue6.3K views

More from Yasutomo Kawanishi

TransPose: Towards Explainable Human Pose Estimation by Transformer by
TransPose: Towards Explainable Human Pose Estimation by TransformerTransPose: Towards Explainable Human Pose Estimation by Transformer
TransPose: Towards Explainable Human Pose Estimation by TransformerYasutomo Kawanishi
699 views18 slides
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B... by
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...Yasutomo Kawanishi
1.2K views20 slides
サーベイ論文:画像からの歩行者属性認識 by
サーベイ論文:画像からの歩行者属性認識サーベイ論文:画像からの歩行者属性認識
サーベイ論文:画像からの歩行者属性認識Yasutomo Kawanishi
9.5K views64 slides
Pythonによる画像処理について by
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理についてYasutomo Kawanishi
13.4K views17 slides
ACCV2014参加報告 by
ACCV2014参加報告ACCV2014参加報告
ACCV2014参加報告Yasutomo Kawanishi
2.4K views27 slides
背景モデリングに関する研究など by
背景モデリングに関する研究など背景モデリングに関する研究など
背景モデリングに関する研究などYasutomo Kawanishi
5.6K views76 slides

More from Yasutomo Kawanishi(10)

TransPose: Towards Explainable Human Pose Estimation by Transformer by Yasutomo Kawanishi
TransPose: Towards Explainable Human Pose Estimation by TransformerTransPose: Towards Explainable Human Pose Estimation by Transformer
TransPose: Towards Explainable Human Pose Estimation by Transformer
Yasutomo Kawanishi699 views
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B... by Yasutomo Kawanishi
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
Yasutomo Kawanishi1.2K views
サーベイ論文:画像からの歩行者属性認識 by Yasutomo Kawanishi
サーベイ論文:画像からの歩行者属性認識サーベイ論文:画像からの歩行者属性認識
サーベイ論文:画像からの歩行者属性認識
Yasutomo Kawanishi9.5K views
Pythonによる画像処理について by Yasutomo Kawanishi
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi13.4K views
背景モデリングに関する研究など by Yasutomo Kawanishi
背景モデリングに関する研究など背景モデリングに関する研究など
背景モデリングに関する研究など
Yasutomo Kawanishi5.6K views
第17回関西CVPRML勉強会 (一般物体認識) 1,2節 by Yasutomo Kawanishi
第17回関西CVPRML勉強会 (一般物体認識) 1,2節第17回関西CVPRML勉強会 (一般物体認識) 1,2節
第17回関西CVPRML勉強会 (一般物体認識) 1,2節
Yasutomo Kawanishi1.7K views
SNSでひろがるプライバシ制御センシング by Yasutomo Kawanishi
SNSでひろがるプライバシ制御センシングSNSでひろがるプライバシ制御センシング
SNSでひろがるプライバシ制御センシング
Yasutomo Kawanishi989 views

Recently uploaded

JJUG CCC.pptx by
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 views14 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
129 views42 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
353 views13 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
73 views26 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
71 views29 slides

Recently uploaded(11)

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views

Pythonによる機械学習入門 ~Deep Learningに挑戦~