SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
Deep Learning を実装する

http://deeplearning.net/tutorial/


    松尾研 修士1年 飯塚修平"
    @Deep Learning 輪講会
目次
•  Deep Learning とは"
  –  機械学習について"
  –  従来の NN とのちがい"
  –  Deep Learning のブレイクスルー"
•  dA (Denoising Autoencoders) をうごかす"
  –    数理モデルの解説"
  –    Python で実装する前準備"
  –    コードレビュー"
  –    実行結果"
•  RBM (Restricted Boltzmann Machines) をうごかす"
  –  数理モデルの解説"
  –  実行結果"
•  まとめ
DEEP LEARNING とは
Deep Learning とは
•  入力信号からより抽象的な概念を学ぶ・特徴を抽出する
   機械学習の手法の集合です

   "
“ニューラルネットとどう違うの?”!
•  ニューラルネットを多層にしたんです

   "
“従来のニューラルネットワークと何が違うの?”!
•  ひとつひとつのレイヤー間でパラメタの調整(すなわち
   学習)を行うところが特徴なんです
NN
                    従来のニューラルネットワーク




     •  層の数が多いほど表現力が高くなるが、パラメータの更
        新が難しくなる (Vanishing Gradient Problem)"
     •  しかも局所解・過学習に陥りやすい"
     •  しかも遅い
Pythonと Deep	
  Learningで 手書き文字認識 http://www.slideshare.net/mokemokechicken/pythondeep-learning"
名古屋工業大学岩田彰研究室 ニューラルネット入門 http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/bp4.html
メージ
                                    そこで Deep Learning
                       RBM                                   RBM          RBM




                                                        DBM
     •  入力データから得た隠れ層をまた入力データにして・・・を
ricted 繰り返す"
        Boltzmann Machine (RBM)をたくさん繋げたものが
     •  一層ずつ確定させていく
pDeep Learning http://www.slideshare.net/kazoo04/deep-learning-15097274
  Boltzmann Machines (DBM)
Autoencoder
•  層に相当するモジュール"
   y = f (x), z = g(y), ||x z||2
•                    となるように学習"   min
 –  すなわち、入力と出力の誤差が最小になるようパラメタを調整する"
 –  すると、入力 x を適切な表現 y に写像する autoencoder が得られる"


      input   encode            decode output
                   representation

  層
        x       f       y       g        z


                      error
dA をうごかす

(Denoising Autoencoder)
Denoising Autoencoder

     •  下記の式で表されるエンコーダ、デコーダ、誤差を使う"
     •  s はシグモイド関数"
     •  重み W, W’ とバイアス b, b’ を学習する"
         •  Tied Weights: W^T = W’ とすることもある"

       encoder  y = s(Wx + b), z = s(W x + b )
                              y = s(Wx + b), z = s(W x + b )
 s(Wx + b), d = s(W x + b )
       decoder z
                              d
