算法和架构
㈠ 搞架构和搞算法,哪个更牛一些
我以为,这个问题的答案不是“谁更牛”,而是应该(甚至必须)二者得兼。
先说说机器学习算法的重要性。最近十年的IT行业是互联网主导的。互联网服务之所以称为服务,就是要能了解、理解、服务好用户。传统行业如银行、医院、商场也是服务行业。互联网服务和他们的区别在于——利用机器智能,回答长尾问题,服务大众——用户不需要是衣冠楚楚的就可以P2P贷款。这是人工智能技术最近十年在互联网行业发展起来的核心原因。也是大家能看到所谓”算法工程师”的收入比其他工种相对高的原因。
人工智能算法和大学专业课“算法”有一个本质区别:后者教大家如何用“人脑”,利用人的知识,想明白解法,然后描述成代码,让机器照着执行;而前者是让机器去从数据里“学习”或者“总结”知识,然后来解决问题。
要想互联网服务质量过人一等,能回答好的问题要更多,所以知识的量得更大,也就是说要能从更多数据中学习和归纳知识。这就是“大数据”的核心价值,也是“架构”技法的重要性。
用Python+NumPy、R、Matlab、Octave、甚至一台机器里的一两个GPU、不具备容错能力从而只能覆盖几十台机器的MPI,在很多情况下都不能搞定”大数据学习“问题。读书的时候,用这些工具只是方便大家对人工智能算法尽快有个了解。实际情况是,最好在工作前,至少在工作中,要能掌握large scale system开发的思想和方法。
大数据学习支撑互联网行业突破已经至少十年了。它悄悄带来了很多革命性的变化:tenure的知名人工智能教授们也面临中年危机了;其中有远见有执行力的人寻求进入公司发力(入Andrew Ng);有业界经验的人开始进入大学执教(如Alexander Smola);架构高手跨界进入人工智能算法领域(如Jeff Dean);大数据存储和处理相关的开源项目的兴盛(如Hadoop、Spark、Mesos、CoreOS、Kubernetes。
如果在这样的大潮前还看不到两者得兼的必要性,还在二者选一,甚至通过回避技术完备去谈”商业模式上的突破“,在没有做好log信息和第三方数据收集时自称”我们没有大数据“,都可能让我们在不远的未来会碰到尴尬。