工欲善其事,必先利其器。boltzmann machine涉及到的東西還是比較多的,這里不會給出詳盡的證明,只是會提到一下,重點還是這個機器學習算法的有點、缺點、能處理的問題等。
Boltzman分布
Boltzman分布形成了分子運動論的基礎,它解釋了許多基本的氣體性質,包括壓強和擴散。通常描述的是氣體中分子的速率的分布,但它還可以指分子的速度、動量及動量大小的分布。
其中:
- T:平衡溫度。
- Ni:狀態i的粒子數。
- k:狀態i的能量。
- gi:狀態i的簡並度。
- Ei:狀態i的能量。
模擬退火算法
首先,什么是退火?其實之前別人提到這個算法的是模擬“119”的做法,其實真正的含義是:金屬冶煉的退火過程。根據熱力學的原理,在溫度為T時,出現能量差為dE的降溫的概率為P(dE),那么:
其中:
- E:能量。
- T:溫度。
- k:波爾茲曼常數。
那么,溫度越高,出現一次能量差為dE的降溫的概率就越大。而且隨着溫度T的降低,P(dE)會逐漸降低。扯了這么多,那要解決什么問題呢?在實際中很多時候都要求全局的最優解,最簡單的例子,求下面這個函數的最大值:
在解決這種問題的時候,我們總是傾向於不斷找到比現在更好的結果(這個過程像爬山,所以稱為爬山算法,囧)。運氣好點,從綠色的地方開始,並且在選擇爬的時候選擇了左邊,這時候能爬到最高的山上。但是如果運氣差一點,出發的地點是紅色的那個點,那么到達不管是他左邊的山頂還是右邊的山頂,都不可能再往高處爬了。
那么解決的方法就是讓這個過程不那么死板:
- 如果移動后更高,那么嘗試向這個方向走。
- 如果移動后沒有變化甚至變低,那么還是會有一定的概率去嘗試向這個方向走,而這個概率隨着T(這里的T是時間)的增加而減少。
自己的一點想法:模擬退火算法,當然是一個隨機算法,但是其中的精髓就是會講這個過程收斂,不然不管在什么時候都可能隨機出新的。
另外:模擬退火算法是一種改進的Metropolis算法(也稱為Monte Carlo方法,20世紀最好的十個算法之一):旨在通過模仿隨機過程,來得到具有難以控制的大量的自由度的數值問題和具有階乘規模的組合問題的近似解法。Metropolis源自“曼哈頓計划”- -。
Boltzmann Machine
Boltzmann Machine模型
這里主要是去和確定神經網絡(比如BP)比較,Boltzmann Machine的功能:
- BM是反饋神經網絡,對稱鏈接,無自反饋。
- BM也是多層網絡,包括:input、hide、output。
- BM中的神經元是隨機神經元,其狀態是用概率來確定的。
能量函數為:
其中:
- wij:狀態i和j之間的連接強度,i=j時,wij=0。
- xi:狀態,只能是0、1。
- θi:i的閥值。
神經元的狀態為二值,neti表示i的狀態從0變成的能量差,那么:
根據Boltzmann分布得到:
平衡態
不停地選擇一個節點更新它的狀態,等到在一個固定溫度運行足夠長的時間后,網絡節點的概率是依賴於網絡中節點的能量。
訓練
問題
RBM