1. 程式人生 > >腦皮層學習演算法 ---nupic的深入學習(一)

腦皮層學習演算法 ---nupic的深入學習(一)

1.nupic簡介

1.1 背景

說到AI,我們首先就會想到深度學習,tensorflow等。目前以深層的神經網路佔據了AI的半壁江山。從本質上來說,深度學習所表述的神經網路,其實是源自於一個“類腦”的想法—通過模仿人類大腦的神經元的相互連線,結合權重,反向傳播等數學知識所構成。但深度學習的神經網路運作仍與人類大腦真實運作情況相去甚遠。

nupic是一個在github上開源了的AI演算法平臺,相比於深度學習,其更為接近人類大腦的執行結構。其演算法的理論依據,就是純粹的生物神經學知識,類似突觸連線與分解,神經元,多個腦皮層的互動,動作電位等等。工程實現也基於此。

nupic是由Jeff Hawkins等人創造的演算法,其目的是生產出更為接近真實人腦運作的AI。其理論依據主要是人腦中處理高階認知功能的新皮質部分的運作原理。目前,nupic還遠遠無法模擬整個人腦。不過,這已經是機器學習上的重大進步了。

NuPIC 並不是唯一開源的機器學習演算法,但是它有自己的獨特之處。Taylor 說,許多機器學習演算法無法適應新模式,而 NuPIC 的運作接近於人腦,“當模式變化的時候,它會忘掉舊模式,記憶新模式”。如人腦一樣,CLA 演算法能夠適應新的變化。“如果有一天,你醒來的時候發現過去認為是藍色的東西變成了紅色,一開始會感到不安,”他說,“但你會逐漸地適應”。

1.2 nupic的作用

nupic的運作其實比較類似大腦,接受外部輸入(時間序列),學習其模式,並不斷糾錯,然後在這過程形成經驗,進行預測。因此,nupic可用於預測以及異常檢測,適用面非常廣(目前認為,只要是時間序列都可以)。其內部結構決定了其有很強的記憶和學習功能。
nupic最特別的一點,也是其相對於其他深度學習演算法最大的不同,那就是,nupic模型一旦建好,就能夠學習完全不同的多個輸入模式,並對他們同時做出預測和異常檢測。這一點就類似人腦,大腦不同部位負責不一樣的學習任務。

而深度學習的演算法就做不到這點,一個演算法面對一個同樣的輸入模式。但這只是深度學習與nupic的不同,並無優劣。

nupic的預測也很有趣,在當前時刻,演算法能夠預測接下來的幾個時間點的數值(nupic是針對時間序列開發的)。另外,預測的結果並不止一個。nupic會預測好幾個可能的數值,並給出對應的概率。

nupic的魯棒性很強,這我多次測試過,確實如此。另外,預測能力也非常強,經歷幾次異常值後,在不妨礙系統辨認出其是異常值的情況下,演算法會將具體異常值也預測出來。

nupic的缺點就是,調參比較難。這點還在學習。

2.nupic資源

3.演算法深入介紹

筆者花了一段時間,閱讀了演算法的英文白皮書,大致弄清了整個演算法的框架。下面將會詳細講述。筆者會先講述大體框架,然後講述一些神經學的概念,然後再結合這些概念,詳細講解結構細節。

3.1 總體框架

nupic的核心其實就是一個演算法,HTM演算法。在htm演算法中,有區域/層級的概念。htm演算法的框架大致如下:
這裡寫圖片描述

如圖就是一個htm多層網路的框架圖。最下面的是外部輸入,演算法接受的是被編碼器編碼過的時間序列。最下面的箭頭往上,就是一級級的區域,也稱層級。最上面的箭頭,就是輸出。上下層之間都有前饋和反饋(但在白皮書沒有講述反饋這一部分)。

所以htm網路也是神經網路的一種,看起來是不是很像卷積網路,但實際上,內部原理完全不一樣。所以這裡可以完全忘記卷積網路。這張框架圖可以用人的大腦皮層運作來描述:每一層的層級,就類似於人腦中的每層腦皮質,然後每一層裡面,就包含了無數的神經元,以及聯絡神經元的突觸

每一層級大概長這樣子:

這裡寫圖片描述

這裡有幾個概念需要知道:
cell —-就是細胞,上圖中圓圓的球狀
柱狀區域 —-上圖中4個cell組合而成的一個列。
區域 —就是層級,一個二位平面的柱狀區域就是一個區域了。

3.2 神經學的概念

在這裡講述的概念,都是在htm層級中用到的,筆者會結合htm網路的框架進行描述

a. 神經元
—就是層級中的cell。每個cell由幾部分組成:細胞核,軸突,樹突。
這裡寫圖片描述

如圖,類似樹狀的就是樹突,長長的灰色的帶狀就是軸突。每個細胞都會有很多樹突,一個軸突。

在htm中,細胞有兩種樹突:近端樹突和遠端樹突。

近端樹突會接收外部輸入序列的前饋輸入
遠端樹突會連線到同層區域的細胞的輸入

b.樹突區域
HTM 細胞有相當真實的(因此也是複雜的)樹突模型。根據理論每個 HTM 細胞有一個接近細胞核的樹突和許多末端樹突,我們稱之為近端樹突和遠端樹突。靠近端樹突接受前饋輸入,遠端樹突接受附近的細胞的橫向輸入。有一類抑制神經元制約著整個柱狀區域的細胞對相似前饋輸入的響應。為了簡化,我們用一個柱狀區域共享的樹突來代替每個細胞上的近核樹突。

