专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

皮质学习(Hierarchical Temporal Memory)

作者:佚名   来源:来自医众生的博客   点击数:  更新时间:2014年08月10日   【字体:

从现在起开始陆陆续续写一些吧,大概的计划是将Pattern Recognition and Machine Learning的学习体会写一个专题,然后继续deep learning方面的论文学习,当然也有编程方面的东西,希望能够好好坚持。下面是近期看的层级实时网络(HTM)的总结,HTM也是deep model的一种。这部分内容基本是本人脱离论文进行的回顾,如果有错误,各位看官还望原谅及指正,谢谢!

 

PART ONE: OUTLINE

 

皮质学习算法

Cortical Learning Algorithm

 

摘要

Abstract

 

绪论

Introduction

1、皮质学习算法的历史沿革

2、皮质学习算法的主要思想

3、报告的主要框架

 

George博士论文中的层级实时记忆算法

HTM: version I in George’s PhD thesis

1、整体框架

2、识别

3、学习

4、总结

 

Numenta白皮书中的层级实时记忆算法

HTM: version II in Numenta’s White Paper

1、整体框架

2Sparse Distributed Representation

3Spatial Pooler

4Temporal Pooler

5、与Version I的内在联系与主要区别

6、总结

 

层级实时记忆算法的实现

The implementation of HTM

1Encoder

2Spatial Pooler

3Temporal Pooler

4CLA Classifer

5、总结

 

总结与展望

 

参考文献

 

 

 

PART TWO: REPORT

 

皮质学习算法

Cortical Learning Algorithm

 

摘要

Abstract

皮质学习算法是一种对新大脑皮质层结构与功能运作进行人工模拟的算法。本篇报告主要阐述了皮质学习算法的发展概况,核心算法(Hierarchical Temporal Memory: HTM)以及算法中的关键技术。通过对HTM算法各设计细节的分析,HTM算法的演变进行学习和思考,加强对算法核心内容,如空间模式与时间模式的提取,稀疏离散表征等的理解。同时,对开源代码及相关报告材料的学习,加强对皮质学习算法细节的把握。

 

绪论

Introduction

 

1、皮质学习算法的历史沿革

    Jeff Hawkins在其2004年出版的著作“On Intelligence”,提出了一种大脑皮层运作的理论,他称之为记忆-预测框架[1].该框架主要阐述了大脑皮层运作的一些原则,比如新皮层是建立一种对空间与时间的模式,目的在于预测,它具有层级结构,可以通过记忆模式与序列进行建模,层级之间信息存在上下互相传递等。这就是后来皮质学习算法的核心思想。

    2005324,他与Donna Dubinsky, Dileep George等人创建了Numenta公司,将该框架的思想付诸实践,这里成为皮质学习算法发展的主要阵地。2005,GeorgeJeff先后发表两篇文章,第一篇[2]介绍了HTM的雏形,给出基本结构,学习过程,以及利用Bayesian Belief Propagation理论解释识别和重建过程,并通过实验展示了HTM的性质,对一些生物学现象进行解释;第二篇[3]主要介绍了利用解剖学知识和皮层功能,假设自然总是考虑利用最少的资源,同时假设皮质集成电路(科学家假设大脑像集成电路一样由很多结构和功能相似单元组成,称之为皮质集成电路:cortical microcircuits)信息传递符合Bayesian Belief Propagation,来推导出皮质集成电路的组成方式。本文章为George的博士论文中对皮质集成电路的组织方式(一个区域中细胞层次组织与每个细胞层的功能等)提供理论解释。2008,George的博士论文为前两篇文章的综合,详尽地阐述了HTM的生物学依据,HTM的结构与识别、学习方式,HTM的泛化以及皮质集成电路的数学理论。2009,JeffGeorge发表一篇关于序列记忆的文章[4],主要阐述了序列记忆的约束条件,序列记忆模型的生物学意义与具体算法(State-Splitting Algorithm)

    2010Dileep George离开Numenta,D.Scott Pheonix创建了Vicarious.com。在这里,George基于原来的HTM算法,给出了一些皮质学习的主题(themes)[5],如基于有限样本的非监督学习等。在这里他提出了HTM的改进算法--Recursive Cortical Network(RCN)算法[6],按照George的话,可以推测应该是在原HTM的各层的相邻节点nodes之间加入了连接(connections),他们将该技术应用到验证码的自动识别。而Numenta近期也发布了自己历时9年研发出的产品Grok[7],来做异常检测。

    对于皮质学习算法的研究,目前知道的除Jeff等人这个团队发表的文章,其他人的文章很少见,其中Davide Maltoni是其中一位。他在其2011年关于HTM的技术报告[8]中详细阐述了HTM的结构和学习、识别流程,并对其中的给coincidences归组分类算法进行了改进。2014,他又提出了对HTMIncremental Learning方法[9]

    由于目前找到的关于Vicarious的论文或者相关材料比较有限,主要基于Dileep George等人的相关论文以及Numenta公司公开的白皮书、教学视频以及源代码进行学习与介绍。

 

