反思AI时代的软件开发
2019/10/8 16:10:13

  数据正在快速取代代码,成为了软件开发的基础。以下是领先的组织如何在开发人员驾驭这种范式转换时预测流程和工具的转换的。
  随着企业开始指望人工智能来推动其数字化转型,软件开发也将发生巨大变化。
  公司已经准备好让开发人员跟上机器学习算法和神经网络的速度,并期待着看到人工智能将如何使许多开发和测试功能自动化。
  但许多企业没有注意到的是软件本身的性质也在发生着变化。
  今天,应用程序是确定的。它们是围绕循环和决策树构建的。如果应用程序不能正常工作,开发人员就会分析代码并使用调试工具来跟踪逻辑流程,然后重写代码以修复这些错误。
  而当系统是由人工智能和机器学习驱动时,应用程序就不是这样开发的。虽然,有些公司有时会为算法本身编写新的代码,但是大部分工作是在其他地方完成的,因为他们会从开源库中选择标准算法,或者从他们的人工智能平台中选择可用的选项。
  然后,通过选择正确的训练集并告诉算法哪些数据点(或特征)是很重要的以及它们应该被加权多少,这些算法最终被转换成了工作系统。
  这种将数据作为开发软件系统核心的转变,使得领先的公司不仅需要重新思考他们将如何开发软件,还要重新思考他们成功驾驭这种范式转变时所需的工具和流程。
  对“软件2.0”的介绍
  在去年的Spark+AI峰会上,特斯拉人工智能总监Andrej Karpathy谈到,这家自动驾驶汽车公司正在向这种新的代码开发方式过渡,他称之为软件2.0。
  人工智能驱动的优化算法,如神经网络,可以针对一个问题,尝试各种解决方案的评估标准,直到找到他们所认为的颇佳的解决方案。因此,例如,该系统可以通过数百万张标签图像来学习区分汽车和行人。
  “我们设计得更少了,事情也做得更好了,”他说。
  但是当这种方法不起作用时会发生什么呢?例如,当特斯拉的自动驾驶汽车在通过隧道时很难确定是否需要打开挡风玻璃雨刷时,解决办法不是深入研究机器学习算法,找出它们的不足之处。
  相反,该公司会发现其训练数据中没有足够的汽车通过隧道行驶的例子。解决办法是从隧道里拍摄的汽车中提取更多的图像,并发送给人类进行分类。
  “作为一名博士生,我花了很多时间来研究模型和算法,以及该如何训练这些网络,”Karpathy说。“但是在特斯拉,我大部分时间都在整理数据集。”
  但管理训练数据并非只是让人类看到一组图像并给它们贴上标签那么简单。首先,开发人员需要对数据本身有深刻的理解。例如,一个观察汽车变道静态图像的系统很难判断出汽车的转向信号灯是否正在闪烁。解决这个问题需要回到训练图像上,并对它们进行不同的标注。
  但是现在改变图像的标记方式可能意味着许多以前分类的图像现在也须重新标记。
  此外,人类在给图像贴标签时也可能会出错,或者彼此有不同看法,或者图像本身也可能会有问题。这意味着须有一个逐步升级和跟踪问题的过程。
  特斯拉开始这项工作时,管理这种新的软件开发方法的流程和工具并不存在。
  “在软件1.0中,我们有IDE来帮助我们编写代码,”karpathy说。“但是现在我们没有显式地编写代码,而是在不断地积累和修改数据集,它们实际上就是代码。数据集的IDE是什么?”
  从代码到数据
  Alex Spinelli在去年成为LivePerson的首席技术官之前,曾领导过亚马逊的 Alexa,他亲眼目睹了开发过程的这种转变。
  “以前,会有决策树、路径、案例陈述,”他说,而现在开发人员须知道要有足够的数据,有正确的例子,以使算法有继续工作所需的燃料。“我们实际上正在为我们所支持的行业创造新的算法。”
  20多年来

下一页
返回列表
返回首页
©2024 深度学习世界--关注深度学习应用,提供深度学习资料下载和技术交流 电脑版
Powered by iwms