这种方法可称为“显式编程”,从大型机到智能手机,从互联网热潮到移动革命,它都不可或缺。它促进了一个全新市场的诞生,使苹果、微软、谷歌、Facebook等公司家喻户晓。
,还是少了些东西。早期计算机时代作家设想的智能系统,如,菲利普?迪克《银翼杀手》中的出租车和乔治?卢卡斯《星球大战系列》的C-3PO机器人,仍然是科幻小说的内容。看似简单的任务也顽固地拒绝哪怕最有才华的计算机科学家设计的自动化方法。专家们指责硅谷在面对这些挑战时,回避这些基本问题上的进展,却专注于增量业务或热门业务。
,这即将发生改变。Waymo的自动驾驶汽车最近完成了800万英里的路测里程。微软的翻译引擎在中译英任务中几乎接近实现人类译员的准确程度。初创公司在智能助理、工业自动化、欺诈检测等领域正不断取得新突破。
这些新技术有望从不同方面各自影响我们的日常生活。,它们代表了我们对软件开发的看法的巨大变化,与显式编程模式明显不同。
这些进步背后的核心突破是深度学习,这是一种受人类大脑结构启发的人工智能技术。它最初只是用途相对较窄的数据分析工具,现在已几乎发挥着一种通用计算平台的作用。在广泛的任务范围内,它的性能优于传统软件,最终可能催生长久以来计算机科学家难以实现的智能系统。媒体有时会夸大其词地报道人工智能技术的这些前景。
,在对深度学习的大肆宣传中,许多观察者都遗漏了对其未来持乐观态度的最大理由深度学习需要编码人员编写非常少的实际代码。深度学习系统并非依赖预设规则,而是根据过去的范例自动编写规则。软件开发人员只需要创建一个“粗糙的骨架”,然后让计算机完成其余工作。例如,特斯拉聘请了深度学习和计算机视觉专家安德烈?卡帕斯(Andrej Karpathy),正是希望他在自动驾驶业务中融入深度学习技术。
在这个新世界中,开发人员不再需要为每个问题设计特有的算法。相反,大多数工作的重点是生成反映所需行为和管理训练进程的数据集。来自谷歌TensorFlo团队的皮特?沃顿(Pete Warden)早在2014年就指出这一点他写道,“我曾是一名程序员,现在我教电脑自己编写程序。”
当今,驱动最重要的软件进步的编程模型不需要大量的实际编程。
这对软件开发的未来意味着什么?
编程和数据科学将日益趋同。在可预见的未来,大多数软件将不采用“端到端”学习系统,而是依靠数据模型提供核心的认知能力和明确的逻辑,以便与用户交互及阐释结果。一个问题将越来越多地被提出“我应该使用人工智能还是传统方法解决这个问题?”实际上,智能系统的设计者将需要精通这两方面。
人工智能从业者将成为抢手的人才。人工智能技术的研发难度大。普通的人工智能开发人员将成为未来软件公司最宝贵的资源之一。对传统的编码人员而言,这确实有一丝讽刺意味。20世纪50年代开始,他们使其他行业的工作自动化了,而现在他们自己的工作却被部分自动化了。对他们工作的需求肯定不会降低,但那些想要保持前沿地位的人必须以适度的怀疑态度来试水人工智能。
我们需要构建人工智能工具链。 Lyft的机器学习主管吉尔?阿尔迪蒂(Gil Arditi)对这个问题阐述得很清楚。他说,“机器学习处于初始阶段。它类似于上世纪80年代早期或70年代末期的数据库。你必须成为全球专家才能让它们正常运作。” 研究还表明,许多人工智能模型很难解释,很容易被欺骗,容易受到偏见。掌握解决这些问题的工具对于发掘人工智能开发人员的潜力是必要的。
我们都需要接受不可预测的行为。开发人员和用户都已习惯计算机“指令”这个比喻。“指令”强化了这样一种信念,即计算机完全按照我们的指令行事,输入总能产生近似等量的输出。相比之下,人工智能模型就像有生命的呼吸系统。新型工具将使它们更像显式编程,特别在关键的安全设置中,但如果我们把限制设置得太严密,我们就会面临一种风险——丧失这些人工智能系统的特殊价值,如AlphaGo的意外棋步。我们开发和使用人工智能时,需要理解并接受各种概率结果。