哈希学习 (learning to hash)
哈希学习通过机器学习机制将数据映射成二进制串的形式,能显著减少数据的存储和通信开销,从而有效提高学习系统的效率。哈希学习的目的是学到数据的二进制哈希码表示,使得哈希码尽可能地保留原空间中的近邻关系,即保相似性。具体来说,每个数据点会被一个紧凑的二进制串编码,在原空间中相似的两个点应当被映射到哈希码空间中相似的两个点。图4-1是哈希学习的示意图,以图像数据为例,原始图像表示是某种经过特征抽取后的高维实数向量,通过从数据中学习到的哈希函数h变换后,每幅图像被映射到一个8位(bit)的二进制哈希码,原空间中相似的两幅图像将被映射到相似(即海明距离较小)的两个哈希码,而原空间中不相似的两幅图像将被映射到不相似(即海明距离较大)的两个哈希码。
哈希学习示意图 使用哈希码表示数据后,所需要的存储空间会被大幅减小。举例来说,如果原空间中每个数据样本都被一个1024字节的向量表示,一个包含一亿个样本的数据集要占用100 GB的存储空间。相反,如果把每个数据样本哈希到一个128位的哈希码,一亿个样本的存储空间只需要1.6 GB。单台机器(包括配置很高的单台服务器)处理原始表示时,需要不断地进行外内存交换,开销非常大。但如果用哈希码表示,所有计算都可以在内存中完成,单台普通的个人电脑(PC)也能很快地完成计算。由于很多学习算法,比如k近邻(kNN)、支持向量机(SVM)等的本质是利用数据的相似性,哈希学习的保相似性将在显著提高学习速度的同时,尽可能地保证精度。另一方面,因为通过哈希学习得到的哈希码位数(维度)一般会比原空间的维度要低,哈希学习也能降低数据维度,从而减轻维度灾难问题。此外,基于哈希学习得到的二进制哈希码可以构建索引机制,实现常数或者次线性级别的快速近邻检索,为上层学习任务的快速实现提供支撑。因此,哈希学习在大数据学习中占有重要地位。随着大数据概念的广泛普及,哈希学习研究在近几年也取得了很大的进展,研究者从非监督哈希学习、监督哈希学习、多模态哈希学习等方面进行了系统的研究,并在信息检索、计算机视觉和多媒体领域得到了广泛应用。
目前大部分哈希学习研究的思路为:针对某个机器学习场景(比如排序学习场景)或者应用场景,只要以前没有人尝试过用哈希学习的思想来加速学习过程,就可以考虑把哈希学习用进去,然后在一个传统模型(这个传统模型不用哈希学习)解决不了的数据或者应用规模上进行实验验证。从解决实际问题的角度来讲,这些工作虽然初步,但还是很有研究价值的,毕竟为大数据中传统模型不能解决的问题提供了一种可行的解决思路。但从哈希学习本身的研究来讲,目前大部分工作还没有从哈希学习问题的本质上进行考虑。因此,哈希学习虽已被广泛关注并在某些应用领域取得了初步成效,但研究才刚刚开始,问题本质和模型构建有待于进一步深入思考,模型参数的优化方法有待于进一步探索。另外,大部分学习场景和应用领域到目前为止还只出现很少的哈希学习方法,有的场景和应用甚至还没有研究者进行哈希学习的尝试。例如,推荐系统是个很大的应用方向,但到目前为止这方面采用哈希学习的工作还不多。因此,怎样将哈希学习的思想和方法拓展到新的学习场景和应用领域,用来解决传统方法在遇到大数据时不能解决的问题,将是非常有意义的工作。特别值得一提的是,很多分布式机器学习的瓶颈在于节点间的通信开销。因此,将哈希学习引入到分布式机器学习算法,并验证哈希学习在减小通信开销方面的有效性,也是非常有意义的研究方向。