2、皮质学习算法的主要思想

    皮质学习算法是一种对新大脑皮质层结构与功能运作进行人工模拟的算法。它的核心算法是层级实时存储算法(Hierarchical Temporal Memory),它是基于Jeff的记忆-预测框架来进行设计。在本算法里面,如下内容是非常核心与关键的:层级结构(Hierarchy),空间与时间模式不变表征(Invariant Representations of Spatial Patterns and Temporal Patterns),序列记忆(Sequence Memory)。对于这些内容,在具体介绍时,将进行详细分析,这里给出一些综述。

    层级结构:解剖学研究已经显示,新大脑皮质层的功能(可能)由一个区域与一个区域连接这种层级结构来实现,HTM算法中,也模拟了这种区域与区域之间的层级结构。当然,层级结构在很多模型,包括Deep Model中都有应用,这是因为这种结构具有很多良好的性质,之后会详述。

    空间与时间模式的不变表征:很多Deep Models都对模式的不变表征进行了很好的探索,但大多数停留在空间模式的不变表征上,但是,当代表两种物体的空间模式集(子空间)有交集的时候,这些模型就很不容易利用空间识别分类。所以HTM引入了时间,通过寻找模式之间的时间关系,在时间相近,模式接近的这种假设下,就能够更好地区分不同模式。

    序列记忆:序列记忆是时间模式不变表征的关键,HTM通过每个节点内部建立马尔可夫链,或者在细胞横向间训练突触权值来达到记忆不同模式的前后转移概率,对序列的变化进行记忆的效果。

 

3、报告的主要框架

    本报告主要分为如下五个部分。第一部分,绪论。介绍了皮质学习算法的发展流程,及其核心思想。George博士论文中的HTM算法将在第二部分给出。随后,Numenta的白皮书所提出的HTM将在第三部分进行详细阐述,同时与第二部分内容进行关联、对比。第四部分主要阐述NupicHTM算法的实现。第五部分,HTM的特性以及适用性、之后发展进行总结,并对自己的学习进行一定总结。

 

George博士论文中的层级实时记忆算法

HTM: version I in George’s PhD thesis

 

层级实时记忆算法是模拟新皮层大脑结构,试图模仿起功能的算法。首先,层级实时算法采用了层级结构,HTM算法由低层级到高层级依次提取low-levelhigh-level的不变特征,或者说更高层是低一层不变表示的重新组合。如果能够在底层级学习到事物的一些最基本的模式,再通过高层级进行再组合,那么可以通过学习某些物体的模式时而达到将新事物的基本模式也包含的情况,即有较高的泛化能力。同时,通过层级结构,底层级学习一些low-level的不变特征或者子模式后,直接可以输入到高层进行学习,高层级不用再对low-level的特征或者模式进行再学习,提高学习训练的效率,也减小了存储空间。

HTM算法另一个最突出的特点是引入了时间模式。之前很多deep model的层级结构大多只关注层级之间的连接(connections),这样使得他们能够提取较好的空间模式;但是他们没有考虑到层级内部节点的连接,这种连接能够学习到序列模式在连续时间内的转移关系,进行序列记忆,在表征物体的空间模式集有交集的时候,通过时间相近,模式相似的准则可以增加物体识别分类的精度。下面,通过参考David的技术报告[]George的博士论文[],将对George博士论文的HTM方面的理论进行详述。

 

1、整体框架

如下图1为一个三层的HTM示意图,方块表示节点。可以看出,HTM具有树状的层级网络结构。高一层一个节点与其相邻低一层的多个节点相连接, HTM的第一层节点直接与输入相连(可以是overlapping)。而某一个节点,不断向下一层回溯,到输入,他所处理的输入范围就是其感受域,level one中的每个节点的感受域是1,level two的是2,level three的是4

