算法和算法框架是机器学习非常重要的两个因素,算法就是诸如LR、GBDT、DNN、DeepFM这样的实际解决某个数学问题的公式实现。算法框架指的是计算框架,计算框架可以让算法执行更高效,比如最早玩深度学习的人都用过Theano,基于Theano去开发算法很困难,后来有了PyTorch和TensorFlow,让基于深度学习的算法开发更方便。
最近看了很多文章也参加了很多讨论,分享下我的看法。目前看上来,业内做框架的看上去更吃香,特别是在大公司。但是这个现状跟我自己的看法有些出入。
首先我们回顾下算法的发展,其实无论是浅层的以LR为代表的算法,还是深度学习中以DNN为代表的算法。本质上都是计算梯度,然后反向传播去更新每一层级网络的参数,区别就是网络层数不同。可以说这种算法诞生于上世纪60年代,在这么多年的发展中,这些算法并没有被时代淘汰。即使是今天,LR依然在大部分业内的推荐系统中发光发热。
算法之所以有生命力,是因为算法跟业务结合的更紧密,无论是上世纪还是下世纪,我觉得业务的本质不会变,这也意味着算法的逻辑本质上不会变,只会不断演进。
而框架往往是不感知业务逻辑的,今天的TF框架跟10年前的框架不同,而10年前的框架跟20年前的框架又不同。我的一个观点是框架软件层面的优化永远追不上硬件的发展。
举个例子,10年前做机器学习都用CPU为计算资源,当时很多人做CPU计算框架的编译优化。但是后来Hilton的学生发表了如何用GPU做深度学习,一下子将计算效率提升了几十倍,这种情况下过去CPU级别的框架优化变的没有那么有意义。未来可能有TPU,有量子计算等计算硬件不断推出。今天的框架优化,一定会在未来成为泡影。
既然算法更有生命力,框架是暂时的,那是不是就不做框架优化了?这个要站在不同的角度去看,如果今天对一个开发同学来说,我觉得做框架更有意义,因为框架会涉及到更多的底层,门槛更高。虽然今天框架会逐渐被未来的框架替代,但是其中的一些优化逻辑是相同的。所以,对于技术同学来说,做框架更有前途。
那如果是站在产品经理的角度呢?产品经理会更多地去接触业务,我觉得去更多了解算法更有前途。
所以框架和算法谁是未来,对于产品经理来说,更多地了解算法更好。对于技术同学来说,优化框架更有利于技术发展。自己的一点看法~欢迎抛砖。