论文部分内容阅读
在大规模数据处理过程中,如何快速的找到需要的数据,是一个非常重要的课题。以往基于传统数据结构的索引模型,需要消耗大量空间建立索引,特别是在数据分布不均匀的情况下,模型的索引效率会大大降低。另一方面,推荐系统中对正排倒排索引的大量使用,需要建立非常多的大规模哈希表,数据量的增加会导致大量的哈希冲突,降低索引效率。面对这些问题,不少研究人员提出了一系列索引结构的改进算法,但是效果不太明显。效果不理想的主要原因在于传统数据结构无法根据数据的分布情况做出相应的改变,以更好的适应数据。因此,本文提出了一种通过学习数据分布建立索引的可学习索引结构。可学习的索引结构由Tim Kraska等人与2017年提出,一经提出就引起了业界广泛的讨论和关注。可学习的索引结构将传统索引看作回归或分类问题,通过机器学习算法学习数据分布情况,可以节省大量的存储空间,为数据库等系统建立索引提供了新的思路。本文首先阐述了传统索引结构的缺点以及推荐系统中建立索引的技术难点,并总结探讨了现有可学习索引结构的思路和特点。然后建立了一个多层模型,设计了两种使用神经网络作为哈希模型的算法,分别完成拆分数据集以及映射数据到哈希表上的功能。然后根据哈希索引的特点,结合之前设计的监督学习神经网络模型,设计并实现了一种无监督学习的哈希模型,找到能让数据均匀分布的映射关系。在此基础上,根据推荐系统中倒排索引的需求,加入循环神经网络结构,设计并实现了完整的基于字符的哈希索引结构CB-LHI。CB-LHI在多层模型中的每一个监督学习与无监督学习模型上加入一个LSTM层,对不同的子数据集抽取不同的特征,分离相似的数据。最后设计了满足各种分布的实验数据,分别对各种模型与传统哈希函数进行对比,实验结果证明,CB-LHI模型在冲突率和空间利用率上都要优于传统哈希函数,为相关系统构建可学习索引模型的可行性做出了探索。