專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

皮質(zhì)學(xué)習(xí)(Hierarchical Temporal Memory)

作者:佚名   來(lái)源:來(lái)自醫(yī)眾生的博客   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月10日   【字體:

從現(xiàn)在起開始陸陸續(xù)續(xù)寫一些吧,大概的計(jì)劃是將Pattern Recognition and Machine Learning的學(xué)習(xí)體會(huì)寫一個(gè)專題,然后繼續(xù)deep learning方面的論文學(xué)習(xí),當(dāng)然也有編程方面的東西,希望能夠好好堅(jiān)持。下面是近期看的層級(jí)實(shí)時(shí)網(wǎng)絡(luò)(HTM)的總結(jié),HTM也是deep model的一種。這部分內(nèi)容基本是本人脫離論文進(jìn)行的回顧,如果有錯(cuò)誤,各位看官還望原諒及指正,謝謝!

 

PART ONE: OUTLINE

 

皮質(zhì)學(xué)習(xí)算法

Cortical Learning Algorithm

 

摘要

Abstract

 

緒論

Introduction

1、皮質(zhì)學(xué)習(xí)算法的歷史沿革

2、皮質(zhì)學(xué)習(xí)算法的主要思想

3、報(bào)告的主要框架

 

George博士論文中的層級(jí)實(shí)時(shí)記憶算法

HTM: version I in George’s PhD thesis

1、整體框架

2、識(shí)別

3、學(xué)習(xí)

4、總結(jié)

 

Numenta白皮書中的層級(jí)實(shí)時(shí)記憶算法

HTM: version II in Numenta’s White Paper

1、整體框架

2、Sparse Distributed Representation

3Spatial Pooler

4、Temporal Pooler

5、與Version I的內(nèi)在聯(lián)系與主要區(qū)別

6、總結(jié)

 

層級(jí)實(shí)時(shí)記憶算法的實(shí)現(xiàn)

The implementation of HTM

1、Encoder

2、Spatial Pooler

3、Temporal Pooler

4CLA Classifer

5、總結(jié)

 

總結(jié)與展望

 

參考文獻(xiàn)

 

 

 

PART TWO: REPORT

 

皮質(zhì)學(xué)習(xí)算法

Cortical Learning Algorithm

 

摘要

Abstract

皮質(zhì)學(xué)習(xí)算法是一種對(duì)新大腦皮質(zhì)層結(jié)構(gòu)與功能運(yùn)作進(jìn)行人工模擬的算法。本篇報(bào)告主要闡述了皮質(zhì)學(xué)習(xí)算法的發(fā)展概況,核心算法(Hierarchical Temporal Memory: HTM)以及算法中的關(guān)鍵技術(shù)。通過(guò)對(duì)HTM算法各設(shè)計(jì)細(xì)節(jié)的分析,對(duì)HTM算法的演變進(jìn)行學(xué)習(xí)和思考,加強(qiáng)對(duì)算法核心內(nèi)容,如空間模式與時(shí)間模式的提取,稀疏離散表征等的理解。同時(shí),對(duì)開源代碼及相關(guān)報(bào)告材料的學(xué)習(xí),加強(qiáng)對(duì)皮質(zhì)學(xué)習(xí)算法細(xì)節(jié)的把握。

 

緒論

Introduction

 

1、皮質(zhì)學(xué)習(xí)算法的歷史沿革

    Jeff Hawkins在其2004年出版的著作“On Intelligence”,提出了一種大腦皮層運(yùn)作的理論,他稱之為記憶-預(yù)測(cè)框架[1].該框架主要闡述了大腦皮層運(yùn)作的一些原則,比如新皮層是建立一種對(duì)空間與時(shí)間的模式,目的在于預(yù)測(cè),它具有層級(jí)結(jié)構(gòu),可以通過(guò)記憶模式與序列進(jìn)行建模,層級(jí)之間信息存在上下互相傳遞等。這就是后來(lái)皮質(zhì)學(xué)習(xí)算法的核心思想。

    2005324,他與Donna Dubinsky, Dileep George等人創(chuàng)建了Numenta公司,將該框架的思想付諸實(shí)踐,這里成為皮質(zhì)學(xué)習(xí)算法發(fā)展的主要陣地。2005,GeorgeJeff先后發(fā)表兩篇文章,第一篇[2]介紹了HTM的雛形,給出基本結(jié)構(gòu),學(xué)習(xí)過(guò)程,以及利用Bayesian Belief Propagation理論解釋識(shí)別和重建過(guò)程,并通過(guò)實(shí)驗(yàn)展示了HTM的性質(zhì),對(duì)一些生物學(xué)現(xiàn)象進(jìn)行解釋;第二篇[3]主要介紹了利用解剖學(xué)知識(shí)和皮層功能,假設(shè)自然總是考慮利用最少的資源,同時(shí)假設(shè)皮質(zhì)集成電路(科學(xué)家假設(shè)大腦像集成電路一樣由很多結(jié)構(gòu)和功能相似單元組成,稱之為皮質(zhì)集成電路:cortical microcircuits)信息傳遞符合Bayesian Belief Propagation,來(lái)推導(dǎo)出皮質(zhì)集成電路的組成方式。本文章為George的博士論文中對(duì)皮質(zhì)集成電路的組織方式(一個(gè)區(qū)域中細(xì)胞層次組織與每個(gè)細(xì)胞層的功能等)提供理論解釋。2008,George的博士論文為前兩篇文章的綜合,詳盡地闡述了HTM的生物學(xué)依據(jù),HTM的結(jié)構(gòu)與識(shí)別、學(xué)習(xí)方式,HTM的泛化以及皮質(zhì)集成電路的數(shù)學(xué)理論。2009,JeffGeorge發(fā)表一篇關(guān)于序列記憶的文章[4],主要闡述了序列記憶的約束條件,序列記憶模型的生物學(xué)意義與具體算法(State-Splitting Algorithm)。

    2010Dileep George離開Numenta,D.Scott Pheonix創(chuàng)建了Vicarious.com。在這里,George基于原來(lái)的HTM算法,給出了一些皮質(zhì)學(xué)習(xí)的主題(themes)[5],如基于有限樣本的非監(jiān)督學(xué)習(xí)等。在這里他提出了HTM的改進(jìn)算法--Recursive Cortical Network(RCN)算法[6],按照George的話,可以推測(cè)應(yīng)該是在原HTM的各層的相鄰節(jié)點(diǎn)nodes之間加入了連接(connections),他們將該技術(shù)應(yīng)用到驗(yàn)證碼的自動(dòng)識(shí)別。而Numenta近期也發(fā)布了自己歷時(shí)9年研發(fā)出的產(chǎn)品Grok[7],來(lái)做異常檢測(cè)。

    對(duì)于皮質(zhì)學(xué)習(xí)算法的研究,目前知道的除Jeff等人這個(gè)團(tuán)隊(duì)發(fā)表的文章,其他人的文章很少見,其中Davide Maltoni是其中一位。他在其2011年關(guān)于HTM的技術(shù)報(bào)告[8]中詳細(xì)闡述了HTM的結(jié)構(gòu)和學(xué)習(xí)、識(shí)別流程,并對(duì)其中的給coincidences歸組分類算法進(jìn)行了改進(jìn)。2014,他又提出了對(duì)HTMIncremental Learning方法[9]。

    由于目前找到的關(guān)于Vicarious的論文或者相關(guān)材料比較有限,主要基于Dileep George等人的相關(guān)論文以及Numenta公司公開的白皮書、教學(xué)視頻以及源代碼進(jìn)行學(xué)習(xí)與介紹。

 