节点是HTM中记忆与预测的基本单元。在节点中,主要存有三种数据,C(coincidences的集合), G(temporal groups的集合,每个group实际上是coincidences的集合)transition probability matrix(为每个group中各个coincidence之间的转移概率组成的矩阵)。

每一个处于中间层(除开第一层与最后一层)节点,都有唯一一个父节点,与多个子节点。HTM对空间模式的提取,依赖的是父节点对各子节点的子模式的pooling,而时间模式与序列记忆的实现,依赖于节点中不同的temporal groups以及其各coincidences组成的markov chains。通过记忆不同ordermarkov chains,可以由一个coincidences往前或者后推知另外coincidences发生的可能性,从而实现序列记忆。而每个group也是由这种coincidences之间转移概率最大化分类,以获得时间相近,模式相似的结果。

对于一个HTM模型,其识别的整体流程是:当某一层各节点分别接收来自其子节点的输入时,开始进行识别,其结果作为父节点的部分输入。而对于一个HTM模型的训练学习,首先要对最低层进行训练,训练完毕后,再对高一层进行训练,而输入来自低层按识别流程处理得到的结果。下面几节,将从单个节点的训练与识别进行展开介绍。

1 HTM结构示意图

2、学习

在学习阶段,大致分为3步,对新模式进行记忆,转移概率矩阵的计算,对模式进行分组获取temporal groups

I,模式进行记忆。当一个节点接收到一个新的模式时,首先是将输入模式与节点中已存在的模式进行比较(如,比较距离),如果该输入与某个存在的模式足够近,那么就激活该模式。如果没有找到足够近的模式,那说明这个输入模式是一个新的模式,将他存入模式集中,以待后用。这就是模式的记忆。

II,转移概率矩阵的计算。当一个模式被激活,回顾之前激活的模式,将矩阵中对应两者转移关系的位置自增1。当然,HTM也可以存储多步的转移,回顾数步以前被激活的模式,存储其转移关系。在所有模式输入完毕,对转移矩阵每行或每列(视存储情况定)进行归一化,得到转移概率。

IIItemporal groups的计算。根据转移关系的统计,可以知道哪些模式转移相对频繁,而哪些模式之间转移概率相对较大。Temporal groups的计算的原则就是基于此,选取一些转移较频繁的模式作为种子点,从该种子点向与其转移概率最大的点进行生长,达到一定数目停止生长,从而实现temporal groups的分类。而每个group以及其coincidences之间组成的markov chain是模型序列记忆的关键。

需要注意的是,在训练完毕一层之后,再训练更高层时,首先利用识别流程,将前些已经训练好的层级的结果输出到更高层,进行学习训练,但是这里,一般将concatenation的各输入(子节点的输出)中最大值位置设为1,而其他位置置为0David处理方法是每个coincidences#(子节点数目)维向量,每个元素存的是最大值位置索引,感觉这种省存储空间)。这实质上是一种稀疏化的处理,之后在介绍Numenta里面的HTM与现在介绍的HTM的联系和区别时还会提及。

3、识别

在识别阶段,假设每个节点的CGtransition probability matrix已经训练好。一个节点的输入过程一般分为两步,首先计算对当前输入,提取所有coincidences对该输入的certainty;其次是计算对当前输入,提取所有groups对该输入的certainty

I,提取coincidencescertainty。对于第一层的节点,这种certainty通常是通过考量输入与模式之间的近似程度来实现,而对更高层,coincidences里面存的是各个子节点哪些temporal groups共同出现,所以这些子节点的temporal groups对该输入的certainty共同组成该coincidence对该输入的certainty

II,提取groupscertainty。同理,groups里面是指哪些coincidences会共同出现,一个groupscertainty由这些coincidencescertainty共同组成(都是概率相乘)。

III,关于识别的一些思考

 

考虑上面公式(来自George论文,公式含义不细说),在序列记忆的情况下,实际上每个groupcertainty不仅仅考虑了他包含的coincidences对他的贡献,同时通过序列转移情况,能够知道某个coincidence在前面已有序列条件下,现在出现的概率,这种序列记忆能够更好地反映出一个coincidence对某个输入的certainty。当然,在David的报告中,大多数情况下以下图中公式(4.4)为基本,没有考虑多步的转移。

考虑下面示意图2(参考David论文),一个类别可能主要有部分输出节点中coincidencescertainty来确认,而这些coincidences只由部分子节点的groups共同生成,如此类推下去,可以知道一个类别的模式由部分最基本的模式组合表达,就印证了当系统学习到一些基本模式后,对于具有这些基本模式的事物具有泛化能力。

 