一個細胞有很多個樹突區域。

c.突觸
樹突與軸突相連的部分,因此,突觸是連線到樹突區域的。在htm中,一個細胞有非常多的突觸。對於突觸,有兩個概念:潛在突觸和活躍突觸。
一個樹突區域就對應這一堆潛在突觸,對於這些突觸,若他們的“連通值”超過了閾值,他們就會變成活躍突觸。那什麼是“連通值”?這是對每個潛在突觸設定的標量。一個突觸的連通值是指樹突與軸突之間連通性的程度。從生物學上講,
這一程度從完全不連線開始,到剛開始形成一個突觸但仍未連線,再到滿足連線的最低要求,最後滿足最大連線。連通值是一個關於突觸的標量,值域為 0.0 到 1.0。學習的過程包含了增加或減少突觸的連通值。當一個突觸的連通值超過閾值時,它就是連通的並且權值為1。當一個突觸的連通值小於閾值,它就是不連通的且權值為0,因此,突觸權值是二元性的。

3.3 內部細節

這裡寫圖片描述

如圖,這就是htm的演算法架構圖—–外部輸入到第一層,然後從第一層往上,不斷將資訊提取出來,送到高層,然後高層繼續這一過程,然後輸出。在這個架構裡面,有3步工作要做:

  1. 構建輸入的稀疏離散表徵
  2. 在有先前輸入的環境裡構建輸入的表徵
  3. 在有先前輸入的環境里根據當前輸入構建預測

a.構建輸入的稀疏離散表徵

首先來解釋,什麼是稀疏離散表徵?

如下圖,就是一個稀疏離散表徵,簡稱SDR
這裡寫圖片描述
深色的細胞就是一個表徵,對低層輸入的表徵,無色的代表沒有啟用,可見這是個離散稀疏分佈的。

對於被encoder編碼過的資訊,已經是一段很長的二進位制編碼,比如裡面有60%的1,40%的1,一定程度上,可以說這是稀疏的,當輸入到區域後,這段二進位制編碼會改變區域中的突觸的連通情況,從而細胞被啟用,這樣區域就有了一個新的表徵。這種表徵會比原始輸入更為稀疏,比如只有2%的1

引用一段關於SDR的特性描述:

這裡寫圖片描述

b.在有先前輸入的環境裡構建輸入的表徵

完成構建SDR後,即已經有了先前輸入環境後,需要做的工作就是在這基礎上,基於一些規則構重建輸入的一些表徵

這裡寫圖片描述

圖2.1的時候,我們可以看到,柱狀區域是整條都被啟用的,但圖2.2就不是了。變成這樣,基於的原則是這樣的:
這裡寫圖片描述

基於這樣,就會有柱狀區域裡,有一些是全部細胞都啟用的,有一些只是啟用其中一個或兩個的。

c.在有先前輸入的環境里根據當前輸入構建預測

這一步的任務就是“基於過去預測未來”。因為SDR這樣的結構,區域是擁有記憶,並糾錯的功能的。

預測的過程大致如下:當基於b中原則重構了輸入表徵後,細胞就存在兩種狀態:啟用(active)以及不啟用的,但預測是基於細胞的第三種狀態—預測態(predictive state)。大致實現如下:當一個細胞被激活了,那麼他就會跟附近前一刻被啟用的細胞進行突觸上的連線,一旦連線完成,所有細胞(已經被啟用的例外)會遍歷自己的突觸連線,如果連線到活躍細胞(即被啟用的細胞)超過一定閾值,就會被置為預測態。
這裡寫圖片描述
而所有被置為預測態的細胞集合的表徵就是我們想要的“預測”,而在htm中,會有一個classifier模組,將這個“預測”轉為數值型的輸出。

值得一提的是,htm的預測不是預測一步,會預測接下來的好幾步。

在這ABC三步裡,在htm實現裡其實是分成了兩個部分—-時間沉積池和空間沉積池。時間沉積池對應於將輸入構建成SDR,空間沉積池對應於為表徵構建上下文環境以及實現預測,即bc兩步。

4.htm特性分析

關於時間空間沉積池,我留在下一篇文章講述。接下來我會分析一下HTM的特性。

htm是如何實現記憶和糾錯功能的?

在將外部輸入轉化為SDR後,輸入就相當於“儲存”在區域中了,當下一時刻的輸入到來時,由於SDR是稀疏離散的,所以相似輸入所導致的的SDR也是相似的。並且區域有多層,這樣的結構就會導致,越往上走,層級就越穩定。這樣其實也加強了預測的魯棒性(抗噪)。

實現記憶和糾錯,是時間沉積池的作用。噹噹前時刻的輸入到來後,當前啟用的細胞會跟上一時刻啟用的細胞建立起突觸,這樣就形成了一種“上下文環境”,也是為什麼htm演算法能識別序列的原因。建立起突觸後,會有部分的細胞進入預測態(擁有活躍突觸就可以進入),那麼就實現了預測,啟用的細胞也儲存了當前的資訊。

如何實現糾錯?當一個意料之外的輸入進來時,激活了相對應的細胞,這些細胞所在的柱狀區域是沒有細胞上一時刻處於預測狀態的,所以被啟用的細胞所在的柱狀區域,整條都會被啟用。這一點可以使得,區域學到了新模式。

5.一些學習過程的疑惑

1.在白皮書裡,所說明的“預測”有兩種說法,一種是處於預測態的細胞,一種是預測態的細胞加上被啟用的細胞。目前仍不是很確定。