机器学习已经开始改变软件开发行业

硬件能力的发展和海量数据使得现有的机器学习方法成为可能,例如模式识别、自然语言处理和强化学习。人工智能正在影响软件开发过程,给版本控制、CI/CD和测试等带来了额外的复杂性。

ThoughtWorks人工智能全球主管Christoph Windheuser在Goto Berlin 2018大会上谈到了各个行业中的人工智能应用程序。InfoQ通过问答、摘要和文章的形式报道了本次大会。

Windheuser认为,机器学习方法的最大优点是可以通过学习数据而不是编程来优化算法。这意味着算法可以实现无法通过编程来实现的行为,例如光学和声学模式识别或自然语言处理。他说,随之而来的是全新的应用程序,可能性是无穷无尽的。

Windheuser表示,在数据科学和机器学习项目中,开发人员不仅需要处理他们的编程代码,还需要处理大量数据,例如训练模式、从这些模式中提取的特征以及学习算法的参数和超参数。他认为,这为开发过程带来了新的复杂性。

在他的演讲之后,InfoQ采访了Windheuser。

InfoQ:人工智能为我们带来了哪些可能性?

Christoph Windheuser:随着硬件功能的大幅进步和可用的大量数据,一些众所周知的旧机器学习方法出现了全新可扩展和可操作的应用方式。在模式识别领域有语音识别和图像识别,在自然语言处理领域有语言翻译、情感分析、意图识别、文本到语音和聊天机器人。通过强化学习,甚至可以学会玩电子游戏、下棋或平稳驾驶汽车。如果没有机器学习方法,这一切都是不可能的。

InfoQ:数据在应用人工智能方面扮演着什么样的角色?

Windheuser:数据是机器学习算法的基础。对于像反向传播这样的监督学习,为了实现神经网络的泛化,你需要的训练模式数量远远超过了用于优化(权重)的参数。对于具有大量层、每层具有大量单元的深度学习模型,参数的数量很容易就达到数百万个,要进行成功的训练,这需要更多的训练模式。

对于监督学习,训练模式需要标签(例如对模式的正确分类),而这些通常需要手动进行。除此之外,数据模式必须具有正确的形式,这样才能被学习算法接受。这意味着必须从训练数据中提取正确的特征。这对于获得良好的训练算法来说非常重要。

例如,如果你想了解未来客户对杂货店商品的需求,可以使用历史销售数据来预测未来的销售情况。你可以直接使用POS(销售点)数据来训练你的网络。从POS数据中提取时间戳的工作日部分会非常有用,并将其作为特征提供给神经网络。因为客户需求高度依赖于工作日,这将有助于神经网络更容易、更快地学习。

InfoQ:人工智能将如何改变软件开发和部署流程?

Windheuser:人工智能已经在很多方面改变了开发过程。为了能够在出现问题或者训练实验没有显示预期结果的情况下进行回滚,代码和数据必须被设置回过去定义的某个一致的点。我们使用开源工具DVC(数据科学版本控制——dvc.org)获得了一些很好的体验,即使数据位于远程的云存储桶中。

此外,持续集成/持续交付(CI/CD)环境的设置变得越来越复杂。你通常会同时拥有多个流和管道,例如,一个用于应用程序开发,一个用于数据科学和机器学习模型。如果你为了加速训练速度在多台计算机上进行并行训练,则必须借助管道的扇入和扇出来并行化训练,并在之后进行同步测试。在我们的很多项目中,我们使用的是GoCD环境,这是一个由ThoughtWorks开发的开源工具,能够管理这种复杂的CI/CD环境。

使用机器学习组件测试应用程序的需求也变得越来越普遍。除了不同组件的单元测试之外,还必须使用一些KPI(例如错误率或在独立测试集上实现的混淆矩阵)来测试训练阶段的成功率。在很多情况下,功能测试无法完全自动化。以聊天机器人为例:它的功能不能完全通过自动化进行测试,因为自动化测试只能测试到一小部分对话。由于机器学习应用程序功能测试的成本很高,我们经常使用“测试表”而不是经典的“测试金字塔”。

InfoQ:人工智能将为我们带来怎样的未来?

Windheuser:这很难预测,因为这个领域正在快速发生变化。为了将人工智能及其应用推向一个新的水平,新的科学突破是必要的,例如在无监督学习、获取现实世界知识或推理领域。这可能会在接下来的几个月或几年内发生,或者可能需要几十年,中间还可能出现另一个AI寒冬。我真的相信,最终,拥有超智能的通用人工智能(AGI)将成为可能,但这仍需要很长时间。

查看英文原文Q&A with Christoph Windheuser on AI Applications in the Industry

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章