2 HTM泛化能力的示意解释,见正文

注意这里将所有的模式对输入的certainty都计算在内,这与训练中只激活一个模式是有区别的,在训练中如果将所有模式激活就无法得到转移概率矩阵了。同样这与Numenta白皮书里的cell激活方式也稍有不同,下面会再讲。

4、总结

这一部分主要对George文章中的HTM算法进行基本的总结。通过对于两篇文章的综合,可以对于该HTM模型的所有细节具有比较清楚的认识,包括如何处理图像(如按zig-zag对图像序列化,图像像素或者子块或者对像素邻域提取的特征如何输入到节点)等都能有具象的认识。但这里只是回顾了一些主要的流程。核心点:通过高层对低层模式的再组合,提升系统的泛化能力;每个group实际上是对序列的记忆,转移概率大小体现了模式之间在时间上相近程度。

 

Numenta白皮书中的层级实时记忆算法

HTM: version II in Numenta’s White Paper

   

HTM版本[10]George博士论文的版本上进行了一些修改与改进工作,在新版本中撤除了节点的概念,更多地去模拟新皮质的结构,引入了区域,细胞,树突,突触等生物学领域的概念。但是最基本的原则是没有变化的,就是层级结构,记忆-预测等。当然,新版本里面还引入了稀疏离散表征(sparse distributed representation)的概念。

1、整体框架

在新版HTM中,层与区域的概念相似,如图3中为一个层级(区域:region)的示意图,该层级接收其下一层的信息,处理后,输出送至更高层进行处理。每层有许多列(column)组成,形成二维平面(非必须),而每个列中包含有多种细胞(cell)组成。在每个列与输入之间,有一个树突(dendrite segment),它有许多潜在突触(synapse),可能会与输入中的部分子集相连接;而每个细胞有许多树突,每个树突也有许多潜在突触,可能与其他细胞进行横向连接。在图3中没有显示出来。

对于HTM的识别、学习都分为两个流程,首先对输入进行稀疏离散表征,完成spatial poolingsp),学习阶段会对突触的权值进行更新;其次,基于spatial pooler的结果,进行横向信息传递、预测,完成temporal poolingtp),学习阶段也会对突触的权值进行更新。Temporal pooling的输出作为更高层的输入,重复刚才的过程。识别和学习没有明显界限,在识别阶段可以将学习的部分功能关闭即可。下面小节将以一个区域为例,对HTM的识别与学习进行比较详细地介绍。

注:需要特别指出的是,每个column如果被激活(之后会解释什么是激活状态),那么它是能够表征模式的部分含义的,对于一个输入模式,就被一组稀疏的活跃column进行有效表征。但是我们知道,“ABCD”与“EBCF”中的模式BC是不一样的,那么在HTM中如何实现不同上下文的表征呢?HTM中,每个column拥有很多细胞,在不同的上下文时,激活的细胞是不一样的,这样就达到了能够表征不同上下文中相同内容的目的。

 

3 HTM一个区域(层级)的结构

2Sparse Distributed Representation

在介绍sptp之前,首先要对稀疏离散表征进行描述。稀疏离散表征是HTM的重要基础,序列记忆等都基于稀疏离散表征。稀疏离散表征是将自然界语言(如图像,文本,音频等)转换为二进制序列,而且是稀疏的。稀疏离散表征的每一个活跃(值为1)的bit都能表达模式的部分含义,但是仅仅一个bit又是不够的,只有整体才能表达一个完整的模式。稀疏离散表征具有很多很好的性质:

I,在比较时,只要两个不同的稀疏离散表征具有一些相同的活跃bits,那么这两个稀疏离散表征表达的模式具有一定的相似性。

II,在存储时,可以对稀疏离散表征进行subsampling,而能较好地保留其表达含义。这样节省了存储空间。

III,不同的稀疏离散表征做OR运算后,为这些稀疏离散表征的组合,如果一个新的稀疏离散表征的活跃的bits来自于这个组合,那么可以肯定他在这个集合中的membership。一个有趣的现象是,当训练了序列”ABC”ABD”后,如果输入“AB”,它所进行的预测就是“C”与“D”的组合。下面我将介绍如何得到稀疏离散表征。

IV,正是因为一个bit可能只表示非常少的模式信息,所以对噪声不敏感,有些许bits不同的两个模式可能也是相似的。

