参与:晏奇、微胖、吴攀 上周,j2直播,我收到了两个前提截然相反的问题:其中一个是兴奋地认为机器学习目前已经自动化了,而另一个则担心学习机器学习会花掉多年的时间,以下是这两个问题的原话: 问题 1:我听说,谷歌云宣称,企业家能轻易且快速的基于机器学习/自然语言处理的 API 开发自己的程序。如果这是真的:「那么,机器学习和数据未来已经到来,谷歌已经找到了解决自然语言处理和语音提升问题的办法,用他们的 API 就可以轻松享受这一红利。既然秘诀已经被商业化,你也可以利用这一秘诀。问题是,秘诀到来的时间是否会越来越短呢? 问题 2:为了在机器学习领域工作,你需要一个该领域的 PhD,这事真的吗?还有就是在学习机器学习之前,是不是一定要先修微积分、线性代数、概率论/统计学这些乏味的全套大学数学课程,然后再学 C/C++和并行分布式编程(CUDA、MPI、OpenMP 等等)。Hacker News 一个评分最高的评论说,即便你把这些内容学了个遍,还是得从头开始应用机器学习算法,先是 C,接下来是 MPI 或 CUDA,然后是 Numpy,然后你才能学会在 Theano 或者 TensorFlow 上应用它们。 回答:很多人在人工智能热,以及诸如「人工智能是那些天才们的专属工具」的警告中昏了头,完全可以理解啊。对于记者来说,人工智能是个很难报道的领域,而且遗憾的是,被歪曲的事实随处可见。比如,最近有一篇文章 Stop saying DeepCoder steals code from StackOverflow 就研究了 DeepCoder 是如何被媒体误解的。 我对以上两个问题的回答是:不,两个问题似乎截然不同,但它们有一个共同的思路:很多在机器学习领域工作的人都对以下两点之一感兴趣: 1. 说服你购买他们的多用途机器学习 API。 2. 让你相信他们做得事情非常复杂、困难以及门槛很高,一般人很难理解。(这个常见的话题,最近 reddit 上一篇戏谑它的文章被顶到了机器学习页首。) 的确,机器学习的进步非常迅速,但就目前而言,你只需要能通过有效编程,使用到这项技术。我们的免费在线课程 Practical Deep Learning for Coders可以让你在 70 小时学习之后,高效使用深度学习技术。 为何「机器学习即服务」(Machine Learning As A Service,MLaaS)在实践中令人失望? 拥有一款通用机器学习 API 看起来是一个好点子,但是,事实上我们的技术目前还达不到。现有的 API 都太过局限而无法推广,有些 API 试图变得非常通用,但其实际效果非常差。Bradford Cross(他是 Flightcaster 与 Prismatic 的创始人,Data Collective VC 合伙人)写了篇文章,分析了最近很多人工智能公司尝试打造用户需要且愿意付钱使用的产品,但都失败的原因,他写道:「有观点认为,现在,那些从事或者围绕人工智能工作的人要负责引导人类进步,因为他们在从事重要的工作。这种态度就是这些失败的罪魁祸首。这种自大的观点让大家看不到这一事:他们正困在一间回音室里,屋子里所有人都在讨论技术趋势而不是客户需要和经济账。」 Cross 继续写道「机器学习即服务(MLaaS)是一个我们关注了近 10 年的想法,但是一直以来,它并不被看好。它之所以没有实现,根本原因在于,懂行的人只使用开源,而那些不懂行的根本无法做任何事情,有了 API 也不行。很多非常聪明的朋友都落入了这个陷阱。 大公司为了壮大自己的机器学习团队,收购了很多公司,其中就有被 IBM 收购的 Alchemy API,被 Intel 收购的 Saffron 以及被 Salesforce 收购的 Metamind。API 功能背后的机器学习模式赚钱轻松又快,这一点继续引诱着那些无助的人。亚马逊、谷歌和微软都尝试出售 MLaaS 层,将此作为自己云战略一部分。我还没见过在自然场景下(in the wild)使用这些接口的创业公司或者大公司,倒是看到很多人在这一场景下使用人工智能技术,或许是因为我观察不足吧。」 谷歌云会是解决问题的答案吗? 谷歌并非定位帮助实现深度学习的民主化。不是因为公司意图叵测,而是因为他们有太多服务器、太多钱和太多数据了,根本不用担心世界上大多数人和公司面临的问题——如何充分利用有限的 GPU 、有限的数据集和有限的预算。AWS 可是很贵的!谷歌大脑技术过于高级,不是普通程序员能染指的。 例如,TensorFlow 是一门低层面的语言,但是,在发布和推广它的时候,谷歌似乎没有注意到这一点。TensorFlow 的设计者本可以使用一种更加标准的面向对象的方法(如 PyTorch 就非常好),但是,他们没有,而是沿袭了谷歌的优良传统:发明一种仅适合谷歌的新惯例。 所以,如果谷歌甚至不能设计一个熟练数据科学家容易上手的库,怎么可能创造出普通人可用来解决真实问题的东西呢? Hacker News 的计划:「普通 C 实现算法,j2直播,然后 CUDA,最后用普通的 Numpy/MATLAB。」 (责任编辑:本港台直播) |