FC2ブログ

Backpropagation

Backpropagation、最近ある方に説明する機会がありましたので、見直していました。

合成関数の微分がわかれば、基本的にはわかるのですが、やはりややこしいです(添え字がたくさん出てくる)。以下、私なりの注意点です。

1.出力層のエラーだけは、個別に考えます。これは適切なエラー関数を考えてやると、(出力)マイナス(教師データ)、という極めて簡潔な表現となります。回帰しかり、分類しかり(2クラスでも多クラスでも)。

2.各ノードは、前半と後半に分けて考えます。この関係が、活性化関数。これの微分が入ることに注意。もっと言えば、これが「勾配消失問題」の元凶。

3.エラー関数をノード前半の値で微分した量を、PRMLではδと記していますが、この量を理解することが重要。慣れれば便利です。ノード前半での微分なので、活性化関数の微分が含まれます。

-------------------------------------------

アルゴリズムとして整理されているのは、やはりPRMLです。同書の、5.3. Error Backpropagationの情報がすべてです。または、"Deep Learning"の、Algorithm 6.4ですね。
スポンサーサイト

二項分布 (5)

二項分布 Bin(n, p)の分散は、np(1-p)です。

正攻法でやってみようと、以下の式を自力で計算してみました。

Σ(r-np)2nCrpr(1-p)n-r --- (1)

これはかなり大変でした。一時間くらいかかりました。平均の導出で使ったテクを駆使します。詳細はおいといて、最後に3つの項が出てきます。すなわち、

σ2 = np2(n-1) + np - n2p2 --- (2)

式(2)を整理すると、

σ2 = np(1-p) --- (3)

が得られます。つかれました。

Deep Learning (27)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

第20章(最終章)の"Deep Generative Models"、20.4.4、Layer-Wise Pretraining、の解読をいたしました。

これはHintonらが、deep neural networkがうまく初期化できることを示したもので、ここからDNNの快進撃が始まったという歴史的なアルゴリズムです。これが、

Algorithm 20.1 The variational stochastic maximum likelihood algorithm for training a DBM with two hidden layers.

として、詳しく紹介されています。ここは難解で、解読するのに一日を費やしました。構造的には、

Algorithm 18.3 The stochastic maximum likelihood / persistent contrastive divergence algorithm using gradient ascent as the optimization procedure.

と同じですが、これにvariationalとNNの学習が追加されているというものです。

Algorithm 20.1の後には、アルゴリズムの紹介はないので、これがわかれば、本書は卒業ということでしょう。

Deep Learning (26)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

ついに、第20章(最終章)までやってきました。"Deep Generative Models"です。

20.4がひとつのヤマですね。Deep Boltzmann Machinesです。テクとしては、ベルヌイ分布(0/1なので)、シグモイド関数、KLダイバージェンス、MCMC(ギプスサンプリング)、などですね。これまでの総動員。難しいですが、楽しいです。

岡谷先生の「深層学習」最終章がボルツマンマシンですが、3年前にここを読んだときは全くわかりませんでした(というか、途中でやめた)。でも、いま読むと、多少ともわかるのがうれしい。

サンプリングの謎 (2)

昨日(2018年11月7日)の記事にて、コメントをいただきました。

「標本平均と期待値を混同されてはいませんか?」というものです。それで、少し調べてみました。

薩摩順吉先生「確率・統計-理工系の数学入門コース7」の103ページに、「標本平均」と題して以下の記述があります。

「3-2節で定義した平均は、全体の分布がわかっているとして、その確率密度にもとづいて計算した平均である。それに対して、標本平均は、全体のことはわからないまま、その中から抽出した標本について、単に算術平均をとったものである」

なるほど、この記述によれば、私は混同しています。たいへん失礼いたしました。

私は通常の確率・統計本より、機械学習本を読むことが多いのですが、機械学習本だと、標本での平均操作を普通にやり、それを期待値とみなします。もちろん、ある分布からの標本です。ただ、実際には正しい分布はわからないので、あるモデルを仮定し、そこから標本をとってやることになります。

このあたりは、もしかしたら多少の乖離があるのかもしれません。

サンプリングの謎

サンプリングは、日常普通に使われます。

たとえば、ヒトの身長の平均を求めたいときは、ランダムにサンプルを抽出、それの算術平均で計算します。これは誰も疑問に思いません。

しかし、ちょっと待ってください。平均の定義は、サンプル値にその確率をかけて、サンプル数で足し合わせたものですね。