H (x, z) =error LH (x, z) =zk + [xk logxk ) log(1xk ) zk )]
                  [xk log        (1 zk + (1           log(1 zk )]
k log zk + (1k=1 k ) log(1 k=1 k )]
                 x              z
                        input   encode            decode   output
                                     representation



                         x        f        y       g         z
Python で実装する前準備




•  Theno を入れましょう"
  –  導関数を解析的に導出してくれる(自動微分という)"
     •  近似的に微分係数を算出する数値微分とは異なる"
     •  導関数を導関数として扱える!"
  –  GPU に計算を行わせることも可能"
  –  $ sudo pip install Theano"
>>> # Theano のかんたんな使い方	
>>> # まず、ふつうの演算	
...	
>>> import theano	
>>> import theano.tensor as T	
>>> x = T.dscalar(“x”) # x という名前のスカラー変数	
>>> y = x**2 + 4*x # 式を表現	
>>> f = theano.function([x], y) # 関数の生成。[]で囲まれた変数が関数の
引数となる	
>>> f(0)	
array(0.0)	
>>> f(1)	
array(5.0)	
>>>	
>>> # 次に、自動微分をさせてみる	
...	
>>> z = T.grad(y, x) # y を微分した式を z として表現	
>>> f_prime = theano.function([x], z)	
>>> f_prime(0)	
array(4.0)	
>>> f_prime(1)	
array(6.0)
Getting Started

   Deep Learning"
   http://deeplearning.net/tutorial/gettingstarted.html	
   	
   サンプルコードがあります" 今回はこれをもとに説明します




$ git clone git://github.com/lisa-lab/DeepLearningTutorials.git
擬似コード
class dA (object):	
   		
   	def __init__(self, input, n_visible, n_hidden):	
   	   	self.input = input # 入力データ	
   	   	self.n_visible = n_visible # 可視層ノード数	
   	   	self.n_hidden = n_hidden # 隠れ層ノード数	
   	   	self.vbias = Array(size=n_visible) # b: 可視層のバイアス	
   	   	self.hbias = Array(size=n_hidden) # b’: 隠れ層のバイアス	
   	   	self.W = Matrix(size=(n_visible, n_hidden)) # 重み行列 W	
	
   	def get_corrupted_input(self, input, corruption_level):	
   	   	# より一般的な特徴を学習させるため、あえてノイズを加える	
   	   	return Randomize(input, corruption_level)	
   		
   	def get_hidden_values(self, input): # encode に相当	
   	   	return T.nnet.sigmoid(T.dot(input, self.W) + self.vbias)	
	
   	def get_reconstructed_input(self, hidden): # decode に相当	
   	   	return T.nnet.sigmoid(T.dot(hidden, self.W.T) + self.hbias)
def get_cost_updates(self, corruption_level, learning_rate):	
   	   	tilde_x = self.get_corrupted_input(self.x, corruption_level)	
       	y = encode(tilde_x)	
       	z = decode(y)	
       	L = - T.sum(self.x * T.log(z) + (1 - self.x) * T.log(1 - z),
axis=1)	
       	cost = T.mean(L)	
   	   	update(vbias, hbias, W) #パラメタの更新	
   	   	return (cost, [vbias, hbias, W])	
	
if __name__ == '__main__':	
   	# 損傷率 0%, 30%, 50% の autoencoder 	
   	for c_rate in [0., 0.3, 0.5]:	
   	   	da = dA(T.matrix(‘x’), 784, 500)	
   	   	cost, updates = da.get_cost_updates(c_rate, 0.1)	
   	   	train_da = theano.function(..., train_dataset, updates, cost)	
   	   	img = PIL.Image.fromarray(da))	
   	   	img.save(‘hoge’+c_rate+‘.png’)
つまり
•  dA"
   - 入力データ "input "      "   "   "←与える"
   - ノード数 " "n_visible, n_hidden "←与える(経験と勘と試行錯誤)"
   - バイアス " "vbias, hbias"   "   "←パラメタ"
   - 重み行列 " "W "     "   "   "   "←パラメタ"
   + ノイズ追加 "get_corrupted_input(input, corruption_level)"
   + エンコード "get_hidden_values(input)"
   + デコード " "get_reconstructed_input(hidden)"
   + パラメタ更新 "get_cost_updates(corruption_level, learning_rate)"
   "
   意外と簡単!"
使用するデータ	
  
MNIST手書き文字認識	
  
Tutorial からダウンロードしたプログラムを実行"
Corruption Rate = [0, 0.3, 0.5] に対応するフィルタ(重み行列 W)の例


    o%                  3o%                 5o%
ちなみに:Corruption の方法にもいろいろある

  Denoising Auto-Encoders: Benchmarks
                              Larochelle et al., 2009




                                                   30
RBM をうごかす

(Restricted Boltzmann Machines)
RBM


        •  制約付きボルツマンモデル"
                –  制約: 可視層ノード同士、隠れ層ノード同士の接続を許さない"
                →計算の簡略化
        •  最尤推定によって学習を行う




