如何把机器学习“做大”

“大数据”无疑是当今行业内最热门的话题,尤其是大数据与机器学习的结合,给予计算机前所未有的判断能力和预测能力。机器学习通过数据来训练模型,数据样本越大,机器学习就可以训练出越复杂的模型,进而做出更准确的判别与预测。大数据与机器学习的结合,已经在信息检索、广告计算、个性化推荐等诸多领域展现出其强大的威力。

大数据与机器学习

理想的情况下,数据越大,机器学习可以训练越复杂的模型,模型的能力就越强大——然而目前事实似乎并非如此。大规模的数据给机器学习造成了计算上的困难,尤其是对于复杂的模型,计算量可能会随数据量超线性增长:比如很多种核方法,数据量增大百倍,计算量就需要增大万倍。因而面对大规模的数据,工业界通常只是使用非常简单的模型。目前工业界广泛使用logistic regression作为广告预测等多种业务的分类器,原因就是logistic regression是简单的线性模型,线下训练和线上预测都非常的高效,不需要过大的计算资源。由于计算的问题,kernel SVM等更为复杂的分类器很少用在工业界大规模的数据上,尽管其分类准确度可以比logistic regression更好。仅仅增加样本的数量,而没有采用更复杂的模型,那么大数据下的机器学习与以前的小数据机器学习的方法上并无实质区别。那么如何才能用大数据训练出复杂的模型?

如何提升机器学习的规模

用大数据训练复杂模型,最主要的困难就是内存容量限制和计算时间过长。想要将复杂的模型用在大数据上,就必须从算法层面上解决CUP计算量和内存存储量的问题。通常有三种方法可以把机器学习“做大”:并行算法、在线算法、近似算法。

并行算法。顾名思义,并行算法就是将任务分配到多台机器或多个处理器上,通过增加计算量来减小计算时间。分布式并行计算对硬件条件有较高要求,需要MapReduce集群、MPI集群、GPU集群等计算资源,因而只适用于百度、谷歌这样计算能力大的公司。但即使有很大的计算资源,也不是所有的算法都适合分布式计算,因为分布式并行计算要求算法具有可并行性。最理想的情况下,用100台机器并行,计算时间为原来的百分之一;但事实上,并行算法很难达到这样的效果。设计分布式算法,需要考虑到存储量、通信量、同步异步的问题。

  • 面对大数据,内存容量是一个关键的瓶颈,如果分布式算法可以对数据或特征做划分,使得每台机器的内存消耗远小于不做分布式,那么并行计算就非常有优势。

  • 机器学习的算法通常需要迭代地更新模型,这就导致每一轮需要有一次通信。集群的机器之间带宽是有限的,因此大通信量会降低算法的效率。

  • 同步异步问题。如果算法需要对所有的机器进行同步,即每一轮迭代都需要所有机器完成各自的计算,那么就会产生短板效应:所有机器都要等待最慢的那一台机器。因此设计并行算法应该优先考虑可以异步的算法。

在线算法。传统的机器学习算法通常每一轮用全部的数据来更新模型,而在线算法有所不同,每次获取少量数据来更新模型。这样做的好处是内存消耗大大减小,而且每一轮的计算量也很小。随机优化是在线算法的一种变体。与在线算法思想相同,虽然已经获取全部数据,但随机优化每一轮迭代只随机抽取少量数据,用抽取的数据来更新模型。随机梯度下降、随机对偶坐标下降等方法已经被广泛用于求解各种机器学习的模型。NIPS 2014最新的一篇文章“Scalable Kernel Methods via Doubly Stochastic Gradients”利用随机优化高效求解核方法,使得核方法可以用于大数据问题。在线算法(或随机算法)通常比较适用于单机的计算环境,对计算资源要求较小,即使没有强大的集群也可以用大数据来训练机器学习的模型。

近似算法。很多机器学习问题,比如主元分析、矩阵补充、主题模型、核方法等,都需要求各种矩阵分解,而这些运算的时间和内存消耗通常正比于数据量的平方。如果不能高效求解矩阵运算,很多机器学习方法就无法用于大数据问题。矩阵分解通常是用数值迭代算法求解,每一轮迭代都需要将整个矩阵扫一轮,进行矩阵乘法等操作,然后更新分解出的矩阵。如果在集群上并行计算,每一台机器都需要很大的内存,而且每一轮迭代都需要巨大的通信量。因此矩阵分解并非很适合并行计算。目前处理大规模矩阵分解的最有效的方法就是随机近似,即快速求出一个小矩阵,使得小矩阵尽量多的保留原矩阵的某种性质,然后对小矩阵进行矩阵分解等操作,最后用小矩阵的分解结果近似作为大矩阵的分解。乍看之下,这样的随机近似算法似乎很不靠谱,似乎与精确结果相差十万八千里,然而,不论从理论误差界还是实验结果来看,这种随机近似都是高度精确的。现在随机投影、Nystrom方法等随机近似算法已经成为处理大规模矩阵分解最有效的方法。

结语

在笔者看来,大数据下的机器学习并非是简单地用大数据去训练简单的模型,而是真正地把机器学习方法的规模做大,让复杂模型也能用在大数据上。大数据下的机器学习当今最热门的研究方,不断有新的算法可以使得各种机器学习方法做得更大。随着大规模机器学习算法的发展,大数据将会被机器学习更好的利用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值