ここに乖離があるわけですが、これはモンテカルロ法でサンプルした状況と同じです。つまり、サンプリングするということは、ある確率密度から抽出するので、すでに確率が考慮されているということです。

このあたり、初歩的な確率・統計本では、きちんと説明がされていないような気がします。気のせいかな?

二項分布 (4)

二項分布 Bin(n, p)の分散は、np(1-p)です。

これを求めるには、さまざまなやり方があります。もちろん、平均の計算よりも難しい。

まず、確率変数をひとつとして分散を計算します。これは分散の定義により、

(0-p)2(1-p) + (1-p)2p = p(1-p) --- (1)

そして、式(1)をn倍してやればよいです。

数式をいじりたい人は、以下の計算をすればよろしい。

Σ(r-np)2nCrpr(1-p)n-r --- (2)

やり方はたとえば、「高校数学の美しい物語」というブログに紹介されています。このサイトの記述は素晴らしく、よく参考にします。

二項分布 (3)

二項分布 Bin(n, p)の平均は、npです。

これを求めるには、さまざまなやり方があります。たとえば、ひとつひとつの確率変数の平均はpなので、それをn倍してやればよい。これが一番簡単です。

数式をいじりたい人は、以下の計算をすればよいです。

ΣrnCrpr(1-p)n-r --- (1)

計算してやると、npになりますが、これは少しややこしいです。やり方はたとえば、「高校数学の美しい物語」というブログに紹介されています。シグマ/コンビネーション/二項定理のよい練習になります。

二項分布 (2)

昨日(2018年10月31日)、湘南工科大学の講義で、二項分布を紹介しました。

二項分布は簡単そうに見えますが、その中にさまざまな数学のテクが入っていて、重要ですね。まず、場合の数を数えるので、コンビネーションの計算が必要。これには階乗が必要です。また、確率本体の計算では、乗数の計算があり、ゼロの場合も含みます。相応の計算知識が試されるところです。

分布としては最初に出てくるわけですが、思いのほか難しいです。

Deep Learning (25)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

第19章までふらふらと到着。"Approximate Inference"、です。この章は難しいです。これまでやったことが総動員されています。でも、読めないことはない。

19.4.2に変分法の説明があります。英語では"Calculus of Variations"です。情報系の方には敷居の高いところでしょう。工学では解析力学で出てくる、よく知られた理論です。

よい例としては、与えられた分散を持つ分布で、エントロピーが最大となるものはなにか、というもの。これは正規分布ですが、変分法の解法で導出されます。式(19.48)~(19.54)です。

Importance Sampling

Importance sampling、理論がいまいちよくわからず、使ったこともありませんでした。

以前、大学の授業で、モンテカルロを使った積分を教えたことがありました。円周率を求めるようなヤツです。そのあとで、

f(x) = 1/x --- (1)

の積分をやるときに、グラフを区分で分割し、長方形で近似するやりかたを説明しました。そして、式(1)の積分、つまり、

log(x) = ∫dx/x --- (2)

を計算して、両者を比較するなどをやったわけです。

さて、ここでやっと気がつきました。これはimportance samplingが使えますね。たとえば、[1,2]の区間で積分をしてやる場合、一様分布をp(x)として、

log(x) = ∫dx/x = ∫p(x)dx/(px(x)x) = E[1/x] --- (3)

として計算できるわけです。プログラミングしてみると、確かにlog(2)に近づきます。なるほど~ちょっと面白いかも。

モンティ・ホール問題 (2)

湘南工科大学での確率・統計の授業で、「モンティ・ホール問題」を紹介しようと思います。

前回、ベイズの定理をやったので、関連する興味ある話題、ということで、この問題を解くのにベイズを応用しようと思ったわけです。

しかしながら、これへのベイズの適用は、なかなか面倒くさいですね。問題が理解できれば、解は自明なので、どうしようかな...楽しい話なので、紹介はしようと思いますが、落としどころは思案中...

positive phase vs negative phase

昨日の続きです。以下の式におきまして、

θlog p(x;θ) = ∇θlog p'(x;θ) - Ex~p(x)θlog p'(x) --- (1)

右辺第一項は"positive phase"、第二項は"negative phase"と呼ばれます。

左辺は、対数尤度のパラメタに関する微分ですから、これがゼロになったときが、最尤法におけるパラメタの最適値です。では、いつゼロになるかというと、右辺のふたつの項が釣り合ったときですね。