3Spatial Pooler

    当接收到输入信号后,HTM中的相应区域要进行spatial pooling。主要分为以下几步:

首先,对于区域中的每个列(column)都有一个receptive field,来接收输入中的子集,其树突上的活跃突触(权值大于一定阈值,初始化时权值在阈值附近进行随机取值)将与输入的bits连接,如果连接到活跃bit=1)的活跃突触数目大于一定阈值时,认为该column可以作为活跃column的备选。

然后,为了达到稀疏表征的目的,不希望太多的column能够激活,所以在一定的抑制半径(通过columns的平均receptive field计算)内,只有前n(如n=10,当然也可以用总数的百分比)才能被激活。这样,将所有满足条件的columns激活,得到的就是输入的稀疏离散表征。

在学习阶段,需要更新权值,一般希望特定的突触对于特定的输入具有响应,这样达到不同模式具有不同稀疏表征的效果,所以使得活跃column的潜在突触中,所有连接活跃bits=1)的突触权值自增,而连接不活跃bits=0)的突触权值自减。其他column的突触权值不变。

当然,在sp中,有许多细节需要注意,比如说HTM希望所有的columns都要被用来进行一定模式的表征,所以那些因为覆盖值(overlap,就是连接活跃bits的活跃突触数目)长期不够,与那些因为覆盖值长期不能进入抑制半径内前列的columns突触权值进行boosting,即增加其权值。

4Temporal Pooler

当输入用稀疏离散表征后,得到活跃的columns,然后要进行temporal pooling。主要分为以下几步:

首先,要对columns里面的细胞进行激活。细胞的激活分为两种情况,第一种,区域之前没有做出预测,那么,对于sp得到的激活columns中所有细胞进行激活;第二种,区域之前已经做出了预测,那么,在每个活跃column中判断是否有细胞在前一时刻被正确预测,如果有,仅仅激活该细胞,说明符合当前上下文环境,如果没有,那么将这一列的所有细胞进行激活,说明我还不清楚上下文环境是什么,所以所有上下文环境都有可能。而其他没有被正确预测或者没有再激活columns中的细胞保持或者变成不活跃。

其次,要进行预测。对于没有被激活的细胞,观察其连接的树突,如果该树突上连接活跃细胞的活跃突触数目大于一定数目时,我们认为该树突被激活,然后使得其连接的细胞被激活,当一个细胞存在多个树突被激活时,进行OR运算。

在学习阶段,为了防止细胞过多的活跃突触,从而过多进行预测,HTM一般希望每个活跃column中只有一个细胞进行学习,在被正确预测了的细胞当中,首先计算该细胞通过活跃突触连接的之前处于学习状态的细胞数目,当其大于一定阈值时,进入学习状态;而对于没有被正确预测的细胞,选取连接活跃突触数目最多的细胞进入学习状态。对进入学习状态的细胞,将其活跃突触权值自增,其他突触权值自减。而对于一些之前被预测,当前没有被预测的(没有激活的)细胞,说明之前预测有问题,所有该细胞连接的突触自减。对于被正确预测的细胞,我们希望观察它们是否做出了正确的预测,对于他们权值的强化更新,所以先存在队列中,待到前进一定的time step再进行处理。可以看出,如果一个细胞被正确预测,HTM会强化这种前后细胞的转移关系,强化记忆序列关系。

注:在文章中,对预测的性质进行了很多解释。一个重要的点就是预测使得层级的输出变得更加稳定,这是因为输入模式可能连续变化,但是由于存在序列记忆,HTM会对输出进行一步或者多步预测,变化的输入可能只导致部分输出发生变化,而其中正确预测而激活的细胞,以及那些相同的多步预测使得输出变化比较小。当然更高层的输出更加稳定,在上一个版本的HTM里也存在,因为变化的模式,可能是同属于一个markov chain,一个group,所以在更高一层就有相似的输出了。

5、与Version I的内在联系与主要区别

在这里,主要分析一下第二章与第三章所介绍的两个HTM版本有什么内在的联系,又存在如何的区别。

I,结构。首先层级结构相似自不必再说。我们看micro-structure。一乍看,前一个版本里面的存储记忆的基本结构是节点,这里是column。实际上两者是很相似的,这里的columns相当于之前的coincidences,而column中的细胞就是这个coincidences的不同状态,就比如之前的coincidences可以通过state-splitting划分到不同的markov chain一样。而细胞之间的突触,实际上是group中的markov chain。如下图4,是将一个节点的CG转换为各种细胞之间信息的传递的结构,这明显地揭示了与新版本的相似之处。区别在于,group这个概念不再有,隐含在了稀疏离散表征里面,而且在新版本里面,突触的连接可以说也是稀疏的,二值化后的突触权值使得各细胞间不会所有信息都进行传递。


 

