Long Short-Term Memory based Operation Log Anomaly Detection
基于LSTM算法的操作日志异常检测
R. Vinayakumar, K. P. Soman, Prabaharan Poornachandran
Centre for Computational Engineering and Networking (CEN), Amrita School of Engineering, Coimbatore
Centre for Computational Engineering and Networking (CEN), Amrita School of Engineering, Coimbatore
Center for Cyber Security Systems and Networks, Amrita School of Engineering, Amritapuri Amrita Vishwa Vidyapeetham, Amrita University, India
摘要:长短期内存(LSTM)体系结构是一种捕获任意长度序列中的长期时间依赖性的重要方法。此外,堆叠式LSTM(S-LSTM:通过将递归LSTM层添加到隐藏层中的现有LSTM网络中而形成)具有以稀疏表示快速学习时间行为的能力。为了将其应用于异常检测,我们将以1分钟为时间间隔的正常事件和异常事件的操作日志样本建模为时间序列,旨在检测事件并将其分类为正常事件或异常事件。为了选择合适的LSTM网络,使用网络安全数据挖掘竞赛(CDMC2016)提供的数据集对各种网络参数和网络结构进行了实验。实验进行了1000个epoch,学习率在[0.01-05]范围内。 S-LSTM网络架构通过在CDMC2016提供的真实测试数据上实现了最高的精度0.996和假阳性率0.02来显示其优势。
主题词:异常检测,操作日志,深度学习,循环神经网络(RNN),LSTM,S-LSTM
1.引言
当前对云基础架构很感兴趣,大多数信息技术(IT)公司都采用了云基础架构,而不是构建自己的整体或分布式IT基础架构。这背后的主要原因可能是计算资源更具弹性,可靠性,便利性,并且向用户收取的费用更少。它被大多数顶级IT公司(例如Amazon,Microsoft,Google和许多其他公司)采用并从中受益。尽管具有这些巨大的优势,但预测系统故障仍然是主要的重要任务,否则可能会导致资源性能下降或云基础架构内部资源的整体宕机。系统故障可能来自各种原因,例如软件缺陷,硬件故障,攻击和配置错误。这就需要一种新颖的机制来增强云基础架构中组件的可靠性。
每个系统都会生成一个事件序列。事件序列已表征了特定系统的性质。这些异常是正常的或异常的,每秒,每分钟,每小时等发生。异常是由于有意或无意的错误而频繁发生的事件。此外,异常事件不会遵循常规的行为模式。异常事件被视为关键事件。这些关键事件代表系统特征。
虚拟化被用作在单台计算机上采用多个操作系统(OS)的技术。 这在大型数据中心和集群计算基础设施在很大程度上主要用于创建和目的运行多个服务,以扩大硬件资源的利用率。 每个系统都会生成自己的系统事件,并共同协作以感染系统资源或整个系统。 硬件资源有限,因此无法始终将请求的资源分配给虚拟化。 各种虚拟化所产生的事件是不同且多样的。 对这些事件进行分析以检测系统故障对于维持系统稳定性非常重要。 此外,这可以防止异常事件并在发生异常事件后通过向网络管理员发出信号来恢复资源。
系统日志或日志文件包含系统事件。 日志文件是丰富的信息源,可用于在运行时了解系统的状况和特征。 它们是获取系统故障信息的唯一方法[1]。 从系统日志中的正常事件中识别异常事件并将其分类的常用技术是异常检测。 由于它是各个领域的基础方法,因此已被研究界广泛研究,最重要的是在网络安全应用程序中,主要是入侵检测,欺诈检测,故障隔离和许多其他应用程序[2]。
商业系统中存在的异常检测解决方案仅基于阈值,或者统计措施主要使用时间间隔内的累积总和(CUSUM)和加权移动平均值(EWMA)来识别异常事件模式的隐藏分布[3]。两种方法都已参数化,并且需要适当的时间间隔值才能实现显着性能。此外,这些方法通过将它们表示为计数和分布,可以成功地仅检测简单的异常模式。另一方面,现有的异常检测方法主要集中在基于单点的[4]上。他们并没有真正利用过去的信息来将未来的事件识别为正常事件还是异常事件。为了克服这些问题,我们使用长短期记忆(LSTM)。LSTM是用于时序数据建模的最杰出的方法,可捕获跨时间步长的长期时间依赖性。它在各种长期存在的人工智能(AI)任务中表现出色[5]。本文旨在将这些性能转移给CDMC20161任务,即实际操作日志异常检测。
本文的其余部分按以下方式组织。第二节讨论了选定的有关异常检测的相关工作,第三节给出了递归神经网络(RNN)和长期短期记忆的数学信息,以及如何训练它们以及如何将它们用于基于使用创建的模型预测系统故障的信息。具有给定操作的LSTM网络记录了异常数据。第四部分详细介绍了CDMC 2016任务,LSTM网络中的参数调优(包括网络结构),异常检测和评估结果的拟议架构,最后在第五部分中总结了论文的结论和未来的工作方向。
2.相关工作
异常检测可应用于与不同区域相关的各种任务。因此,它已成为一个生动的研究领域。研究人员介绍了许多处理异常检测的概念和方法。本节的目的是简要讨论先前介绍的用于异常检测的选定方法。
近年来,对系统日志进行分析以找出异常事件的方法已广泛使用。 [6]调查了统计和机器学习方法中的异常检测方法。 [7]中简要概述了当今研究人员遵循的检测异常事件的方法。 [8]的作者提出了顺序模式挖掘问题,[9],[10]对此进行了进一步的研究。 [11]提出了一种基于Apriori的方法,该方法专门用于广义序列模式算法,以找到长度为1的候选项。他们根据支持和计数忽略候选项。对于长度为n的候选项,算法必须扫描数据库n次。由于较大的顺序模式需要较高的计算成本和较长的时间,因此此方法的性能非常有限。 [12]提出了一种基于模糊集的解决方案,该方法学习顺序信息中的时变模式。 [13]引入了时间模式搜索,该模式搜索历史数据中的时变模式。
[14]使用隐藏马尔可夫模型(HMM)对来自syslog的事件序列进行建模,以检测关键事件。此外,他们还通过实际的日志系统数据展示了其模型的有效性。他们还声明,基于HMM的混合日志异常检测模型作为事件日志文件(包括系统调用,命令行,Web访问日志)的基准系统出现。 [15]提出了一种新的基于HMM的潜在数据异常检测方法。他们声称,他们的方法在真实序列数据上的性能优于one-class SVM。 [16]进行了实验,以使用朴素贝叶斯和递归神经网络(RNN)进行软件日志分析来分析可比的日志分析平台。他们得出结论,在所有实验情况下,RNN架构的性能都优于朴素贝叶斯,并且所提出的系统可有效地根据过去的序列信息来预测序列中的下一个单元。
讨论的方法主要集中在单点异常上。在处理集体异常检测时,有必要使用过去的信息来评估当前时间步长值。整个数据集中涉及的一组异常事件被称为集体异常[2]。集体异常中的单个数据点通常不被视为异常。集体异常中发生的一系列单点事件可以被视为异常事件。 LSTM通过促进将过去的信息与当前事件的时间步长值相关联而闻名,可以对时间序列数据进行建模。此机制之后是[17],[18],[19]。[17]通过将任务相关数据建模为时间序列,讨论了长期短期记忆对异常或故障检测的有效性。他们对使用正常数据训练了一个LSTM网络,并将其用作预测器。跨时间步长的预测误差被建模为多元高斯分布。他们使用这种新形成的分布来估计异常行为。在ECG,航天飞机,电力需求和多传感器引擎数据集上评估了该方法的性能。 [19]讨论了使用深度神经网络的各种RNN机制,用于日志文件异常检测。他们使用超大规模集成(VLSI)设计过程的实时日志,日志中的序列长度随长度从500到20000不等。[18]使用LSTM编码器/解码器方法进行多传感器异常检测。他们讨论了所提出的方法对电力需求,航天飞机和ECG的功效,以及两个包含预测和不可预测特征的实际引擎数据集。
3.背景
本节提供了递归神经网络及其变体的必要背景细节,如何对其进行训练以及在操作日志异常检测任务上进行映射的背后思想。
A.循环神经网络(RNN)
循环神经网络(RNN)最初是在时间序列数据建模中引入的[20]。 它们与带有附加循环回路的前馈网络(FFN)相同,如图1所示。该循环回路执行从一个时间步到另一个时间步的信息。 结果,RNN能够学习时间模式,并基于过去和现在的状态来估算当前时间步的值。 RNN在长期的AI任务中取得了显著成绩; 机器翻译,语言建模和语音识别[5]。
图1:文献[21]中采用的传统RNN单元和LSTM存储块的体系结构
图2:参考文献[21]中的展开的RNN
B.LSTM
长短期记忆(LSTM)是一个对传统RNN网络的改进方法,通过强制恒定误差流来解决梯度消失和爆炸问题。LSTM引入了一个记忆块,而不是一个简单的RNN单元。如图1所示,一个记忆块包含一个带有自适应乘法门的记忆单元;输入,输出,遗忘以及一个固定权重为1.0的自循环连接。当没有外部信号时,该值将被**。记忆单元充当一个容器,用于存储跨时间步的值。这些值是过去的信息,用于当前时间步值的估计,以获得长期时间依赖性。这些值由乘法门控制,特别是输入门允许或拒绝某个值到记忆单元。同样地,一旦一个值变得不可用并且输出门控制记忆单元的输出流,则遗忘门会忘记或重置存在于自连接中的过去信息。LSTM使用相同的训练过程,例如BPTT。LSTM在各种人工智能(AI)任务中学习长期时间依赖关系方面表现出色[5]。
4.方法,结果与讨论
在给定输入集合情况下,LSTM采用某些参数集合,因此,异常检测的性能直接取决于最佳参数。这些参数是通过超参数调优方法选择的。我们使用带有ADAM更新规则的时间反向传播(BRTT)方法在所有实验中训练LSTM网络。LSTM记忆单元的输入和输出**函数使用双曲正切(hypebolic tangent),其值范围为[-1,1]。在LSTM记忆单元,Logistic sigmod被用于门控单元和其他神经元的非线性**函数。
A.数据集描述
一个弹性云基础架构包括多个服务器,该服务器由新西兰理工学院的私人公司UniteCloud组成。它包括用于云编排的OpenNebula和用于虚拟化的KVM。他们以60秒为时间间隔从243个传感器中收集了日志数据。这些传感器连接到实时运行的UniteCloud服务器中。之后对这些日志进行预处理,并标记为正常或异常事件,其中异常事件本身具有7种不同的异常类别。该数据集由网络安全数据挖掘竞赛(CDMC 2016)发布,用于操作日志异常检测任务[23]。CDMC 2016是第9届国际数据挖掘和网络安全研讨会(DMC2016)的相关活动,该研讨会与第23届神经信息处理国际会议(ICONIP2016)同期举行。比赛的主要目的是将日志文件分类为正常还是异常,并从各种传感器日志文件中正确识别异常事件。数据集由82363个样本组成,其中训练集有57654个样本,测试集有24709个样本。每个样本定义为一个向量V。该向量包含243个特征和8个类别。一个向量的数学表示如下:
其中sf=sf1,sf2,…,sf243∈R,表示长度为243的特征集合,cl表示类别标签。详细描述见表1.
表1:CDMC2016异常检测UNITECLOUD日志的说明
B.软件框架
构建深度学习算法的软件框架有很多。大多数深度学习框架都可以作为开源使用。[24]考虑到可扩展性,硬件利用率和速度,对深度学习框架进行了全面评估。 我们考虑使用TensorFlow [25]和Theano [26],并且为了提高深度学习架构的梯度计算速度,我们在单个NVidia GK110BGL Tesla k40中将启用GPU的TensorFlow和Theano与Keras3结合使用。 我们无意比较TensorFlow和Theano计算框架的性能,因为这不是我们的目标。但是,在我们的实验中,我们发现TensorFlow在速度方面表现相对较好。 所有的深度学习架构都使用时间反向传播(BPTT)技术进行训练。
C.LSTM网络调参
LSTM网络中的记忆块数量,学习率和隐含循环层数是影响异常检测率的主要超参数。 为了找出它们的最佳参数,最初我们使用中等大小的LSTM网络。 该LSTM网络具有输入层,隐含循环LSTM层和输出层。 输入层具有243个神经元,隐含循环层包含8、16和32个记忆块,输出层由8个神经元组成。 输入到隐藏层和隐藏到输出层之间的所有连接都是完全连接的。 针对与记忆块数相关的每个参数进行实验。 在所有这3个实验中,批次(batch)大小设置为32,ADAM作为优化器,分类交叉熵作为损失函数,softmax作为输出层中的非线性**函数。
直观地,在CDMC 2016中名为“用于异常检测的UniteCloud操作日志”的任务的训练数据被随机分为77%用于训练,而23%用于测试。使用scikit-learn对训练和测试数据中的所有实例进行预处理,并将其标准化为[0-1]范围。为了了解每个LSTM模型的性能,使用了混淆矩阵。这提供了特定于某个类型的度量标准,例如准确性,召回率,准确性和f1度量。具有32个记忆块的LSTM模型的训练性能如图5所示。理想情况下,不需增加循环LSTM层中的记忆块,而是最适合采用循环LSTM层。这将通过非线性循环层将数据映射到高维空间。在测试数据集上评估经过训练的模型,每个时期的性能如图4所示。这表明LSTM模型需要更多的时期,特别是在[700-800]范围内,以有效地学习区分日志事件的行为是正常还是异常。此外,模型已经完全了解了在[0-100]范围内的正常事件模式。
图3:使用性能良好的LSTM网络,异常检测率超过学习率的范围为[0.01-0.5],其中每个记忆单元容纳32个记忆块。
图4:LSTM网络的性能,在[0-1000]范围内的每个时间段内,每个记忆单元容纳32个内存块。
图5:具有32个存储块的LSTM 1层具有训练和验证精度。
为了有效地找出学习率参数,使用了上一个实验的最优性能模型。在训练过程中,在不使用权重衰减的情况下,该模型运行800个epochs,学习率参数在[0.01-0.5]范围内。此外,在验证数据上评估训练后的模型,并在间隔[0.01-0.5]中跨不同的学习速率记录了它们的性能,如图3所示。学习速率较低的LSTM网络已合理地学习了异常事件的模式。具体而言,在[0.04-0.06]范围内的学习率显示出更好的异常检测率。在学习率参数值0.06之后,LSTM网络已跟踪其异常事件检测率的波动。通过考虑训练时间和异常检测率,其余实验的学习率设置为0.05。但是,在学习率0.05到1000个epochs内运行相同的网络可能会增加异常检测率。为了说明这一点,我们将相同的LSTM网络运行到1000个epochs。这大大提高了异常事件检测率。因此,本文其余的实验将进行到1000个epochs。
D.RNN和LSTM网络的网络拓扑
为了选择最合适的深度学习架构,对5种交叉验证设定的循环神经网络(RNN)和长短期记忆(LSTM)网络拓扑分别进行了3组实验,学习速率设置为0.05。 所有实验都进行到1000个epochs。网络拓扑是:
1)RNN 1层 8单元
2)RNN 2层 16单元
3)RNN 3层 32单元
4)LSTM 1层 8单元
5)LSTM 2层 16单元
6)LSTM 3层 32单元
LSTM网络中的所有网络拓扑都使用了遗忘门,恒定误差轮播(constant error carousel, CEC),当它没有从外部和窥视孔(peephole)连接接收到任何信号时触发。为了有效地找出所需的epochs参数,每种网络拓扑都进行了3组实验。在将事件识别为正常或异常的情况下,大多数RNN和LSTM网络在[400-450]范围内的某个epochs都已产生相当高的准确性。在[650-700]范围内的各个epochs,所有网络拓扑均已达到相当低的错误率。最值得注意的是,复杂的网络拓扑涉及较大的迭代,以实现可观的准确性。不过,最后复杂的网络也达到了最高的准确性。学习每种网络拓扑的各种异常事件所需的最佳epochs数是不同的。而且,一旦了解到特定的异常模式,网络拓扑就开始过度拟合。具体来说,这意味着网络已开始存储训练数据样本,并导致该特定异常事件的泛化性能下降。在所有RNN和LSTM网络拓扑中,具有32个记忆块(每个记忆单元一个,原文为:one memory cell each)的3层LSTM网络(学习率为0.05)显示出最高的交叉验证准确性。该LSTM网络结构用于我们的主要实验中。更重要的是,在所有3种类型中,LSTM网络拓扑都优于RNN网络拓扑。这表明LSTM网络是更合适的机制,可用于识别操作日志模板中的异常事件。这可能是由于它们在其体系结构中容纳了复杂的记忆单元。这使LSTM可以在评估未来事件时存储和记忆过去的信息,并在必要时进行更新。表II显示了所有网络结构的详细5倍交叉验证结果。
表2:RNN和LSTM网络的5折交叉验证结果
E.LSTM网络的体系结构
过去的实验表明,具有32个记忆块的3层LSTM网络,每个记忆块具有一个记忆单元,学习速率为0.05,是用于操作日志异常检测的相当理想的架构,如图7所示。图7的详细架构包括内部单元显示在图6中。它具有243个神经元的输入层,具有2个记忆块的循环隐藏层(包含32个记忆块,仅显示2个),每个记忆块具有一个记忆单元,自适应乘法门,例如输入,输出和遗忘门以及自循环连接。此外,记忆单元具有窥孔连接,可了解输入的精确时序。此外,为避免难以理解所提出的LSTM体系结构,仅显示了很少的连接。此外,每个LSTM层交错插入dropout层,以避免过度拟合。dropout层与密集层和**层相互交错。**层具有softmax作为非线性**函数,它提供了类别概率值。已训练模型用于对CDMC 2016提供的真实测试数据集进行分类,并将预测的标签提交给他们。
图6:LSTM网络体系结构的子网,包括两个存储块,每个记忆块都有一个记忆单元。 仅显示较少的连接。
图7:S-LSTM架构图
表III表明了日志异常检测包含长期依赖关系和短期依赖关系。因此,与RNN方法相比,LSTM能够显着提高F-score。考虑到这一因素,我们已将基于3层LSTM网络的一次运行提交给CDMC 2016任务组织者以进行异常检测。 他们报告的统计方法确实很有趣。 更重要的是,系统显示FPR为0.02。 表3显示了对测试结果的实证评估。基于此,我们认为LSTM是一种用于对操作日志异常检测进行建模的合适机制,可以将事件分类为正常事件或异常事件,并将异常事件分类为7种不同类别。
表3:使用带有32个记忆块的3层堆叠LSTM网络的测试结果摘要
5.结论
本文回顾了LSTM网络在传感器日志文件中准确检测和分类异常事件的有效性。通过评估各种网络参数和网络结构的实验可获得最佳结果。与其他使用的网络结构相比,S-LSTM本身已经表现出了最高的准确性,不仅在可预见的异常模式中,而且在不可预见的异常模式中也是如此。这是由于这样的事实,即S-LSTM能够在缺乏对时间顺序信息的初步了解的情况下,以稀疏表示快速学习远程时间相关性。此外,仅在对可预见的异常事件进行分类时,标准的循环神经网络性能与LSTM网络更加接近且具有可比性。根据我们的结果,我们建议与RNN预测模型相比,LSTM模型对异常检测的鲁棒性更高。此外,我们缺乏解释LSTM网络内部动态的方法,这仍然是我们未来的工作。这可以通过将网络状态转换为线性化形式,从而估计和分析特征值和特征向量随时间变化的结构而得到证明[27]。
由于以下事实,本文采用了非常简单的LSTM网络,原因是复杂的体系结构占用了我们当前的硬件和整体训练环境的高计算成本。 因此,我们缺乏用更复杂的架构设置来表示实验结果的能力。 通过使用更复杂的LSTM网络和在分布式环境中的高级硬件上进行训练,可以进一步增强报告的结果。
6.参考文献
[1] J. Valdman, “Log file analysis,” Tech. Rep. DCSE/TR-2001-04, 2001.
[2] V. Chandola, A. Banerjee, and V. Kumar, “Anomaly detection: A survey,” ACM computing surveys (CSUR), vol. 41, no. 3, p. 15, 2009.
[3] M. Basseville, I. V. Nikiforov et al., Detection of abrupt changes: theory and application. Prentice Hall Englewood Cliffs, 1993, vol. 104.
[4] S. Hawkins, H. He, G. Williams, and R. Baxter, “Outlier detection using replicator neural networks,” in International Conference on Data Warehousing and Knowledge Discovery. Springer, 2002, pp. 170–180.
[5] Y. LeCun, Y. Bengio, and G. Hinton, “Deep learning,” Nature, vol. 521, no. 7553, pp. 436–444, 2015.
[6] V. Hodge and J. Austin, “A survey of outlier detection methodologies,” Artificial intelligence review, vol. 22, no. 2, pp. 85–126, 2004.
[7] V. Chandola, A. Banerjee, and V. Kumar, “Anomaly detection: A survey,” ACM computing surveys (CSUR), vol. 41, no. 3, p. 15, 2009.
[8] R. Agrawal and R. Srikant, “Mining sequential patterns,” in Data Engineering, 1995. Proceedings of the Eleventh International Conference on. IEEE, 1995, pp. 3–14.
[9] F. Masseglia, F. Cathala, and P. Poncelet, “The psp approach for mining sequential patterns,” Principles of Data Mining and Knowledge Discovery, pp. 176–184, 1998.
[10] J. Han, J. Pei, B. Mortazavi-Asl, Q. Chen, U. Dayal, and M.-C. Hsu, “Freespan: frequent pattern-projected sequential pattern mining,” in Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2000, pp. 355–359.
[11] R. Srikant and R. Agrawal, “Mining sequential patterns: Generalizations and performance improvements,” Advances in Database TechnologyEDBT’ 96, pp. 1–17, 1996.
[12] Y.-L. Chen and T.-K. Huang, “Discovering fuzzy time-interval sequential patterns in sequence databases,” IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), vol. 35, no. 5, pp. 959–972, 2005.
[13] T. D. Wang, A. Deshpande, and B. Shneiderman, “A temporal pattern search algorithm for personal history event visualization,” IEEE Transactions on Knowledge and Data Engineering, vol. 24, no. 5, pp. 799–812, 2012.
[14] K. Yamanishi and Y. Maruyama, “Dynamic syslog mining for network failure monitoring,” in Proceedings of the eleventh ACM SIGKDD international conference on Knowledge discovery in data mining. ACM, 2005, pp. 499–508.
[15] N. G¨ornitz, M. Braun, and M. Kloft, “Hidden markov anomaly detection,” in International Conference on Machine Learning, 2015, pp. 1833–1842.
[16] C. Liu, “Data analysis of minimally-structured heterogeneous logs: An experimental study of log template extraction and anomaly detection based on recurrent neural network and naive bayes.” 2016.
[17] P. Malhotra, L. Vig, G. Shroff, and P. Agarwal, “Long short term memory networks for anomaly detection in time series,” in Proceedings. Presses universitaires de Louvain, 2015, p. 89.
[18] P. Malhotra, A. Ramakrishnan, G. Anand, L. Vig, P. Agarwal, and G. Shroff, “Lstm-based encoder-decoder for multi-sensor anomaly detection,” arXiv preprint arXiv:1607.00148, 2016.
[19] T. Yang and V. Agrawal, “Log file anomaly detection,” CS224d Fall, vol. 2016, 2016.
[20] J. L. Elman, “Finding structure in time,” Cognitive science, vol. 14, no. 2, pp. 179–211, 1990.
[21] F. A. Gers, N. N. Schraudolph, and J. Schmidhuber, “Learning precise timing with lstm recurrent networks,” Journal of machine learning research, vol. 3, no. Aug, pp. 115–143, 2002.
[22] S. Hochreiter and J. Schmidhuber, “Long short-term memory,” Neural computation, vol. 9, no. 8, pp. 1735–1780, 1997.
[23] S. Pang and R. Zhang, “2016 cdmc task 2: Unitecloud operation anomaly detection,” 2016.
[24] S. Bahrampour, N. Ramakrishnan, L. Schott, and M. Shah, “Comparative study of deep learning software frameworks,” arXiv preprint arXiv:1511.06435, 2015.
[25] M. Abadi, P. Barham, J. Chen, Z. Chen, A. Davis, J. Dean, M. Devin, S. Ghemawat, G. Irving, M. Isard et al., “Tensorflow: A system for largescale machine learning,” in Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI). Savannah, Georgia, USA, 2016.
[26] J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley, and Y. Bengio, “Theano: A cpu and gpu math compiler in python,” in Proc. 9th Python in Science Conf, 2010, pp. 1–7.
[27] R. Moazzezi, “Change-based population coding,” Ph.D. dissertation, UCL (University College London), 2011.