右辺第一項の意味ですが、これは訓練データから得られるxを使います。対して、第二項では、MCMCにより得られるxを使います(なぜか?モデル分布からのサンプルが必要なので)。なので式(1)というのは、モデルをデータに当てはめてやる過程を表現していると言えます。

"Deep Learning"本では、ここでneuroscienceの研究が紹介されます。すなわち、第一項は、ヒトが現実で経験することを表します。対して、第二項は、ヒトが寝ているとき、特にREM睡眠の状態を表します。つまりヒトというのは、現実を解釈するときには、寝ているときに、脳の持つモデルを現実に当てはめる処理をしているのではないか、ということです。

ホントかな?これはまだ、証明されていないということですが、面白い解釈をするひとがいるものです。

Deep Learning (24)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

なんとか第18章まで来ました。"Confronting the Partition Function"、つまり「分配関数」の攻略です。

最初に、以下の式が登場します。同書では、式(18.4)です。

θlog p(x;θ) = ∇θlog p'(x;θ) - ∇θlog Z(θ) --- (1)

要するに、確率密度を正規化したものの対数をとり、それをパラメタで微分したものです。Z(θ)が悪名高き、「分配関数」。

式(1)の第二項は、以下のように書けることが示されます。同書では、式(18.5)です。

θlog Z(θ) = Ex~p(x)θlog p'(x) --- (2)

このふたつの式の解釈がいろいろと書かれているわけですか、これがかなり面白いです。最初はまるでわからなかったのですが、何度も読み直すうちに、わかりました。楽しいところです。

MCMC法 (4)

MCMC (Markov Chain Monte Carlo) という技術を知ってから、早や5年経ちます。最初はなんのことか、まるでわかりませんでした。

ベイズ統計において、パラメタの事後分布を求めるのによく使われるわけですが、"Deep Learning (2016)"の第17章に登場するのには、ちょっとびっくりしました。Deep Learningになにか関係がある?

それが関係ありそうなんです。"17.5 The Challenge of Mixing between Separated Modes"に、それに関連する、難しい話が書かれてあります。

Probabilistic PCA (2)

Probabilistic PCAを攻略しようと思って、自分でEMの計算方法を考えてみた。

第一主成分を求めようとします。まず、初期値、つまり主成分の方向を適当に決めてやります。

そうすると、各データ点からその方向への投影を求めることができます。これが各点に対応する隠れ変数。

隠れ変数の位置が求まると、その点に対応するデータ点を生成する確率が求められます。正規分布で生成されると仮定する。

ここまではよいと思うのですが、このあと、主成分の方向を更新するやりかたがわからない...

やっぱり、ちゃんとPRML読まないといけないのかな。

Deep Learning (23)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

ついにパートⅢに入りました。

13章~15章のつながりは、いまいちよくわからないのですが、16章~19章は、最終章20章の準備です。20章はなにかというと、泣く子も黙る、Deep Generative Modelsです。

準備は万端?です。気合いだけは...

Probabilistic PCA

"Deep Learning (2016)"の第13章に、Probabilistic PCAが紹介されています。

第13章は、Linear Factor Modelsというタイトルで、パートⅢの最初になぜこれが出てくるのかよくわからないのですが、それはともかく、Linear Factor Modelsの例として、Probabilistic PCAが紹介されているということです。

Probabilistic PCAは、PRML第12章で最初にみました。これを読んだときは、なにが書かれてあるのかよくわかりませんでした。雰囲気はなんとなく掴めたけれど...

上記のDeep Learning本では、さわりだけしか書いてないのですが、同書は本質をつく説明をします。すなわち、latent variableを用いて、条件付き独立(conditionally independent)を仮定してやるわけです。PCAというのは、独立となるような成分を抽出するわけですから(正しくは相関がない、ということですが)、観測されるデータの共分散行列は、対角行列としてモデル化できるわけです。なので、latent variableを周辺化してやると、主成分が得られるという仕組みです。

Deep Learning (22)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

第10章は、ついにRNN (Reccurent Neural Network) です。これが最後の難所です。

まずは、back-propagationの計算です。通常のものと変わりませんが、RNNでは、BPTT (back-propagation through time) というものを使います。

具体的な式は、(10.17)~(10.28)です。式(10.18)は、softmaxのcross entropyの微分です。これは既に習得しました。以下をご覧ください。

http://kanouy.blog9.fc2.com/blog-entry-2027.html

汎用的な設定では、教師データは総和してイチとなればよいのですが、式(10.18)は、ひとつの出力だけがイチ、ほかはゼロという特殊な場合を想定しています。

Deep Learning (21)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