Restricted	
  Boltzmann	
  Machines	
  (RBM)	
  –	
  deeplearning.net	
  http://deeplearning.net/tutorial/rbm.html	
  
Restricted	
  Boltzmann	
  Machine	
  の導出に至る自分用まとめ	
  http://dl.dropbox.com/u/2048288/RestrictedBoltzmannMachine.pdf
可視ノード集合 v( vi                     0, 1) と隠れノード集合 h( hi                                0, 1) からなる系
がその状態をとる確率 p(v, h) はエネルギー関数 E(v, h) と分散関数を用いて
以下のように定義される(c.f. カノニカル分布)。
                                                            E(v,h)
                                                    e
                                   p(v, h) =                                                   (1)
                                                         Z
        エネルギー関数 : E(x)                          =       bT v                cT h     vT Wh     (2)
                         分配関数 : Z               =                       e   E(v,h)
                                                                                               (3)
                                                        v       h

v, h, W は可視層のバイアス、隠れ層のバイアス、重み行列と呼ばれるパラ
メタである。この系の尤度は、以下のように定義される。

     尤度 J           log           p(v, h)   q   = log           eE(v,h)        q     log Z     (4)
                          h                                 h

ただし f (v)   q   =    v    f (v)q(v), すなわち                   q   は観測データの確率分布 q(v)
の期待値である。
尤度 J を任意のパラメタ                      について最大化するため、導関数を求める。
            J                 1                 E                   1                E
ただし f (v)   q   =   v   f (v)q(v), すなわち                   q   は観測データの確率分布 q(v)
の期待値である。
尤度 J を任意のパラメタ                について最大化するため、導関数を求める。
            J            1            E                   1                    E
                =            E
                                          e   E
                                                      q +                           e   E
                                                                                             (5)
                        he       h
                                                          Z        v       h

ここで、条件付き確率の定義 p(h|v) =                                             より、
                                                      E(v,h)
                                              Pe          E(v,h)
                                                  h   e

        J                        E                                             E
                =                    p(h|v)q(v) +                                  p(v, h)   (6)
                        v    h                                 v       h
                         E                        E
                =            p(h|v)q(v) +                 p(h,v)                             (7)

また、条件付き確率を計算して下記を得る(ここで厳密解を求められること
が「制限付き」の特徴)。

                            p(h|v) = s(Wv + b )                                              (8)
                            p(v|h) = s(Wh + b)                                               (9)

ただし、s(x) はシグモイド関数である。
以上より、RBM は
p(h|v)   = s(Wv + b )   (8)
                        p(v|h)   = s(Wh + b)    (9)

ただし、s(x) はシグモイド関数である。
以上より、RBM は

  • encoder: 式 (8)

  • decoder: 式 (9)

  • error:   J(式 (4))

  • 更新式: 式 (7)

という対応付けを行うことで、Autoencoder の実装のひとつと捉えることが
出来る。しかし、式 (7) の第 2 項を求めることは困難であることが多いため、
Contrastive Divergence という手法を用いる。
Tutorial からダウンロードしたプログラムを実行"
手書き文字データから抽出したフィルタ(重み行列 W)の例
まとめ




•  Deep Learning は多層のニューラルネットワーク"
  –  Autoencoder をつかったものと RBM をつかったものがある"


•  深イイはつくれる!"
  –  特に、Autoencoder の実装はシンプルでわかりやすい"
References
•    Yoshua Bengio, Aaron Courville, and Pascal Vincent. Representation
     Learning: A Review and New Perspectives."
•    Yoshua Bengio. Learning Deep Architectures for AI. "
•    Pascal Vincent, Hugo Larochelle, Isabelle Lajoie, Yoshua Bengio, Pierre-
     Antoine Manzagol. Stacked Denoising Autoencoders: Learning Useful
     Representations in a Deep Network with a Local Denoising Criterion"

•    Deeplearning.net http://deeplearning.net/"
•    Pythonと Deep Learningで 手書き文字認識

     http://www.slideshare.net/mokemokechicken/pythondeep-learning"
•    名古屋工業大学岩田彰研究室 ニューラルネット入門

     http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/bp4.html"
•    Deep Learning -株式会社ウサギィ 五木田 和也

     http://www.slideshare.net/kazoo04/deep-learning-15097274"
•    Restricted Boltzmann Machineの学習手法についての簡単なまとめ

     http://mglab.blogspot.jp/2012/08/restricted-boltzmann-machine.html

Contenu connexe

Tendances

2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 Kenta Oono
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてYuya Unno
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門TanUkkii
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"Ken'ichi Matsui
 
Deep learning勉強会20121214ochi
Deep learning勉強会20121214ochiDeep learning勉強会20121214ochi
Deep learning勉強会20121214ochiOhsawa Goodfellow
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowTadaichiro Nakano
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要Toshihiro Kamishima
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習Masahiro Suzuki
 
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会Shotaro Sano
 
Chainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM についてChainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM についてRetrieva inc.
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開Seiya Tokui
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)Kota Matsui
 

Tendances (20)

2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装についてGPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
 
Chainerで流体計算
Chainerで流体計算Chainerで流体計算
Chainerで流体計算
 
NumPy闇入門
NumPy闇入門NumPy闇入門
NumPy闇入門
 
Deep learning勉強会20121214ochi
Deep learning勉強会20121214ochiDeep learning勉強会20121214ochi
Deep learning勉強会20121214ochi
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習深層生成モデルを用いたマルチモーダル学習
深層生成モデルを用いたマルチモーダル学習
 
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
 
Chainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM についてChainer の Trainer 解説と NStepLSTM について
Chainer の Trainer 解説と NStepLSTM について
 
bigdata2012ml okanohara
bigdata2012ml okanoharabigdata2012ml okanohara
bigdata2012ml okanohara
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 

En vedette

JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7Kotaro Nakayama
 
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析Akisato Kimura
 
[DL輪読会]Understanding deep learning requires rethinking generalization
[DL輪読会]Understanding deep learning requires rethinking generalization[DL輪読会]Understanding deep learning requires rethinking generalization
[DL輪読会]Understanding deep learning requires rethinking generalizationDeep Learning JP
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorShuhei Iitsuka
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networksShuhei Iitsuka
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムShuhei Iitsuka
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous spaceShuhei Iitsuka
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会Shuhei Iitsuka
 
情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜Yuya Unno
 
実装ディープラーニング
実装ディープラーニング実装ディープラーニング
実装ディープラーニングYurie Oka
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践Preferred Networks
 

En vedette (11)

JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
JSAI's AI Tool Introduction - Deep Learning, Pylearn2 and Torch7
 
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析
MIRU2011 OS1-2 拡張ペアワイズ表現を用いた一般化多変量解析
 
[DL輪読会]Understanding deep learning requires rethinking generalization
[DL輪読会]Understanding deep learning requires rethinking generalization[DL輪読会]Understanding deep learning requires rethinking generalization
[DL輪読会]Understanding deep learning requires rethinking generalization
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behavior
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システム
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous space
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
 
情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜
 
実装ディープラーニング
実装ディープラーニング実装ディープラーニング
実装ディープラーニング
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践
 

Similaire à Deep Learning を実装する

Incanterの紹介
Incanterの紹介Incanterの紹介
Incanterの紹介mozk_
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisTatsuki SHIMIZU
 
Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会Shuyo Nakatani
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
 
パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)Yukara Ikemiya
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化Miyoshi Yuya
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5Kenta Hattori
 
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationDeep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationtakutori
 
Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会Shuyo Nakatani
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Nobutaka Shimizu
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Prunus 1350
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical ProgrammingMasahiro Sakai
 

Similaire à Deep Learning を実装する (20)

NLPforml5
NLPforml5NLPforml5
NLPforml5
 
Incanterの紹介
Incanterの紹介Incanterの紹介
Incanterの紹介
 