2、皮質(zhì)學(xué)習(xí)算法的主要思想

    皮質(zhì)學(xué)習(xí)算法是一種對(duì)新大腦皮質(zhì)層結(jié)構(gòu)與功能運(yùn)作進(jìn)行人工模擬的算法。它的核心算法是層級(jí)實(shí)時(shí)存儲(chǔ)算法(Hierarchical Temporal Memory),它是基于Jeff的記憶-預(yù)測(cè)框架來(lái)進(jìn)行設(shè)計(jì)。在本算法里面,如下內(nèi)容是非常核心與關(guān)鍵的:層級(jí)結(jié)構(gòu)(Hierarchy),空間與時(shí)間模式不變表征(Invariant Representations of Spatial Patterns and Temporal Patterns),序列記憶(Sequence Memory)。對(duì)于這些內(nèi)容,在具體介紹時(shí),將進(jìn)行詳細(xì)分析,這里給出一些綜述。

    層級(jí)結(jié)構(gòu):解剖學(xué)研究已經(jīng)顯示,新大腦皮質(zhì)層的功能(可能)由一個(gè)區(qū)域與一個(gè)區(qū)域連接這種層級(jí)結(jié)構(gòu)來(lái)實(shí)現(xiàn),HTM算法中,也模擬了這種區(qū)域與區(qū)域之間的層級(jí)結(jié)構(gòu)。當(dāng)然,層級(jí)結(jié)構(gòu)在很多模型,包括Deep Model中都有應(yīng)用,這是因?yàn)檫@種結(jié)構(gòu)具有很多良好的性質(zhì),之后會(huì)詳述。

    空間與時(shí)間模式的不變表征:很多Deep Models都對(duì)模式的不變表征進(jìn)行了很好的探索,但大多數(shù)停留在空間模式的不變表征上,但是,當(dāng)代表兩種物體的空間模式集(子空間)有交集的時(shí)候,這些模型就很不容易利用空間識(shí)別分類。所以HTM引入了時(shí)間,通過(guò)尋找模式之間的時(shí)間關(guān)系,在時(shí)間相近,模式接近的這種假設(shè)下,就能夠更好地區(qū)分不同模式。

    序列記憶:序列記憶是時(shí)間模式不變表征的關(guān)鍵,HTM通過(guò)每個(gè)節(jié)點(diǎn)內(nèi)部建立馬爾可夫鏈,或者在細(xì)胞橫向間訓(xùn)練突觸權(quán)值來(lái)達(dá)到記憶不同模式的前后轉(zhuǎn)移概率,對(duì)序列的變化進(jìn)行記憶的效果。

 

3、報(bào)告的主要框架

    本報(bào)告主要分為如下五個(gè)部分。第一部分,緒論。介紹了皮質(zhì)學(xué)習(xí)算法的發(fā)展流程,及其核心思想。George博士論文中的HTM算法將在第二部分給出。隨后,Numenta的白皮書所提出的HTM將在第三部分進(jìn)行詳細(xì)闡述,同時(shí)與第二部分內(nèi)容進(jìn)行關(guān)聯(lián)、對(duì)比。第四部分主要闡述Nupic對(duì)HTM算法的實(shí)現(xiàn)。第五部分,對(duì)HTM的特性以及適用性、之后發(fā)展進(jìn)行總結(jié),并對(duì)自己的學(xué)習(xí)進(jìn)行一定總結(jié)。

 

George博士論文中的層級(jí)實(shí)時(shí)記憶算法

