时间:2018-09-05 来源:互联网 浏览量:
几十年来,软件开发已经手动完成。
从FORTRAN中的打卡到在Go中编写分布式系统,该学科基本上保持相同:深入思考问题,提出一种聪明的方法(即算法)并给机器一组执行指令。
这种方法可称为“显式编程”,从大型机到智能手机,从互联网热潮到移动革命,都是不可或缺的。它帮助创造了新的市场,并使像苹果,微软,谷歌和Facebook家喻户晓的公司成名。
然而,缺少一些东西。早期计算机时代作家设想的智能系统,从菲利普迪克的机器人出租车到乔治卢卡斯的C-3PO,仍然是科幻小说。即使是最聪明的计算机科学家,看似简单的任务也顽固地无视自动化。专家们指责硅谷面对这些挑战,转而摆脱基本进步,专注于增量或时尚驱动的业务。
那当然是即将改变的。 Waymo的自动驾驶汽车最近通过了800万英里。微软的翻译引擎虽然不能流利地使用600万种通信形式,但在中英文任务中可以达到人类的准确程度。初创公司在智能助理,工业自动化,欺诈检测等领域开辟了新的领域。
个别地,这些新技术有望影响我们的日常生活。总的来说,它们代表了我们对软件开发的思考方式的巨大变化 - 与显式编程模型的显着不同。
这些进步背后的核心突破是深度学习,这是一种受人类大脑结构启发的人工智能技术。最初作为一个相对狭窄的数据分析工具现在可以作为一个接近通用计算平台的东西。它在广泛的任务范围内优于传统软件,最终可能提供长期躲避计算机科学家的智能系统 - 这些都是媒体有时不成比例的壮举。
然而,在深度学习炒作中,许多观察者都错过了对其未来持乐观态度的最大理由:深度学习需要编码人员编写非常少的实际代码。深度学习系统不是依赖于预设规则或if-then语句,而是根据过去的示例自动编写规则。软件开发人员只需要创建一个“粗糙的骨架”来解释特斯拉的Andrej Karpathy,然后让计算机完成其余工作。
在这个新世界中,开发人员不再需要为每个问题设计一个独特的算法。相反,大多数工作重点是生成反映所需行为和管理培训过程的数据集。来自谷歌TensorFlow团队的Pete Warden早在2014年就指出这一点:“我曾经是一名程序员,”他写道。 “现在我教电脑写自己的节目。”
再次:驱动当今软件中最重要的进步的编程模型不需要大量的实际编程。
这对软件开发的未来意味着什么?
1.编程和数据科学将日益趋同。
大多数软件在可预见的未来都不会采用“端到端”学习系统。它将依靠数据模型提供核心认知能力和明确的逻辑,以便与用户交互并解释结果。问题“我应该使用人工智能还是传统方法解决这个问题?”这个问题将会越来越多。设计智能系统需要掌握两者。
2.AI从业者将成为摇滚明星。
做AI很难。排名和文件的AI开发人员 - 不仅仅是杰出的学者和研究人员 - 将成为未来软件公司最宝贵的资源之一。这为传统的编码人员带来了一丝讽刺,他们从20世纪50年代开始在其他行业自动化工作,现在他们面临着自己工作的部分自动化。对他们服务的需求肯定不会下降,但那些想要保持领先地位的人必须以健康的怀疑态度来测试人工智能。
3.需要构建AI工具链。
Lyft的机器学习主管Gil Arditi表示最好。 “机器学习处于原始的汤阶段。它类似于80年代早期或70年代末期的数据库。你必须成为世界上专家才能让这些东西发挥作用。“研究还表明,很多人工智能模型很难解释,很容易被欺骗,容易受到偏见。解决这些问题的工具对于释放AI开发人员的潜力是必要的。
4.我们都需要对不可预测的行为感到满意。
计算机“指令”的比喻对于开发人员和用户来说都是熟悉的。它强化了这样一种信念,即计算机完全按照我们的说法行事,类似的输入总能产生类似的输出。相比之下,AI模型就像生命的呼吸系统。新的工具将使它们更像显式程序,特别是在安全关键设置中,但我们冒着丢失这些系统的价值 - 如AlphaGo的“外星人”动作 - 如果我们设置的护栏太紧。在我们开发和使用AI应用程序时,我们需要理解并接受概率结果。
并希望AI接管的可能性接近于零。