4 来自于George博士论文

II,功能。结构的相似性决定了功能上也基本相似,序列记忆一个通过突触权值实现,一个通过markov chain来实现。稍微不同的是,新版本对输入进行了稀疏离散表征,而在老版本中,如图中,y会计算所有coincidencescertainty。这也是两个版本的最大区别:稀疏离散表征。

6、总结

在这章,主要介绍了Numenta白皮书中介绍的HTM模型,对稀疏离散表征,空间沉积池(spatial pooler),时间沉积池(temporal pooler)进行了介绍,可以看出其对空间模式的提取是通过空间沉积池进行稀疏离散表征实现的,不同的column具有不一样的表达部分模式的含义,不同的组合就是表征不同的模式;而时间模式是通过细胞横向间的突触权值实现的,通过加强前后模式之间的转移权值,来实现对序列的记忆。该HTM模型除了引入稀疏离散表征,将markov chaingroup等概念隐含到突触权值上,但是,从实质上与George中的模型没有太多的区别,都为层级结构,都能够进行记忆-预测。

 

层级实时记忆算法的实现

The implementation of HTM

 

    NupicNumenta platform for intelligent computing)是Numenta官方公布的代码,比较完整的为linux版本,C++版本还在完善之中。当然也有其他的版本,如C#[11]C++QT联合编程的版本[12]。这里主要学习nupiclinux版本。

该部分内容还没有进行完全,希望在之后的工作中逐渐丰富。

1Encoder

    Numenta发布的HTM版本中,加入了稀疏离散表征,输入是一种二进制的序列,但是实际上,很多输入都不是二进制的,有的是类别,有的是标量或者向量,甚至有的是文字,所以进行一定encode。这是本小节介绍的主要内容,如何将各种非二进制表征转换为二进制序列。这里介绍标量的表征[13]

    1.1 标量

    标量的编码方法有两种,这里主要介绍最大最小值固定的编码方法,自适应的方法原理是将最大最小值自适应调整。

基本思想是当给定一个标量用多少个bits表示,在最小值到最大值的区间范围,以及总共输出多少bits,就能够根据在区间内的任意输入值,根据其标量值所在位置,计算出输出中那些bits1。这样,在数值上相近的标量,在二进制表达上也比较相似。

对于二维图像如何编码,是一个比较困难的问题,因为他除了有灰度大小表示一定的含义外,同时也有像素间上下文的关系,所以在进行二进制化时是一个比较困难的事情。这部分需要继续学习。

2Spatial Pooler

    spatial pooler之中,主要有两点值得注意的,第一个,代码中给出了全局抑制与局部抑制的代码,但是局部抑制有一个计算瓶颈,所以可能还不能用。第二,在_updatePermanencesForColumn函数中加入了权值裁剪,将过小的权值设为0,节省存储空间。其他细节与白皮书一致。

3Temporal Pooler

    待学。

4CLA Classifer

    CLAClassifer是将在temporal pooler里面的处于预测状态的细胞转换为预测值的函数。但是具体如何实现,还有待学习。

5、总结

    本章主要是对HTM算法的实现做了一点解释,包括实现与文章中的不同之处。

 

总结与展望

 

通过学习Numenta的白皮书可以知道,现发布的HTM模型还只是利用单层去解决问题,当然实现多层应该比较简单。同时该层主要是模拟了新皮质的第3层功能,也没有反馈,行为控制等等功能,以后的工作应该是逐步完善HTM,使得其结构功能尽可能的相似。

通过学习,对于HTM的发展演变,模型的理论,结构,功能,如何进行学习,识别,都有比较好的理解。但是还不足以发现文章的问题,我觉得自己的工作之后是要不断通过进行实验,来印证理论的同时,发现HTM的问题在哪里,所以下一步的工作重点将倾向于此。同时,我觉得HTM的优势是不是在于他不仅在层级之间有连接,同时,也增加了层级内部的连接,所以是不是需要看一些其他的模型来对比一下呢?

一个问题:在George论文中的HTM能够利用Belief Propagation理论来推导inference等的过程,那么能不能同样用到Numenta现行的HTM模型中呢?

 

参考文献

 

[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

关闭窗口

相关文章