HTM: version I in George’s PhD thesis

 

層級(jí)實(shí)時(shí)記憶算法是模擬新皮層大腦結(jié)構(gòu),試圖模仿起功能的算法。首先,層級(jí)實(shí)時(shí)算法采用了層級(jí)結(jié)構(gòu),HTM算法由低層級(jí)到高層級(jí)依次提取low-levelhigh-level的不變特征,或者說(shuō)更高層是低一層不變表示的重新組合。如果能夠在底層級(jí)學(xué)習(xí)到事物的一些最基本的模式,再通過(guò)高層級(jí)進(jìn)行再組合,那么可以通過(guò)學(xué)習(xí)某些物體的模式時(shí)而達(dá)到將新事物的基本模式也包含的情況,即有較高的泛化能力。同時(shí),通過(guò)層級(jí)結(jié)構(gòu),底層級(jí)學(xué)習(xí)一些low-level的不變特征或者子模式后,直接可以輸入到高層進(jìn)行學(xué)習(xí),高層級(jí)不用再對(duì)low-level的特征或者模式進(jìn)行再學(xué)習(xí),提高學(xué)習(xí)訓(xùn)練的效率,也減小了存儲(chǔ)空間。

HTM算法另一個(gè)最突出的特點(diǎn)是引入了時(shí)間模式。之前很多deep model的層級(jí)結(jié)構(gòu)大多只關(guān)注層級(jí)之間的連接(connections),這樣使得他們能夠提取較好的空間模式;但是他們沒(méi)有考慮到層級(jí)內(nèi)部節(jié)點(diǎn)的連接,這種連接能夠?qū)W習(xí)到序列模式在連續(xù)時(shí)間內(nèi)的轉(zhuǎn)移關(guān)系,進(jìn)行序列記憶,在表征物體的空間模式集有交集的時(shí)候,通過(guò)時(shí)間相近,模式相似的準(zhǔn)則可以增加物體識(shí)別分類的精度。下面,通過(guò)參考David的技術(shù)報(bào)告[]George的博士論文[],將對(duì)George博士論文的HTM方面的理論進(jìn)行詳述。

 

1、整體框架

如下圖1為一個(gè)三層的HTM示意圖,方塊表示節(jié)點(diǎn)?梢钥闯觯HTM具有樹狀的層級(jí)網(wǎng)絡(luò)結(jié)構(gòu)。高一層一個(gè)節(jié)點(diǎn)與其相鄰低一層的多個(gè)節(jié)點(diǎn)相連接, HTM的第一層節(jié)點(diǎn)直接與輸入相連(可以是overlapping)。而某一個(gè)節(jié)點(diǎn),不斷向下一層回溯,到輸入,他所處理的輸入范圍就是其感受域,level one中的每個(gè)節(jié)點(diǎn)的感受域是1,level two的是2,level three的是4。

節(jié)點(diǎn)是HTM中記憶與預(yù)測(cè)的基本單元。在節(jié)點(diǎn)中,主要存有三種數(shù)據(jù),C(coincidences的集合), G(temporal groups的集合,每個(gè)group實(shí)際上是coincidences的集合)transition probability matrix(為每個(gè)group中各個(gè)coincidence之間的轉(zhuǎn)移概率組成的矩陣)。

每一個(gè)處于中間層(除開第一層與最后一層)節(jié)點(diǎn),都有唯一一個(gè)父節(jié)點(diǎn),與多個(gè)子節(jié)點(diǎn)。HTM對(duì)空間模式的提取,依賴的是父節(jié)點(diǎn)對(duì)各子節(jié)點(diǎn)的子模式的pooling,而時(shí)間模式與序列記憶的實(shí)現(xiàn),依賴于節(jié)點(diǎn)中不同的temporal groups以及其各coincidences組成的markov chains。通過(guò)記憶不同ordermarkov chains,可以由一個(gè)coincidences往前或者后推知另外coincidences發(fā)生的可能性,從而實(shí)現(xiàn)序列記憶。而每個(gè)group也是由這種coincidences之間轉(zhuǎn)移概率最大化分類,以獲得時(shí)間相近,模式相似的結(jié)果。

對(duì)于一個(gè)HTM模型,其識(shí)別的整體流程是:當(dāng)某一層各節(jié)點(diǎn)分別接收來(lái)自其子節(jié)點(diǎn)的輸入時(shí),開始進(jìn)行識(shí)別,其結(jié)果作為父節(jié)點(diǎn)的部分輸入。而對(duì)于一個(gè)HTM模型的訓(xùn)練學(xué)習(xí),首先要對(duì)最低層進(jìn)行訓(xùn)練,訓(xùn)練完畢后,再對(duì)高一層進(jìn)行訓(xùn)練,而輸入來(lái)自低層按識(shí)別流程處理得到的結(jié)果。下面幾節(jié),將從單個(gè)節(jié)點(diǎn)的訓(xùn)練與識(shí)別進(jìn)行展開介紹。

1 HTM結(jié)構(gòu)示意圖

2、學(xué)習(xí)

在學(xué)習(xí)階段,大致分為3步,對(duì)新模式進(jìn)行記憶,轉(zhuǎn)移概率矩陣的計(jì)算,對(duì)模式進(jìn)行分組獲取temporal groups。

