1. 程式人生 > >深度學習 --- 玻爾茲曼分佈詳解

深度學習 --- 玻爾茲曼分佈詳解

上一節我們從Hopfield神經網路存在偽吸引子的問題出發,為了解決偽吸引子帶來的問題,詳細介紹了模擬退火演算法,本節也是基礎性的講解,為了解決偽吸引子還需要引入另外一個重要概念即:玻爾茲曼分佈。本篇將詳解玻爾茲曼分佈,但是還是先說說為什麼要引入玻爾茲曼分佈,因為為了解決Hopfield神經網路的偽吸引子的問題,引入模擬退火演算法和玻爾茲曼分佈,下一節將在Hopfield神經網路中加入這兩個演算法,組合成一個新的神經網路即隨機神經網路或者玻爾茲曼機。因為本人喜歡刨根問底,所以會深入挖掘引入的知識,這樣下節講起來就會很容易,也會更容易理解,不會覺的太突兀,另外一點就是希望能深入理解和掌握玻爾茲曼機,因為後面還會引入受限玻爾茲曼機、深度信念網路、CNN、RNN。因此我們正在慢慢的靠近深度學習的核心區域,前面就說過,所有的演算法都不是拍著腦袋想出來的,他是根據出現的問題,慢慢研究出演算法的,我們要想深入理解深度學習,沿著他的發展歷程學習將更容易,更具有體系化,以後遇到問題也知道如何解決,您說呢?好,廢話不多說,下面就開始主題:玻爾茲曼分佈。

玻爾茲曼分佈:

物理學(特別是統計力學)中,麥克斯韋 - 玻爾茲曼分佈是以詹姆斯·克拉克斯·馬克斯韋爾路德維希·波茲曼命名的特定概率分佈

這是第一次定義,並且用於描述顆粒速度理想化的氣體,其中所述顆粒的固定容器內自由移動,而不會彼此互動,除了非常簡短的碰撞,其中它們與彼此或與它們的熱環境交換能量和動量。在該上下文中,術語“顆粒”僅指氣態顆粒(原子分子),並且假設顆粒系統已達到熱力學平衡[1] 這種粒子的能量遵循所謂的 麥克斯韋 - 玻爾茲曼統計通過將粒子能量與動能等同來推匯出速度的統計分佈。(此來源維基百科,詳情請點選瞭解),在這裡我不會講解的那麼深,從容易接受的角度出發,因此會有點不嚴謹,但是對於我們理解已經夠用了,想深入理解的請參考維基百科。

在一個封閉的空間中,溫度為T,裡面只有兩種能級\large \varepsilon _{0},\varepsilon _1,粒子的總數為N,且兩種能級對應的個數分別為:\large n_0,n_1,所以能級的粒子總和為\large n_0+n_1 = N。那麼N個粒子的不同狀態組合數記為\large w,且\large w為:

                                            \large w =C_{N}^{n_0} = \frac{N!}{n_0!n_1!}

通過組合數計算一下熵\large S,熵是來源熱力學的概念,熵是衡量物質的混亂程度的量,通常和物質的狀態有關,我們知道當物質的能量越高時混亂程度也越高,能量越低時混亂程度也越低,這和我們的常識認知是一致的(這裡希望大家能徹底搞懂什麼是熵,這個概念很重要,熵在自然語言處理中會大量的使用,大家先看看

維基百科,然後在自己學習一下,熵我打算在自然語言處理中在詳細講解),下面給出熵的定義:

                                              \large S = K_Blogw

     其中\large K_B是玻爾茲曼常數,取log就是熵的來源。

\large w帶進上式的:

                           \large S = K_Blogw = K_B[log(N!) - log(n_0!)-log(n_1!)]                                \large \left ( 1 \right )

現在我給空間增加少了的能量\large \varepsilon,此時封閉的空間的低能級的粒子\large \varepsilon _0就會越變到高能級\large \varepsilon _1,也就是說會有少量的\large n_0變為\large n_1即:

\large n_0\rightarrow n_0-\alpha ,n_1\rightarrow n_1+\alpha,其中\large \alpha是變化的粒子數,由此我們從新計算熵為:

                           \large S' = K_Blogw = K_B[log(N!) - log((n_0-\alpha )!)-log((n_1+\alpha )!)]       \large \left ( 2 \right )

\large \left ( 2 \right ) - \left ( 1 \right )得到:

                          \large \Delta S = K_Blog\left ( \frac{n_0(n_0-1)....(n_0-\alpha ))}{(n_1+\alpha )....(n_1+1)} \right )                                                          \large \left ( 3 \right )

我們知道上式的分子和分母項是一樣多的,同時在封閉的空間中 \large n_0,n_1是足夠大的,\large \alpha是很小的,因此可以把\large \left ( 3 \right )化簡為:

                          \large \Delta S = K_Blog(\frac{n_0}{n_1})                                                                                                            \large \left ( 4 \right )

然而從熱力學角度,熵的變化量和溫度以及加入的能量\large \varepsilon有關(參考維基百科),因此有如下的公式;

                         \large \Delta S = \frac{\varepsilon }{T}                                                                                                                                \large \left ( 5 \right )

聯立\large \left ( 4 \right )和 \large \left ( 5 \right )兩式的到:

                         \large K_Blog(\frac{n_0}{n_1}) = \frac{\varepsilon }{T}

化簡得到為:

                          \large \dpi{120} \large \frac{n_0}{n_1} = e^{}\frac{\varepsilon }{K_BT}                                                                                                                         \large \left ( 6 \right )

從上式我們看到,不同能級的比值和能量\large \varepsilon、溫度T、玻爾茲曼常數都有關係,且上式等式右邊的指數和我們的退火演算法很像,同時上式就稱為玻爾茲曼分佈。

好,從上面我們推倒了玻爾茲曼分佈的來歷。他是來源於熱力學,大家通過我講的簡單型的可以完全理解了,掌握這些東西就夠用了,如果對此感興趣的同學可以看看完整版的玻爾茲曼分佈,那裡比這裡稍微複雜一點,但是有這裡的基礎,看完整版的就會很容易了,好了,玻爾茲曼分佈到此結束,下一節我們將模擬退火演算法、玻爾茲曼分佈和Hopfield神經網路結合起來,構建一個新的神經網路即隨機神經網路或者說是玻爾茲曼機。