论文部分内容阅读
由John Lafferty等人在2001年提出的条件随机域(conditional random fields,CRF)模型是机器学习领域的一个重要里程碑,它综合了以往机器学习中几种模型的优点,包括隐马尔可夫模型,最大熵隐马模型,同时也避免了MEMM中标记偏见的问题。因为它的这些优点,CRF被广泛应用于机器学习领域,特别是自然语言处理中,包括命名实体提取、词性标注等。在有着广泛的应用和众多的优点的同时,CRF也存在着不足之处。其中一个显著的不足就是训练一个CRF模型需要耗费大量的计算资源。首先,CRF的训练需要耗费大量的内存资源,在进行大数据量的训练的时候,所使用的内存常常会超出微机的物理内存,使得操作系统使用磁盘作为交换空间,大量的I/O操作会严重影响训练效率;其次,CRF训练的计算本身也需要耗费大量的计算时间,数据量大的训练通常需要耗费数天甚至数周才能完成。这不仅仅是因为算法本身的复杂度,还跟目前的算法没能有效利用现代计算机硬件特性有关。本研究的目的是,通过优化CRF的训练算法,使得算法可以有效利用现代CPU的特性,并使内存-磁盘间的数据交换操作得到优化,从而提高CRF模型的训练效率。同以往的CRF相关研究不同,本研究从一个计算机架构的角度研究了提高CRF训练效率的方法。就我们所知,目前通过优化算法来有效利用现代计算机特性来的研究也较多,但针对CRF算法的目前还尚未出现。由于CRF被广泛使用在机器学习领域,本研究可以让使用CRF的研究者和开发人员在测试、应用算法模型时节省大量的时间和精力。本文从以下三个方面解决CRF训练效率低下的问题:1.通过优化算法,降低CPU Cache失效率。设计一个适合Cache预取的算法,可以通过使用现代CPU的软件预取(software prefetching)指令,降低CPU Cache的失效率,从而减少cache失效带来的性能损失;2.通过优化算法,使得算法中计算的并行性得到提高。设计算法充分利用CPU特性,可以提高CRF训练时计算的并行性;3.设计基于外存的CRF训练算法。当内存使用很大时,可以让训练程序自主管理磁盘操作,避免让操作系统来管理,从而减少了大量的数据交换操作,大幅提高了效率。本文实验结果显示,改进的CRF训练算法确实有效提高了训练效率,特别是对于规模越大的任务,效果的提升就越明显。表明本文的算法确实适合大规模的训练任务。