I,模式進(jìn)行記憶。當(dāng)一個(gè)節(jié)點(diǎn)接收到一個(gè)新的模式時(shí),首先是將輸入模式與節(jié)點(diǎn)中已存在的模式進(jìn)行比較(如,比較距離),如果該輸入與某個(gè)存在的模式足夠近,那么就激活該模式。如果沒(méi)有找到足夠近的模式,那說(shuō)明這個(gè)輸入模式是一個(gè)新的模式,將他存入模式集中,以待后用。這就是模式的記憶。

II,轉(zhuǎn)移概率矩陣的計(jì)算。當(dāng)一個(gè)模式被激活,回顧之前激活的模式,將矩陣中對(duì)應(yīng)兩者轉(zhuǎn)移關(guān)系的位置自增1。當(dāng)然,HTM也可以存儲(chǔ)多步的轉(zhuǎn)移,回顧數(shù)步以前被激活的模式,存儲(chǔ)其轉(zhuǎn)移關(guān)系。在所有模式輸入完畢,對(duì)轉(zhuǎn)移矩陣每行或每列(視存儲(chǔ)情況定)進(jìn)行歸一化,得到轉(zhuǎn)移概率。

IIItemporal groups的計(jì)算。根據(jù)轉(zhuǎn)移關(guān)系的統(tǒng)計(jì),可以知道哪些模式轉(zhuǎn)移相對(duì)頻繁,而哪些模式之間轉(zhuǎn)移概率相對(duì)較大。Temporal groups的計(jì)算的原則就是基于此,選取一些轉(zhuǎn)移較頻繁的模式作為種子點(diǎn),從該種子點(diǎn)向與其轉(zhuǎn)移概率最大的點(diǎn)進(jìn)行生長(zhǎng),達(dá)到一定數(shù)目停止生長(zhǎng),從而實(shí)現(xiàn)temporal groups的分類。而每個(gè)group以及其coincidences之間組成的markov chain是模型序列記憶的關(guān)鍵。

需要注意的是,在訓(xùn)練完畢一層之后,再訓(xùn)練更高層時(shí),首先利用識(shí)別流程,將前些已經(jīng)訓(xùn)練好的層級(jí)的結(jié)果輸出到更高層,進(jìn)行學(xué)習(xí)訓(xùn)練,但是這里,一般將concatenation的各輸入(子節(jié)點(diǎn)的輸出)中最大值位置設(shè)為1,而其他位置置為0David處理方法是每個(gè)coincidences#(子節(jié)點(diǎn)數(shù)目)維向量,每個(gè)元素存的是最大值位置索引,感覺(jué)這種省存儲(chǔ)空間)。這實(shí)質(zhì)上是一種稀疏化的處理,之后在介紹Numenta里面的HTM與現(xiàn)在介紹的HTM的聯(lián)系和區(qū)別時(shí)還會(huì)提及。

3、識(shí)別

在識(shí)別階段,假設(shè)每個(gè)節(jié)點(diǎn)的CG,transition probability matrix已經(jīng)訓(xùn)練好。一個(gè)節(jié)點(diǎn)的輸入過(guò)程一般分為兩步,首先計(jì)算對(duì)當(dāng)前輸入,提取所有coincidences對(duì)該輸入的certainty;其次是計(jì)算對(duì)當(dāng)前輸入,提取所有groups對(duì)該輸入的certainty。

I,提取coincidencescertainty。對(duì)于第一層的節(jié)點(diǎn),這種certainty通常是通過(guò)考量輸入與模式之間的近似程度來(lái)實(shí)現(xiàn),而對(duì)更高層,coincidences里面存的是各個(gè)子節(jié)點(diǎn)哪些temporal groups共同出現(xiàn),所以這些子節(jié)點(diǎn)的temporal groups對(duì)該輸入的certainty共同組成該coincidence對(duì)該輸入的certainty

II,提取groupscertainty。同理,groups里面是指哪些coincidences會(huì)共同出現(xiàn),一個(gè)groupscertainty由這些coincidencescertainty共同組成(都是概率相乘)。

III,關(guān)于識(shí)別的一些思考

 

考慮上面公式(來(lái)自George論文,公式含義不細(xì)說(shuō)),在序列記憶的情況下,實(shí)際上每個(gè)groupcertainty不僅僅考慮了他包含的coincidences對(duì)他的貢獻(xiàn),同時(shí)通過(guò)序列轉(zhuǎn)移情況,能夠知道某個(gè)coincidence在前面已有序列條件下,現(xiàn)在出現(xiàn)的概率,這種序列記憶能夠更好地反映出一個(gè)coincidence對(duì)某個(gè)輸入的certainty。當(dāng)然,在David的報(bào)告中,大多數(shù)情況下以下圖中公式(4.4)為基本,沒(méi)有考慮多步的轉(zhuǎn)移。

考慮下面示意圖2(參考David論文),一個(gè)類別可能主要有部分輸出節(jié)點(diǎn)中coincidencescertainty來(lái)確認(rèn),而這些coincidences只由部分子節(jié)點(diǎn)的groups共同生成,如此類推下去,可以知道一個(gè)類別的模式由部分最基本的模式組合表達(dá),就印證了當(dāng)系統(tǒng)學(xué)習(xí)到一些基本模式后,對(duì)于具有這些基本模式的事物具有泛化能力。

 

2 HTM泛化能力的示意解釋,見正文

注意這里將所有的模式對(duì)輸入的certainty都計(jì)算在內(nèi),這與訓(xùn)練中只激活一個(gè)模式是有區(qū)別的,在訓(xùn)練中如果將所有模式激活就無(wú)法得到轉(zhuǎn)移概率矩陣了。同樣這與Numenta白皮書里的cell激活方式也稍有不同,下面會(huì)再講。

4、總結(jié)