第9章は、CNN (Convolutional Neural Network) です。もともとこれがdeep learningを流行らせた。2012年のことです。

ただ、この章にはCNNの学習方法がきちんと書かれていませんね。畳み込みフィルタの重みは共通なので、これの学習には工夫が必要なはずですが、これに関する記載がされていません。なぜ?

ちなみに、岡谷先生の「深層学習」には書かれてあります。6.7 勾配の計算、です。

Batch Normalization

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

8.7.1 Batch Normalizationの記述が、いまいちよく解らなかったので、原著論文にあたってみました。

Sergey Ioffe, Christian Szegedy, Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 2015.

ネットで取れます。要するに、層ごとに正規化してやるということですね。たぶん...

Deep Learning (20)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

8.3.2 Momentumという節に、物理シミュレーションのような記述があります。

要するに、最適化計算の過程(=gradient descent)で、速度(velocity)というものを考えてやると、学習が速く進むという理屈です。これはどういうことかと言うと、エラー関数を力学でいうところのポテンシャルと見なすと、それの座標での微分というのは力です。そして、力は加速度に比例します。

このような観点から機械学習における学習を眺めると、学習率(learning rate)が一定というのは、加速度一定ということです。しかるに、物理においては、速度はどんどん速くなるわけです。この速度をうまく使って、学習率を更新してやることにより、学習が速く進むということです。お試しあれ。

Deep Learning (19)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

7.12 Dropout ですが、ここでも、振舞いの解析をしています。楽しい。

dropoutの解析は非常に困難なので、いろいろと言い訳(=近似)したあとで、簡単なsoftmaxの事例について、正確な解析しています。結果として、dropoutの確率が0.5のときは、重みを0.5にしてやればよいということがわかります。

よくやるな~という感じです。数学の勉強になります。

Deep Learning (18)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

7.8 Early Stopping ですが、ここの解説は面白いです。Early Stoppingは結局のところ、L2正則化と同じであるという結論なのですが、解析のお手本のような記載があります。

適当な計算で、L2正則化とEarly Stoppingの対応付けをします。それが、式(7.43)。

(I - εΛ)τ = (Λ + αI)-1 --- (1)

左辺がL2、右辺がEarly Stoppingです。ここで、両辺の対数をとり、更にlog(1+x)のテイラー展開で一次の項をとります。すると、

τ= (1/εα) --- (2)

が得られます。τはEarly Stoppingにおける計算ステップ数、εは学習率、αはL2正則項の比例定数です。

式(2)をみると、αが大きいほど、τは小さくなります。つまり、τが小さいということは、overfittingされる前に計算を打ち切るということですから、結果としてL2正則の効果が得られる、ということです。

Deep Learning (17)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

について、K大Mさん(実名でも問題ないと思われます)が、2.12についてFBでポストしてきました。PCAのところです。私も以前言及したところです。

http://kanouy.blog9.fc2.com/blog-entry-1964.html

議論としては、ここでは中心化(期待値を引く)をしていないけれど、それはよいのか、ということです。確かにここの記述は明確ではありません。私の理解では、中心化しない場合、いわゆる同次座標(CGではこう呼ぶが、統計ではなんと言うのか?)を導入すれば、同じ議論が適用できるのだと思います。

cross-entropyの謎 (3)

cross-entropyですが、softmaxにおける偏微分の計算をやっと習得しました。

まず、コスト関数(cross-entropy)ですが、

L = -Σktk log(pk(x)) --- (1)

です。tkは教師データで、pkは以下で与えられます(これがsoftmax)。

pk(x) = exp(xk) / Σjexp(xj) --- (2)

式(2)を式(1)に代入すると、