Pythonintro
PythonintroPythonintro
Pythonintro
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 
R intro
R introR intro
R intro
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
PRML5
PRML5PRML5
PRML5
 
Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会Infinite SVM [改] - ICML 2011 読み会
Infinite SVM [改] - ICML 2011 読み会
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5
 
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationDeep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___information
 
Topic model
Topic modelTopic model
Topic model
 
FOBOS
FOBOSFOBOS
FOBOS
 
Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会Infinite SVM - ICML 2011 読み会
Infinite SVM - ICML 2011 読み会
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
 

Plus de Shuhei Iitsuka

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...Shuhei Iitsuka
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Shuhei Iitsuka
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web developmentShuhei Iitsuka
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門Shuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...Shuhei Iitsuka
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataShuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ RuleShuhei Iitsuka
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話Shuhei Iitsuka
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得るShuhei Iitsuka
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザインShuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 Shuhei Iitsuka
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプShuhei Iitsuka
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2Shuhei Iitsuka
 
UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 Shuhei Iitsuka
 

Plus de Shuhei Iitsuka (20)

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web development
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得る
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくる
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザイン
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプ
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2
 
UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表 UT Startup Gym とは @第2期製品発表
UT Startup Gym とは @第2期製品発表
 
Webサーバ、HTML
Webサーバ、HTMLWebサーバ、HTML
Webサーバ、HTML
 

Dernier

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
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
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Dernier (7)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
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
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