這一部分主要對(duì)George文章中的HTM算法進(jìn)行基本的總結(jié)。通過(guò)對(duì)于兩篇文章的綜合,可以對(duì)于該HTM模型的所有細(xì)節(jié)具有比較清楚的認(rèn)識(shí),包括如何處理圖像(如按zig-zag對(duì)圖像序列化,圖像像素或者子塊或者對(duì)像素鄰域提取的特征如何輸入到節(jié)點(diǎn))等都能有具象的認(rèn)識(shí)。但這里只是回顧了一些主要的流程。核心點(diǎn):通過(guò)高層對(duì)低層模式的再組合,提升系統(tǒng)的泛化能力;每個(gè)group實(shí)際上是對(duì)序列的記憶,轉(zhuǎn)移概率大小體現(xiàn)了模式之間在時(shí)間上相近程度。

 

Numenta白皮書中的層級(jí)實(shí)時(shí)記憶算法

HTM: version II in Numenta’s White Paper

   

HTM版本[10]George博士論文的版本上進(jìn)行了一些修改與改進(jìn)工作,在新版本中撤除了節(jié)點(diǎn)的概念,更多地去模擬新皮質(zhì)的結(jié)構(gòu),引入了區(qū)域,細(xì)胞,樹突,突觸等生物學(xué)領(lǐng)域的概念。但是最基本的原則是沒(méi)有變化的,就是層級(jí)結(jié)構(gòu),記憶-預(yù)測(cè)等。當(dāng)然,新版本里面還引入了稀疏離散表征(sparse distributed representation)的概念。

1、整體框架

在新版HTM中,層與區(qū)域的概念相似,如圖3中為一個(gè)層級(jí)(區(qū)域:region)的示意圖,該層級(jí)接收其下一層的信息,處理后,輸出送至更高層進(jìn)行處理。每層有許多列(column)組成,形成二維平面(非必須),而每個(gè)列中包含有多種細(xì)胞(cell)組成。在每個(gè)列與輸入之間,有一個(gè)樹突(dendrite segment),它有許多潛在突觸(synapse),可能會(huì)與輸入中的部分子集相連接;而每個(gè)細(xì)胞有許多樹突,每個(gè)樹突也有許多潛在突觸,可能與其他細(xì)胞進(jìn)行橫向連接。在圖3中沒(méi)有顯示出來(lái)。

對(duì)于HTM的識(shí)別、學(xué)習(xí)都分為兩個(gè)流程,首先對(duì)輸入進(jìn)行稀疏離散表征,完成spatial poolingsp),學(xué)習(xí)階段會(huì)對(duì)突觸的權(quán)值進(jìn)行更新;其次,基于spatial pooler的結(jié)果,進(jìn)行橫向信息傳遞、預(yù)測(cè),完成temporal poolingtp),學(xué)習(xí)階段也會(huì)對(duì)突觸的權(quán)值進(jìn)行更新。Temporal pooling的輸出作為更高層的輸入,重復(fù)剛才的過(guò)程。識(shí)別和學(xué)習(xí)沒(méi)有明顯界限,在識(shí)別階段可以將學(xué)習(xí)的部分功能關(guān)閉即可。下面小節(jié)將以一個(gè)區(qū)域?yàn)槔瑢?duì)HTM的識(shí)別與學(xué)習(xí)進(jìn)行比較詳細(xì)地介紹。

注:需要特別指出的是,每個(gè)column如果被激活(之后會(huì)解釋什么是激活狀態(tài)),那么它是能夠表征模式的部分含義的,對(duì)于一個(gè)輸入模式,就被一組稀疏的活躍column進(jìn)行有效表征。但是我們知道,“ABCD”與“EBCF”中的模式BC是不一樣的,那么在HTM中如何實(shí)現(xiàn)不同上下文的表征呢?HTM中,每個(gè)column擁有很多細(xì)胞,在不同的上下文時(shí),激活的細(xì)胞是不一樣的,這樣就達(dá)到了能夠表征不同上下文中相同內(nèi)容的目的。

 

3 HTM一個(gè)區(qū)域(層級(jí))的結(jié)構(gòu)

2、Sparse Distributed Representation

在介紹sptp之前,首先要對(duì)稀疏離散表征進(jìn)行描述。稀疏離散表征是HTM的重要基礎(chǔ),序列記憶等都基于稀疏離散表征。稀疏離散表征是將自然界語(yǔ)言(如圖像,文本,音頻等)轉(zhuǎn)換為二進(jìn)制序列,而且是稀疏的。稀疏離散表征的每一個(gè)活躍(值為1)的bit都能表達(dá)模式的部分含義,但是僅僅一個(gè)bit又是不夠的,只有整體才能表達(dá)一個(gè)完整的模式。稀疏離散表征具有很多很好的性質(zhì):

I,在比較時(shí),只要兩個(gè)不同的稀疏離散表征具有一些相同的活躍bits,那么這兩個(gè)稀疏離散表征表達(dá)的模式具有一定的相似性。

II,在存儲(chǔ)時(shí),可以對(duì)稀疏離散表征進(jìn)行subsampling,而能較好地保留其表達(dá)含義。這樣節(jié)省了存儲(chǔ)空間。

III,不同的稀疏離散表征做OR運(yùn)算后,為這些稀疏離散表征的組合,如果一個(gè)新的稀疏離散表征的活躍的bits來(lái)自于這個(gè)組合,那么可以肯定他在這個(gè)集合中的membership。一個(gè)有趣的現(xiàn)象是,當(dāng)訓(xùn)練了序列”ABC”ABD”后,如果輸入“AB”,它所進(jìn)行的預(yù)測(cè)就是“C”與“D”的組合。下面我將介紹如何得到稀疏離散表征。

IV,正是因?yàn)橐粋(gè)bit可能只表示非常少的模式信息,所以對(duì)噪聲不敏感,有些許bits不同的兩個(gè)模式可能也是相似的。

3、Spatial Pooler

    當(dāng)接收到輸入信號(hào)后,HTM中的相應(yīng)區(qū)域要進(jìn)行spatial pooling。主要分為以下幾步:

首先,對(duì)于區(qū)域中的每個(gè)列(column)都有一個(gè)receptive field,來(lái)接收輸入中的子集,其樹突上的活躍突觸(權(quán)值大于一定閾值,初始化時(shí)權(quán)值在閾值附近進(jìn)行隨機(jī)取值)將與輸入的bits連接,如果連接到活躍bit=1)的活躍突觸數(shù)目大于一定閾值時(shí),認(rèn)為該column可以作為活躍column的備選。

然后,為了達(dá)到稀疏表征的目的,不希望太多的column能夠激活,所以在一定的抑制半徑(通過(guò)columns的平均receptive field計(jì)算)內(nèi),只有前n(如n=10,當(dāng)然也可以用總數(shù)的百分比)才能被激活。這樣,將所有滿足條件的columns激活,得到的就是輸入的稀疏離散表征。

在學(xué)習(xí)階段,需要更新權(quán)值,一般希望特定的突觸對(duì)于特定的輸入具有響應(yīng),這樣達(dá)到不同模式具有不同稀疏表征的效果,所以使得活躍column的潛在突觸中,所有連接活躍bits=1)的突觸權(quán)值自增,而連接不活躍bits=0)的突觸權(quán)值自減。其他column的突觸權(quán)值不變。

當(dāng)然,在sp中,有許多細(xì)節(jié)需要注意,比如說(shuō)HTM希望所有的columns都要被用來(lái)進(jìn)行一定模式的表征,所以那些因?yàn)楦采w值(overlap,就是連接活躍bits的活躍突觸數(shù)目)長(zhǎng)期不夠,與那些因?yàn)楦采w值長(zhǎng)期不能進(jìn)入抑制半徑內(nèi)前列的columns突觸權(quán)值進(jìn)行boosting,即增加其權(quán)值。

4、Temporal Pooler

當(dāng)輸入用稀疏離散表征后,得到活躍的columns,然后要進(jìn)行temporal pooling。主要分為以下幾步:

首先,要對(duì)columns里面的細(xì)胞進(jìn)行激活。細(xì)胞的激活分為兩種情況,第一種,區(qū)域之前沒(méi)有做出預(yù)測(cè),那么,對(duì)于sp得到的激活columns中所有細(xì)胞進(jìn)行激活;第二種,區(qū)域之前已經(jīng)做出了預(yù)測(cè),那么,在每個(gè)活躍column中判斷是否有細(xì)胞在前一時(shí)刻被正確預(yù)測(cè),如果有,僅僅激活該細(xì)胞,說(shuō)明符合當(dāng)前上下文環(huán)境,如果沒(méi)有,那么將這一列的所有細(xì)胞進(jìn)行激活,說(shuō)明我還不清楚上下文環(huán)境是什么,所以所有上下文環(huán)境都有可能。而其他沒(méi)有被正確預(yù)測(cè)或者沒(méi)有再激活columns中的細(xì)胞保持或者變成不活躍。

其次,要進(jìn)行預(yù)測(cè)。對(duì)于沒(méi)有被激活的細(xì)胞,觀察其連接的樹突,如果該樹突上連接活躍細(xì)胞的活躍突觸數(shù)目大于一定數(shù)目時(shí),我們認(rèn)為該樹突被激活,然后使得其連接的細(xì)胞被激活,當(dāng)一個(gè)細(xì)胞存在多個(gè)樹突被激活時(shí),進(jìn)行OR運(yùn)算。

在學(xué)習(xí)階段,為了防止細(xì)胞過(guò)多的活躍突觸,從而過(guò)多進(jìn)行預(yù)測(cè),HTM一般希望每個(gè)活躍column中只有一個(gè)細(xì)胞進(jìn)行學(xué)習(xí),在被正確預(yù)測(cè)了的細(xì)胞當(dāng)中,首先計(jì)算該細(xì)胞通過(guò)活躍突觸連接的之前處于學(xué)習(xí)狀態(tài)的細(xì)胞數(shù)目,當(dāng)其大于一定閾值時(shí),進(jìn)入學(xué)習(xí)狀態(tài);而對(duì)于沒(méi)有被正確預(yù)測(cè)的細(xì)胞,選取連接活躍突觸數(shù)目最多的細(xì)胞進(jìn)入學(xué)習(xí)狀態(tài)。對(duì)進(jìn)入學(xué)習(xí)狀態(tài)的細(xì)胞,將其活躍突觸權(quán)值自增,其他突觸權(quán)值自減。而對(duì)于一些之前被預(yù)測(cè),當(dāng)前沒(méi)有被預(yù)測(cè)的(沒(méi)有激活的)細(xì)胞,說(shuō)明之前預(yù)測(cè)有問(wèn)題,所有該細(xì)胞連接的突觸自減。對(duì)于被正確預(yù)測(cè)的細(xì)胞,我們希望觀察它們是否做出了正確的預(yù)測(cè),對(duì)于他們權(quán)值的強(qiáng)化更新,所以先存在隊(duì)列中,待到前進(jìn)一定的time step再進(jìn)行處理。可以看出,如果一個(gè)細(xì)胞被正確預(yù)測(cè),HTM會(huì)強(qiáng)化這種前后細(xì)胞的轉(zhuǎn)移關(guān)系,強(qiáng)化記憶序列關(guān)系。