L = -Σktk log(exp(xk) / Σjexp(xj)) = -Σktk (log(exp(xk) - logΣjexp(xj)) = -Σktk(xk - logΣjexp(xj)) --- (3)

式(3)をxiで偏微分します。

∂L/∂xi = -ti + Σktk(exp(xi) / Σjexp(xj)) = -ti + (exp(xi) / Σjexp(xj))Σktk --- (4)

ここで、

Σktk = 1 --- (5)

に注意すると、式(4)は、式(2)を使って、

∂L/∂xi = -ti + p(xi) = p(xi) - ti --- (6)

となり、非常に簡単な式が得られました。計算の練習に最適?

AI数学

AI、というか、機械学習ですが、その習得には数学が欠かせません。その数学とは、大きくわけると以下のものです。

1.線型代数
2.微分積分
3.確率・統計

AIは最先端と言われていますが、その基礎となる数学は、非常に古いです。ほとんどが数世紀前に構築されています。逆説的でおもしろい。基礎が重要なことが、ここでも確かめられました。

一方では、AI数学は習得が困難と言われます。その理由としては、広範囲な数学の知識が必要なことです。つまり、いろいろと「つまみ食い」をしなければなりません。

個人的には、ベクトルと行列について、従来の数学ではきちんとカバーされていないことが出てくるのが、敷居を高くしていると思っています。たとえば、ベクトルをベクトルで微分すると行列になるというようなことです。工学ではこれは出てくるのですが、大学教養の数学ではやりません。

なので、AI数学というくくりで、再構築をする必要がありますね。最近のお気に入り、"Deep Learning (2016)"の第2-4章に書かれてあるようなことです。

Deep Learning (16)

Ian Goodfellow , Yoshua Bengio , Aaron Courville
Deep Learning (Adaptive Computation and Machine Learning series) November 18, 2016.

6.2.2.2 Sigmoid Units for Bernoulli Output Distributions は、バイナリの分類なので、簡単だと思ったのですが、違いました。

シグモイド関数の対数をとると、それがsoftplus関数になることから、それを元に振舞いを解析しています。ちなみに、softplus関数というのは、以下で表されます。

ζ(x) = log (1 + exp(x)) --- (1)

そうすると、シグモイド関数σとの関係は、以下となります。

log σ(x) = -ζ(-x) --- (2)

こういう説明は初めてみました。最初は戸惑いましたが、なかなかおもしろい。

Algorithms for Reinforcement Learning

先日のVR学会の日、東大本郷の書店に立ち寄りました。さすが東大、技術書は充実しています。

強化学習に関する本を見てみると、「速習 強化学習」と「これからの強化学習」の2冊が目にとまりました。暫し立ち読み。

後者は内容的にかなり敷居が高そうなので(分筆本によくある)、前者が適当ですが、これは翻訳ですね。私は基本的には技術書の翻訳ものは買わないので、そのあとネットで原書を調べてみたところ、以下の本でした。

Csaba Szepesvari, Algorithms for Reinforcement Learning (Synthesis Lectures on Artificial Intelligence and Machine Learning) – 2010/10/1

「速習 強化学習」の前書きによると、これはセミナのノートのようですね。書評も見当たりません。謎の本ですが、注文しました。到着が楽しみです。少し読んだら、レビューを書きます。

PRESS statistic (2)

PRESS statisticの導出なのですが、

それと等価なLOOCVの説明が、「イラストで学ぶ機械学習」式(4.4)に絡んで出てきますが、おそらくこの記述だけで導出方法がわかるヒトは、ほとんどいないのではないでしょうか。もちろん私もわかりませんでした。

諦めていたのですが、まったくの別ルートから知った、以下の本、

'Introduction to Linear Regression Analysis (Wiley Series in Probability and Statistics) 5th Edition (2012)'

の、APPENDIX C.6-7に非常に詳しく書かれてありました。「逆行列の公式」の使い方も、これでやっとわかりました。
プロフィール

加納裕(かのうゆたか)

Author:加納裕(かのうゆたか)


[略歴]
1983年3月東京工業大学工学部機械物理工学科卒業
1983年4月(株)図研入社
1987年1月同社退社
1987年2月(株)ソリッドレイ研究所を6名で設立、取締役
1994年3月同社退社
1994年4月(株)スリーディー入社
1996年10月同社取締役
1999年12月上海大学兼務教授
2002年10月同社代表取締役
2009年9月ものつくり大学非常勤講師~現在
2009年10月同社代表退任/退社
2010年1月ソフトキューブ(株)入社~現在(技術顧問)
2017年4月湘南工科大学非常勤講師~現在


[業界団体・学会活動]
電気学会・第三期次世代インタラクティブディスプレイ協同研究委員会(幹事)/最先端表現技術利用推進協会・アカデミック部会(旧:三次元映像のフォーラム)(副部会長)/日本バーチャルリアリティ学会ハプティクス研究委員会(委員)/ACM・SIGGRAPH(Professional Member)/情報処理学会(正会員、CVIM会員)/3Dコンソーシアム(賛助会員)/3DBiz研究会(個人賛助会員)/URCF(特別会員)

----------------

前職:立体映像産業推進協議会(幹事)/日本バーチャルリアリティ学会・論文委員会(委員)


[資格]
TOEIC805点
数学検定1級(数理技能)
中型・普自二免許
サッカー4級審判員

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード