Deep learning

Post on 25-May-2015

115.286 views 1 download

description

機械学習×プログラミング勉強会 vol.2 http://atnd.org/events/33182 で発表した資料

Transcript of Deep learning

2012/11/09

Deep Learning

株式会社ウサギィ五木田 和也

12年11月9日金曜日

自己紹介

✤ 株式会社ウサギィのエンジニア

✤ 機械学習、自然言語処理、組合せ最適化

✤ iPhone, Android, Rails

✤ なぜか備品管理やデザインもやっている

✤ Twitter ID: @kazoo04

12年11月9日金曜日

今日の話

✤ Deep Learning (初級編)

✤ わたしが知ってる範囲で(まだよくわかってないです><)

✤ 普及して欲しい

✤ 興味あったけど調べるの面倒くさくて諦めた人向け

12年11月9日金曜日

Deep Learning とは

✤ (私の周りだと)注目されはじめたのは画像認識

✤ Googleのネコ認識 (Youtube から学習)

✤ ILSVRC 2012 etc

12年11月9日金曜日

General Object Recognition

✤ 制約のない実世界の画像に対して、その中に含まれる物体を一般的な名称で認識すること。

“Eiffel Tower”“Camel”12年11月9日金曜日

それまでの一般物体認識

12年11月9日金曜日

ところが…

12年11月9日金曜日

Deep Learning

12年11月9日金曜日

Deep Learning

12年11月9日金曜日

それまでの画像認識(再掲)

12年11月9日金曜日

Deep Learning (イメージ)

12年11月9日金曜日

それまでの一般物体認識

( ^o^) < 学習器を改良していこう!

( ˘⊖˘) 。o(待てよ、これからは特徴抽出に力を入れるべきだな)

| ILSVRC 2012 | ┗(☋` )┓三

( Hinton )☛ Deep Learning使ったら生の画像だけで1位になれたぞ

▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂ うわあああああああああああ

12年11月9日金曜日

Deep Learning …の前に

✤ Deep Learningの厳密な定義がよくわからん

✤ Deep Learningは特定のアルゴリズムというよりは考え方/アプローチに近いので、実装するときはいろいろな方法があります(?)

✤ 今回は、Hinton(2012)の、”Deep Boltzmann Machine” ベース。

12年11月9日金曜日

Deep Learning の概要

✤ 事前にうまく特徴抽出してくれる教師なしニューラルネットワークをたくさん繋げて多層にしたもの

✤ 事前に用意してから→Pre-training

✤ うまく特徴抽出→ Auto-encoder

✤ 教師なしニューラルネット → Restricted Boltzmann Machine (RBM)

✤ 多層にしたもの → Deep Boltzmann Machines (多層BM, DBM)

12年11月9日金曜日

Backpropagation

✤ 3種類の層からなるニューラルネットワーク

これだけでも任意の非線形関数を近似する能力がある

(ノード数が十分あれば)

12年11月9日金曜日

Backpropagation(多層)

✤ 多層にしたら表現能力が増えそうな感じがする(後述)

✤ 下(入力層に近い)層で抽出した特徴を、さらに重み付けしていく

12年11月9日金曜日

Richard Socher, Yoshua Bengio and Chris ManningDeep Learning for NLP (without Magic), ACL 2012

12年11月9日金曜日

Richard Socher, Yoshua Bengio and Chris ManningDeep Learning for NLP (without Magic), ACL 2012

Layer3

Layer2

Layer1

12年11月9日金曜日

Backpropagation(多層)

✤ これはうまくいかない

✤ 時間がかかる(効率が悪い)

✤ Vanishing Gradient Problem

✤ 浅い層に行くほど誤差信号がうまく伝播しない

✤ 過学習や局所解に陥るのとはまた別の問題

12年11月9日金曜日

イメージ

Restricted Boltzmann Machine (RBM)をたくさん繋げたものがDeep Boltzmann Machines (DBM)

DBM

RBM RBM RBM

12年11月9日金曜日

Restricted Boltzmann Machine

✤ 制約付きボルツマンマシン

✤ こいつを Auto encoder として使う(他のアルゴリズムでも良いが)

Restricted Boltzmann MachineBoltzmann Machine

✤ Contrastive Divergence 法 で高速に計算できる

12年11月9日金曜日

RBMの学習

同じ結果になるように、繰り返し調整していく

あと、Hidden層がなるべく sparse になるように制約を入れる

12年11月9日金曜日

RBMはなにがしたいのか?

✤ 元の入力を圧縮して、逆変換した時の誤差が最小になるようにする

✤ その結果、入力情報をもっともよく表現できるような関数が得られる

✤ 画像ならエッジ(とそれをさらに組み合わせたパターン)

✤ PCAに似ているけど、より自由度が高い

12年11月9日金曜日

Deep Boltzmann Machines

✤ まずは1層だけ(普通のRBM)を学習する

✤ 簡易のため、RBMを層状に示してあります

1段目

各層のノードの数は問題による(研究者の勘とチューニング)

12年11月9日金曜日

Deep Boltzmann Machines

✤ 1層ずつRBMを追加していく

学習済みの層は弄らないで新しい層だけ調整する

2段目

3段目

1層目の出力を入力にして2層目を学習する

12年11月9日金曜日

Deep Boltzmann Machines

✤ 1層ずつ確定させていく

✤ 新しく追加した層以外は変更しない

3段目

4段目

5段目

✤ Super Vision での例

✤ 学習データ15万枚 (1000カテゴリ)

✤ 65万ニューロン(5層)

12年11月9日金曜日

Deep Learningでの教師あり学習

✤ DBMが出来上がったあとにやる (Fine-training)

✤ いろいろある

✤ Backpropagationで微調整する

✤ Deep Learning の出力を入力にしてSVM

12年11月9日金曜日

Deep Learningのポイント

1. Pre-training

教師あり学習(Fine-training)の前に、予め教師なし学習をする

2. Auto-encoder

Pre-training のとき、少ない変数で入力情報をうまく説明できるような関数を学習する。イメージとしては主成分分析見たいな感じ。RBMとか使う。

3. Deep Boltzmann Machines (DBM)

Pre-training した層(RBM)を何段も繋げていって、多層ニューラルネットワークを構築する

12年11月9日金曜日

デメリット

✤ 決めなければならないパラメータが多い

✤ 中間層の数

✤ 学習の繰り返し回数

✤ RBMの層をどれくらい繋げるか

✤ RBMのパラメータ

✤ 遅い(ネットワークがデカイので)

12年11月9日金曜日

まとめ

✤ Deep Leaningすごいっていうのを伝えたかった

✤ 多層ニューラルネットの問題点をうまく回避している

✤ これから色々なところで使われることになりそう

✤ 特徴量の設計が難しい問題とか?

✤ 詳しくはWebで

12年11月9日金曜日