注:在文章中,對(duì)預(yù)測(cè)的性質(zhì)進(jìn)行了很多解釋。一個(gè)重要的點(diǎn)就是預(yù)測(cè)使得層級(jí)的輸出變得更加穩(wěn)定,這是因?yàn)檩斎肽J娇赡苓B續(xù)變化,但是由于存在序列記憶,HTM會(huì)對(duì)輸出進(jìn)行一步或者多步預(yù)測(cè),變化的輸入可能只導(dǎo)致部分輸出發(fā)生變化,而其中正確預(yù)測(cè)而激活的細(xì)胞,以及那些相同的多步預(yù)測(cè)使得輸出變化比較小。當(dāng)然更高層的輸出更加穩(wěn)定,在上一個(gè)版本的HTM里也存在,因?yàn)樽兓哪J,可能是同屬于一個(gè)markov chain,一個(gè)group,所以在更高一層就有相似的輸出了。

5、與Version I的內(nèi)在聯(lián)系與主要區(qū)別

在這里,主要分析一下第二章與第三章所介紹的兩個(gè)HTM版本有什么內(nèi)在的聯(lián)系,又存在如何的區(qū)別。

I,結(jié)構(gòu)。首先層級(jí)結(jié)構(gòu)相似自不必再說(shuō)。我們看micro-structure。一乍看,前一個(gè)版本里面的存儲(chǔ)記憶的基本結(jié)構(gòu)是節(jié)點(diǎn),這里是column。實(shí)際上兩者是很相似的,這里的columns相當(dāng)于之前的coincidences,而column中的細(xì)胞就是這個(gè)coincidences的不同狀態(tài),就比如之前的coincidences可以通過(guò)state-splitting劃分到不同的markov chain一樣。而細(xì)胞之間的突觸,實(shí)際上是group中的markov chain。如下圖4,是將一個(gè)節(jié)點(diǎn)的CG轉(zhuǎn)換為各種細(xì)胞之間信息的傳遞的結(jié)構(gòu),這明顯地揭示了與新版本的相似之處。區(qū)別在于,group這個(gè)概念不再有,隱含在了稀疏離散表征里面,而且在新版本里面,突觸的連接可以說(shuō)也是稀疏的,二值化后的突觸權(quán)值使得各細(xì)胞間不會(huì)所有信息都進(jìn)行傳遞。


 

4 來(lái)自于George博士論文

II,功能。結(jié)構(gòu)的相似性決定了功能上也基本相似,序列記憶一個(gè)通過(guò)突觸權(quán)值實(shí)現(xiàn),一個(gè)通過(guò)markov chain來(lái)實(shí)現(xiàn)。稍微不同的是,新版本對(duì)輸入進(jìn)行了稀疏離散表征,而在老版本中,如圖中,y會(huì)計(jì)算所有coincidencescertainty。這也是兩個(gè)版本的最大區(qū)別:稀疏離散表征。

6、總結(jié)

在這章,主要介紹了Numenta白皮書中介紹的HTM模型,對(duì)稀疏離散表征,空間沉積池(spatial pooler),時(shí)間沉積池(temporal pooler)進(jìn)行了介紹,可以看出其對(duì)空間模式的提取是通過(guò)空間沉積池進(jìn)行稀疏離散表征實(shí)現(xiàn)的,不同的column具有不一樣的表達(dá)部分模式的含義,不同的組合就是表征不同的模式;而時(shí)間模式是通過(guò)細(xì)胞橫向間的突觸權(quán)值實(shí)現(xiàn)的,通過(guò)加強(qiáng)前后模式之間的轉(zhuǎn)移權(quán)值,來(lái)實(shí)現(xiàn)對(duì)序列的記憶。該HTM模型除了引入稀疏離散表征,將markov chain,group等概念隱含到突觸權(quán)值上,但是,從實(shí)質(zhì)上與George中的模型沒(méi)有太多的區(qū)別,都為層級(jí)結(jié)構(gòu),都能夠進(jìn)行記憶-預(yù)測(cè)。

 

層級(jí)實(shí)時(shí)記憶算法的實(shí)現(xiàn)

The implementation of HTM

 

    NupicNumenta platform for intelligent computing)是Numenta官方公布的代碼,比較完整的為linux版本,C++版本還在完善之中。當(dāng)然也有其他的版本,如C#[11],C++QT聯(lián)合編程的版本[12]。這里主要學(xué)習(xí)nupiclinux版本。

該部分內(nèi)容還沒(méi)有進(jìn)行完全,希望在之后的工作中逐漸豐富。

1、Encoder

    Numenta發(fā)布的HTM版本中,加入了稀疏離散表征,輸入是一種二進(jìn)制的序列,但是實(shí)際上,很多輸入都不是二進(jìn)制的,有的是類別,有的是標(biāo)量或者向量,甚至有的是文字,所以進(jìn)行一定encode。這是本小節(jié)介紹的主要內(nèi)容,如何將各種非二進(jìn)制表征轉(zhuǎn)換為二進(jìn)制序列。這里介紹標(biāo)量的表征[13]

    1.1 標(biāo)量

    標(biāo)量的編碼方法有兩種,這里主要介紹最大最小值固定的編碼方法,自適應(yīng)的方法原理是將最大最小值自適應(yīng)調(diào)整。