Deep Learning を実装する

  • 1. Deep Learning を実装する
 http://deeplearning.net/tutorial/ 松尾研 修士1年 飯塚修平" @Deep Learning 輪講会
  • 2. 目次 •  Deep Learning とは" –  機械学習について" –  従来の NN とのちがい" –  Deep Learning のブレイクスルー" •  dA (Denoising Autoencoders) をうごかす" –  数理モデルの解説" –  Python で実装する前準備" –  コードレビュー" –  実行結果" •  RBM (Restricted Boltzmann Machines) をうごかす" –  数理モデルの解説" –  実行結果" •  まとめ
  • 4. Deep Learning とは •  入力信号からより抽象的な概念を学ぶ・特徴を抽出する 機械学習の手法の集合です
 " “ニューラルネットとどう違うの?”! •  ニューラルネットを多層にしたんです
 " “従来のニューラルネットワークと何が違うの?”! •  ひとつひとつのレイヤー間でパラメタの調整(すなわち 学習)を行うところが特徴なんです
  • 5. NN 従来のニューラルネットワーク •  層の数が多いほど表現力が高くなるが、パラメータの更 新が難しくなる (Vanishing Gradient Problem)" •  しかも局所解・過学習に陥りやすい" •  しかも遅い Pythonと Deep  Learningで 手書き文字認識 http://www.slideshare.net/mokemokechicken/pythondeep-learning" 名古屋工業大学岩田彰研究室 ニューラルネット入門 http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/bp4.html
  • 6. メージ そこで Deep Learning RBM RBM RBM DBM •  入力データから得た隠れ層をまた入力データにして・・・を ricted 繰り返す" Boltzmann Machine (RBM)をたくさん繋げたものが •  一層ずつ確定させていく pDeep Learning http://www.slideshare.net/kazoo04/deep-learning-15097274 Boltzmann Machines (DBM)
  • 7. Autoencoder •  層に相当するモジュール" y = f (x), z = g(y), ||x z||2 •                    となるように学習" min –  すなわち、入力と出力の誤差が最小になるようパラメタを調整する" –  すると、入力 x を適切な表現 y に写像する autoencoder が得られる" input encode decode output representation 層 x f y g z error
  • 9. Denoising Autoencoder •  下記の式で表されるエンコーダ、デコーダ、誤差を使う" •  s はシグモイド関数" •  重み W, W’ とバイアス b, b’ を学習する" •  Tied Weights: W^T = W’ とすることもある" encoder y = s(Wx + b), z = s(W x + b ) y = s(Wx + b), z = s(W x + b ) s(Wx + b), d = s(W x + b ) decoder z d H (x, z) =error LH (x, z) =zk + [xk logxk ) log(1xk ) zk )] [xk log (1 zk + (1 log(1 zk )] k log zk + (1k=1 k ) log(1 k=1 k )] x z input encode decode output representation x f y g z
  • 10. Python で実装する前準備 •  Theno を入れましょう" –  導関数を解析的に導出してくれる(自動微分という)" •  近似的に微分係数を算出する数値微分とは異なる" •  導関数を導関数として扱える!" –  GPU に計算を行わせることも可能" –  $ sudo pip install Theano"
  • 11. >>> # Theano のかんたんな使い方 >>> # まず、ふつうの演算 ... >>> import theano >>> import theano.tensor as T >>> x = T.dscalar(“x”) # x という名前のスカラー変数 >>> y = x**2 + 4*x # 式を表現 >>> f = theano.function([x], y) # 関数の生成。[]で囲まれた変数が関数の 引数となる >>> f(0) array(0.0) >>> f(1) array(5.0) >>> >>> # 次に、自動微分をさせてみる ... >>> z = T.grad(y, x) # y を微分した式を z として表現 >>> f_prime = theano.function([x], z) >>> f_prime(0) array(4.0) >>> f_prime(1) array(6.0)
  • 12. Getting Started Deep Learning" http://deeplearning.net/tutorial/gettingstarted.html サンプルコードがあります" 今回はこれをもとに説明します $ git clone git://github.com/lisa-lab/DeepLearningTutorials.git
  • 13. 擬似コード class dA (object): def __init__(self, input, n_visible, n_hidden): self.input = input # 入力データ self.n_visible = n_visible # 可視層ノード数 self.n_hidden = n_hidden # 隠れ層ノード数 self.vbias = Array(size=n_visible) # b: 可視層のバイアス self.hbias = Array(size=n_hidden) # b’: 隠れ層のバイアス self.W = Matrix(size=(n_visible, n_hidden)) # 重み行列 W def get_corrupted_input(self, input, corruption_level): # より一般的な特徴を学習させるため、あえてノイズを加える return Randomize(input, corruption_level) def get_hidden_values(self, input): # encode に相当 return T.nnet.sigmoid(T.dot(input, self.W) + self.vbias) def get_reconstructed_input(self, hidden): # decode に相当 return T.nnet.sigmoid(T.dot(hidden, self.W.T) + self.hbias)
  • 14. def get_cost_updates(self, corruption_level, learning_rate): tilde_x = self.get_corrupted_input(self.x, corruption_level) y = encode(tilde_x) z = decode(y) L = - T.sum(self.x * T.log(z) + (1 - self.x) * T.log(1 - z), axis=1) cost = T.mean(L) update(vbias, hbias, W) #パラメタの更新 return (cost, [vbias, hbias, W]) if __name__ == '__main__': # 損傷率 0%, 30%, 50% の autoencoder for c_rate in [0., 0.3, 0.5]: da = dA(T.matrix(‘x’), 784, 500) cost, updates = da.get_cost_updates(c_rate, 0.1) train_da = theano.function(..., train_dataset, updates, cost) img = PIL.Image.fromarray(da)) img.save(‘hoge’+c_rate+‘.png’)
  • 15. つまり •  dA" - 入力データ "input " " " "←与える" - ノード数 " "n_visible, n_hidden "←与える(経験と勘と試行錯誤)" - バイアス " "vbias, hbias" " "←パラメタ" - 重み行列 " "W " " " " "←パラメタ" + ノイズ追加 "get_corrupted_input(input, corruption_level)" + エンコード "get_hidden_values(input)" + デコード " "get_reconstructed_input(hidden)" + パラメタ更新 "get_cost_updates(corruption_level, learning_rate)" " 意外と簡単!"
  • 17. Tutorial からダウンロードしたプログラムを実行" Corruption Rate = [0, 0.3, 0.5] に対応するフィルタ(重み行列 W)の例 o% 3o% 5o%
  • 18. ちなみに:Corruption の方法にもいろいろある Denoising Auto-Encoders: Benchmarks Larochelle et al., 2009 30
  • 20. RBM •  制約付きボルツマンモデル" –  制約: 可視層ノード同士、隠れ層ノード同士の接続を許さない" →計算の簡略化 •  最尤推定によって学習を行う Restricted  Boltzmann  Machines  (RBM)  –  deeplearning.net  http://deeplearning.net/tutorial/rbm.html   Restricted  Boltzmann  Machine  の導出に至る自分用まとめ  http://dl.dropbox.com/u/2048288/RestrictedBoltzmannMachine.pdf
  • 21. 可視ノード集合 v( vi 0, 1) と隠れノード集合 h( hi 0, 1) からなる系 がその状態をとる確率 p(v, h) はエネルギー関数 E(v, h) と分散関数を用いて 以下のように定義される(c.f. カノニカル分布)。 E(v,h) e p(v, h) = (1) Z エネルギー関数 : E(x) = bT v cT h vT Wh (2) 分配関数 : Z = e E(v,h) (3) v h v, h, W は可視層のバイアス、隠れ層のバイアス、重み行列と呼ばれるパラ メタである。この系の尤度は、以下のように定義される。 尤度 J log p(v, h) q = log eE(v,h) q log Z (4) h h ただし f (v) q = v f (v)q(v), すなわち q は観測データの確率分布 q(v) の期待値である。 尤度 J を任意のパラメタ について最大化するため、導関数を求める。 J 1 E 1 E
  • 22. ただし f (v) q = v f (v)q(v), すなわち q は観測データの確率分布 q(v) の期待値である。 尤度 J を任意のパラメタ について最大化するため、導関数を求める。 J 1 E 1 E = E e E q + e E (5) he h Z v h ここで、条件付き確率の定義 p(h|v) = より、 E(v,h) Pe E(v,h) h e J E E = p(h|v)q(v) + p(v, h) (6) v h v h E E = p(h|v)q(v) + p(h,v) (7) また、条件付き確率を計算して下記を得る(ここで厳密解を求められること が「制限付き」の特徴)。 p(h|v) = s(Wv + b ) (8) p(v|h) = s(Wh + b) (9) ただし、s(x) はシグモイド関数である。 以上より、RBM は
  • 23. p(h|v) = s(Wv + b ) (8) p(v|h) = s(Wh + b) (9) ただし、s(x) はシグモイド関数である。 以上より、RBM は • encoder: 式 (8) • decoder: 式 (9) • error: J(式 (4)) • 更新式: 式 (7) という対応付けを行うことで、Autoencoder の実装のひとつと捉えることが 出来る。しかし、式 (7) の第 2 項を求めることは困難であることが多いため、 Contrastive Divergence という手法を用いる。
  • 25. まとめ •  Deep Learning は多層のニューラルネットワーク" –  Autoencoder をつかったものと RBM をつかったものがある" •  深イイはつくれる!" –  特に、Autoencoder の実装はシンプルでわかりやすい"
  • 26. References •  Yoshua Bengio, Aaron Courville, and Pascal Vincent. Representation Learning: A Review and New Perspectives." •  Yoshua Bengio. Learning Deep Architectures for AI. " •  Pascal Vincent, Hugo Larochelle, Isabelle Lajoie, Yoshua Bengio, Pierre- Antoine Manzagol. Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion" •  Deeplearning.net http://deeplearning.net/" •  Pythonと Deep Learningで 手書き文字認識
 http://www.slideshare.net/mokemokechicken/pythondeep-learning" •  名古屋工業大学岩田彰研究室 ニューラルネット入門
 http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/bp4.html" •  Deep Learning -株式会社ウサギィ 五木田 和也
 http://www.slideshare.net/kazoo04/deep-learning-15097274" •  Restricted Boltzmann Machineの学習手法についての簡単なまとめ
 http://mglab.blogspot.jp/2012/08/restricted-boltzmann-machine.html