SlideShare una empresa de Scribd logo
1 de 81
Descargar para leer sin conexión
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も学習⼿順を簡単に書けるようになっています

Más contenido relacionado

La actualidad más candente

【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...ARISE analytics
 
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)Youichiro Miyake
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜諒介 荒木
 
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチMIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチHironobu Fujiyoshi
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Yoshitaka Ushiku
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -諒介 荒木
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAGIRobots
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量takaya imai
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況Deep Learning JP
 
スマートシティへのデジタルゲームAIの応用
スマートシティへのデジタルゲームAIの応用スマートシティへのデジタルゲームAIの応用
スマートシティへのデジタルゲームAIの応用Youichiro Miyake
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術Shinnosuke Takamichi
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured PredictionDeep Learning JP
 
機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPython機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPythonKimikazu Kato
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement LearningPreferred Networks
 
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied ControlDeep Learning JP
 
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)Shota Imai
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門Takuji Tahara
 

La actualidad más candente (20)

異常検知
異常検知異常検知
異常検知
 
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
【論文読み会】Pyraformer_Low-Complexity Pyramidal Attention for Long-Range Time Seri...
 
ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)ゲームAI製作のためのワークショップ(III)
ゲームAI製作のためのワークショップ(III)
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
 
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチMIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
 
[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況[DL輪読会]画像を使ったSim2Realの現況
[DL輪読会]画像を使ったSim2Realの現況
 
スマートシティへのデジタルゲームAIの応用
スマートシティへのデジタルゲームAIの応用スマートシティへのデジタルゲームAIの応用
スマートシティへのデジタルゲームAIの応用
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 
機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPython機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPython
 
MICの解説
MICの解説MICの解説
MICの解説
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
 
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
強化学習エージェントの内発的動機付けによる探索とその応用(第4回 統計・機械学習若手シンポジウム 招待公演)
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 

Destacado

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

Destacado (20)

機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
一般向けのDeep Learning
一般向けのDeep Learning一般向けのDeep Learning
一般向けのDeep Learning
 
サービスサイエンス 〜サービスイノベーションの創出に向けて〜
サービスサイエンス 〜サービスイノベーションの創出に向けて〜サービスサイエンス 〜サービスイノベーションの創出に向けて〜
サービスサイエンス 〜サービスイノベーションの創出に向けて〜
 
言語と画像の表現学習
言語と画像の表現学習言語と画像の表現学習
言語と画像の表現学習
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
 
Lecture 29 Convolutional Neural Networks - Computer Vision Spring2015
Lecture 29 Convolutional Neural Networks -  Computer Vision Spring2015Lecture 29 Convolutional Neural Networks -  Computer Vision Spring2015
Lecture 29 Convolutional Neural Networks - Computer Vision Spring2015
 
DeepPose: Human Pose Estimation via Deep Neural Networks
DeepPose: Human Pose Estimation via Deep Neural NetworksDeepPose: Human Pose Estimation via Deep Neural Networks
DeepPose: Human Pose Estimation via Deep Neural Networks
 
ディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみたディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみた
 
アルゴリズム取引のシステムを開発・運用してみて分かったこと
アルゴリズム取引のシステムを開発・運用してみて分かったことアルゴリズム取引のシステムを開発・運用してみて分かったこと
アルゴリズム取引のシステムを開発・運用してみて分かったこと
 
Deep Residual Learning (ILSVRC2015 winner)
Deep Residual Learning (ILSVRC2015 winner)Deep Residual Learning (ILSVRC2015 winner)
Deep Residual Learning (ILSVRC2015 winner)
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
OpenCVの基礎
OpenCVの基礎OpenCVの基礎
OpenCVの基礎
 
最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」最新業界事情から見るデータサイエンティストの「実像」
最新業界事情から見るデータサイエンティストの「実像」
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
 
機械学習概論 講義テキスト
機械学習概論 講義テキスト機械学習概論 講義テキスト
機械学習概論 講義テキスト
 
Introduction to Chainer
Introduction to ChainerIntroduction to Chainer
Introduction to Chainer
 

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

Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Yasutomo Kawanishi
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎Daiyu Hatakeyama
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンYuya Unno
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 JubatusハンズオンJubatusOfficial
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep LearningTadaichiro Nakano
 
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
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるnobu_k
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分けるKazuaki Tanida
 
[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第3章(~4節)[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第3章(~4節)Haruki Eguchi
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDaiyu Hatakeyama
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門tak9029
 
Jubakit の紹介
Jubakit の紹介Jubakit の紹介
Jubakit の紹介kmaehashi
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
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 Hatakeyama
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版Daiyu Hatakeyama
 
論文紹介 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...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...y-uti
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類Shuzo Kashihara
 

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

Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
 
Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分ける
 
[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第3章(~4節)[第2版] Python機械学習プログラミング 第3章(~4節)
[第2版] Python機械学習プログラミング 第3章(~4節)
 
DB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data PlatformDB TechShowcase Tokyo - Intelligent Data Platform
DB TechShowcase Tokyo - Intelligent Data Platform
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
 
Jubakitの紹介
Jubakitの紹介Jubakitの紹介
Jubakitの紹介
 
Jubakit の紹介
Jubakit の紹介Jubakit の紹介
Jubakit の紹介
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版Azure Machine Learning Services 概要 - 2019年3月版
Azure Machine Learning Services 概要 - 2019年3月版
 
論文紹介 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...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
 

Más de Yasutomo Kawanishi

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

Más de Yasutomo Kawanishi (10)

TransPose: Towards Explainable Human Pose Estimation by Transformer
TransPose: Towards Explainable Human Pose Estimation by TransformerTransPose: Towards Explainable Human Pose Estimation by Transformer
TransPose: Towards Explainable Human Pose Estimation by Transformer
 
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
全日本コンピュータビジョン勉強会:Disentangling and Unifying Graph Convolutions for Skeleton-B...
 
サーベイ論文:画像からの歩行者属性認識
サーベイ論文:画像からの歩行者属性認識サーベイ論文:画像からの歩行者属性認識
サーベイ論文:画像からの歩行者属性認識
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
 
ACCV2014参加報告
ACCV2014参加報告ACCV2014参加報告
ACCV2014参加報告
 
背景モデリングに関する研究など
背景モデリングに関する研究など背景モデリングに関する研究など
背景モデリングに関する研究など
 
画像処理でのPythonの利用
画像処理でのPythonの利用画像処理でのPythonの利用
画像処理でのPythonの利用
 
第17回関西CVPRML勉強会 (一般物体認識) 1,2節
第17回関西CVPRML勉強会 (一般物体認識) 1,2節第17回関西CVPRML勉強会 (一般物体認識) 1,2節
第17回関西CVPRML勉強会 (一般物体認識) 1,2節
 
SNSでひろがるプライバシ制御センシング
SNSでひろがるプライバシ制御センシングSNSでひろがるプライバシ制御センシング
SNSでひろがるプライバシ制御センシング
 
SHOGUN使ってみました
SHOGUN使ってみましたSHOGUN使ってみました
SHOGUN使ってみました
 

Último

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 

Último (7)

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 

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