基本思想是當(dāng)給定一個(gè)標(biāo)量用多少個(gè)bits表示,在最小值到最大值的區(qū)間范圍,以及總共輸出多少bits,就能夠根據(jù)在區(qū)間內(nèi)的任意輸入值,根據(jù)其標(biāo)量值所在位置,計(jì)算出輸出中那些bits1。這樣,在數(shù)值上相近的標(biāo)量,在二進(jìn)制表達(dá)上也比較相似。

對(duì)于二維圖像如何編碼,是一個(gè)比較困難的問(wèn)題,因?yàn)樗擞谢叶却笮”硎疽欢ǖ暮x外,同時(shí)也有像素間上下文的關(guān)系,所以在進(jìn)行二進(jìn)制化時(shí)是一個(gè)比較困難的事情。這部分需要繼續(xù)學(xué)習(xí)。

2Spatial Pooler

    spatial pooler之中,主要有兩點(diǎn)值得注意的,第一個(gè),代碼中給出了全局抑制與局部抑制的代碼,但是局部抑制有一個(gè)計(jì)算瓶頸,所以可能還不能用。第二,在_updatePermanencesForColumn函數(shù)中加入了權(quán)值裁剪,將過(guò)小的權(quán)值設(shè)為0,節(jié)省存儲(chǔ)空間。其他細(xì)節(jié)與白皮書一致。

3Temporal Pooler

    待學(xué)。

4CLA Classifer

    CLAClassifer是將在temporal pooler里面的處于預(yù)測(cè)狀態(tài)的細(xì)胞轉(zhuǎn)換為預(yù)測(cè)值的函數(shù)。但是具體如何實(shí)現(xiàn),還有待學(xué)習(xí)。

5、總結(jié)

    本章主要是對(duì)HTM算法的實(shí)現(xiàn)做了一點(diǎn)解釋,包括實(shí)現(xiàn)與文章中的不同之處。

 

總結(jié)與展望

 

通過(guò)學(xué)習(xí)Numenta的白皮書可以知道,現(xiàn)發(fā)布的HTM模型還只是利用單層去解決問(wèn)題,當(dāng)然實(shí)現(xiàn)多層應(yīng)該比較簡(jiǎn)單。同時(shí)該層主要是模擬了新皮質(zhì)的第3層功能,也沒(méi)有反饋,行為控制等等功能,以后的工作應(yīng)該是逐步完善HTM,使得其結(jié)構(gòu)功能盡可能的相似。

通過(guò)學(xué)習(xí),對(duì)于HTM的發(fā)展演變,模型的理論,結(jié)構(gòu),功能,如何進(jìn)行學(xué)習(xí),識(shí)別,都有比較好的理解。但是還不足以發(fā)現(xiàn)文章的問(wèn)題,我覺(jué)得自己的工作之后是要不斷通過(guò)進(jìn)行實(shí)驗(yàn),來(lái)印證理論的同時(shí),發(fā)現(xiàn)HTM的問(wèn)題在哪里,所以下一步的工作重點(diǎn)將傾向于此。同時(shí),我覺(jué)得HTM的優(yōu)勢(shì)是不是在于他不僅在層級(jí)之間有連接,同時(shí),也增加了層級(jí)內(nèi)部的連接,所以是不是需要看一些其他的模型來(lái)對(duì)比一下呢?

一個(gè)問(wèn)題:在George論文中的HTM能夠利用Belief Propagation理論來(lái)推導(dǎo)inference等的過(guò)程,那么能不能同樣用到Numenta現(xiàn)行的HTM模型中呢?

 

參考文獻(xiàn)

 

[1] D. George, "How the Brain Might Work: A Hierarchical and Temporal Model for Learning and Recognition",Ph.D Thesis, Stanford University, June 2008.

[2] D. George and J. Hawkins, "A Hierarchical  Bayesian  Model  of  Invariant  Pattern Recognition in the Visual Cortex", International Joint Conference on Neural Networks (IJCNN), 2005.

[3] D. George and J. Hawkins, "Belief Propagation and Wiring Length Optimization as Organizing Principles for Cortical Microcircuits", Technical report, Redwood

Neuroscience Institute.

[4] Jeff Hawkins, Dileep George and Jamie Niemasik, "Sequence memory for prediction, inference and behaviour", Philosophical Transactions on the Royal Society B, 2009.

[5] http://vicarious.com/

[6] http://www.kurzweilai.net/vicarious-announces-15-million-funding-for-ai-soft ware-based-on-the-brain

[7] http://numenta.com/grok/

[8] D. Maltoni, Pattern Recognition by Hierarchical Temporal Memory , Technical Report, DEIS - University of Bologna technical report, April 2011.

[9] E.M. Rehn and D. Maltoni, Incremental Learning by Message Passing in Hierarchical Temporal Memory , Neural Computation, vol.26, no.8, pp.1763-1809, August 2014.

[10] J. Hawkins, S. Ahmad and D. Dubinsky, "Hierarchical Temporal Memory including HTM Cortical Learning Algorithms",  Numenta  tech.  report,  version 0.2.1, Sep. 12, 2011.  Available  at:  http://www.numenta.com/assets/pdf/whitepapers/

hierarchical-temporal-memory-cortical-learning-algorithm-0.2.1-en.pdf

[11] https://github.com/MichaelFerrier/HTMCLA

[12] https://sourceforge.net/p/openhtm/

[13] https://github.com/numenta/nupic/wiki

關(guān)閉窗口

相關(guān)文章