编者按:人工智能正在成为像“电力”一样的东西,每一个关系未来发展的人都应该对其有所了解。尤其是开发者,不懂人工智能,竞争力将会在将来大幅度下降。在Shival Gupta发表在Hacker Noon上的一篇文章中,他介绍了自己怎样在2个月入门学习人工智能的历程。文章由36氪编译。
现在这个时代,每个人都很忙。人们的个人生活和职业生涯都在发生着巨大的变化。最重要的是,随着像人工智能这样的技术开始变得越来越流行,你会发现在接下来的两年里,你所掌握的技能会变得过时。
当我关闭我的创业公司Zeading时,我猛然醒悟过来。感觉自己错过了一些非常独特的东西。
在不断变化的情况下,作为一名传统意义上的全栈工程师是不够的。在接下来的两年里,如果没有掌握人工智能技术,全栈工程师将不再是全栈工程师了。
是时候采取行动了。我做出了我认为现在唯一能做的行动 —— 更新了我作为一名开发者的技能,并以产品经理一样的心态和企业家一样的理念来面对数据,并以数据为导向。
正如著名的风险投资家、人工智能和金融科技行业的思想***Spiros Margaris对我说的那样:
如果创业公司和企业只依靠先进的人工智能和机器学习算法来展开竞争,是远远不够的。人工智能将不再是一项竞争优势,而是一项基本要求。你听到有人把“用电”作为竞争优势吗?
构建我的***个神经网络
一个非常常见的建议是在Coursera上听Andrew Ng(吴恩达)的课程。这是一个非常好的入门方式,但我发现,我很难长时间保持清醒。我并不是说这门课很糟糕,但我真的很难在课堂上保持专注。我的学习模式一直都是实践,从实践中获取新的知识。所以我想,我为什么不自己来打造一个神经网络呢?
但我没有直接去着手构建一个神经网络,因为它是一个更加高级的学习方法。我刚开始先去试着熟悉这个领域里的所有的术语,这样我就能对这个领域有所了解。
***个任务不是学习。而是熟悉。
我是纯Javascript和Node js出身,当时并不想换成其他的编程语言。因此,我搜索了一个名为“nn”的简单神经网络模块,然后通过模拟输入用它来实现一个“AND”操作。受一个教程的启发(传送门),我选择了这么一个问题:对于任意的输入 X,Y,Z,输出结果都是 X AND Y。相应的代码如下:
当得到的结果是0.9971时,我意识到,这个神经网络已经学会了如何做一个AND操作,并且忽略了附加的输入。这样的结果极大地增强了我的自信心。
这就是机器学习的要点。你给计算机程序一组数据,它能够自动调整内部参数,使其能够在新数据上回答问题,而原始数据中的误差也在减少。
这种方法,正如我后来了解到的,也被称为梯度下降(gradient descent)。
补充人工智能相关的知识
在我完成了***个人工智能程序后,我充满了信心,我想知道作为一名开发人员,我还能做些什么。
-
我解决了一些监督学习的问题,如回归和分类。
-
我通过一个有限的数据集,尝试用多元线性回归预测哪支队伍将取得比赛胜利(虽然当时的预测很不准确,但确实很酷)。
-
我在Google机器学习云的上做了一些演示,看看现在人工智能能做什么(作为一款SaaS工具,Google已经做得非常好了)。
-
我偶然发现了AI Playbook,这是一个很棒的资源,由著名的风险投资基金Andreessen-Horowitz收集组织。对于开发者和创业者来说,这的确是最方便的资源之一。
-
我开始在Youtube上观看以深度学习和机器学习为核心的Siraj Rawal的精彩频道。
-
我读了一篇发表在Hacker Noon上的精彩文章,内容是关于硅谷的展示者如何打造Not Hotdog的应用程序。这是我们能做的、且最容易理解的深度学习的例子之一。
-
我开始阅读特斯拉的人工智能主管Andrej Karpathy的博客。虽然说我很难理解其中的内容,让我很头疼。但我发现,在尝试了更多的时间之后,我开始理解其中的一些概念了。
-
带着一些勇气,我开始逐字地(复制和粘贴)来执行一些深度学习教程,并试图训练模型,并在我的本地机器上运行代码。大多数情况下,结果都不容乐观,因为大多数模型需要的训练时间很长,而且我也没有 GPU。
逐渐地,我从JavaScript切换到了Python,并在我的Windows机器上安装了Tensorflow。
整个过程,我都是在被动地消化内容,并在脑海里建立了一些相关的认知,当以后遇到真正的问题时,就可以使用这些知识了。
正如Steve Jobs在斯坦福大学演讲时所说的,你在向未来展望的时候不可能将这些片断串连起来,你只能在回顾的时候串起它们。
做一个聊天机器人
作为电影《Her》的忠实粉丝,我也想要打造一个聊天机器人。我接受了这个挑战,然后用Tensorflow在不到两小时内完成了这项举动。并在几天前的一篇文章中概述了我是怎么完成的以及它的商业需求。
幸运的是,这篇文章广受好评,在网上疯传(传送门,36氪编译文章)。这对我个人而言,这是一个非常好的现象,毕竟我才刚开始写技术博客。我认为这篇文章是我人工智能学习之旅的一个里程碑。
它让我在Twitter和LinkedIn上结交了很多朋友,我可以和他们深入地讨论人工智能开发,发现自己的不足,甚至在我遇到问题时,他们也能够伸出援手。我也收到了一些咨询项目的offer。最重要的是,年轻的开发者和人工智能初学者开始问我,我是如何开始学习人工智能的。
这就是我写这篇文章的原因。帮助更多的人从我的学习过程中获得灵感,开始他们自己的学习过程。
万事开头难,入门是任何过程中***挑战性的部分。
结语
这绝对不是一个容易的事情。当我开始被Javascript卡住的时候,我几乎在一夜之间就开始用上了Python,并学会了如何用其编写代码。当我的模型无法在我的i7机器上进行训练时,我开始变得烦躁,甚至在经过数小时的训练后,它们也会返回一个很显然是错误的结果,即球队赢得板球比赛的概率是50/50。学习人工智能不像学习一个Web框架。
这是一项技能,你需要了解计算的微观层面上发生了什么,并找出对输出结果产生极大影响的部分——代码或数据。
同样,人工智能也不仅仅是一个学科。它是一个“从简单的回归问题到总有一天会杀了我们的致命机器人”的统称。就像你所从事的其他学科一样,你可能会想要在人工智能领域挑选出你想要擅长的东西,比如计算机视觉或自然语言处理等等。
在与人工智能、金融科技和加密技术领域的***Gaurav Sharma的对话中,他向我表示:
在人工智能时代,“聪明”(being smart)将意味着完全不同的东西。我们需要人们去执行更高层次的、批判性的、创造性的,或其他需要更多情感投入的工作。
想要开始这段学习过程,你必须让自己沉迷于计算机如何突然学会用它们的方式来做事情。耐心和好奇心是你应该坚持的两个关键原则。
这是一次重大的旅行。非常累人,也非常烦人,而且特别耗费时间。但值得庆幸的是,它和世界上其他的旅行一样,也需要从一个简单的步伐开始。
原文链接:https://hackernoon.com/how-i-started-with-learning-ai-in-the-last-2-months-251d19b23597
编译组出品。编辑:郝鹏程