热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

人工智能改变开发软件的6种方式

人工智能改变开发软件的6种方式

AI正在改变所有业务功能,软件开发也不例外。机器学习技术不仅可以用于加速传统的软件开发生命周期(SDLC),它们为发明技术提供了一种全新的范例。

传统上,开发计算机程序要求您事先准确指定系统要做的事情,然后手工设计技术的所有功能。以明确的方式编写许多任务是可能的,因为在AI出现之前的计算机仍然非常强大。

然而,有许多任务和决定过于复杂,无法以严格的,基于规则的方式教给计算机。即使是一项看似简单的活动,如识别互联网上的照片或视频是否属于猫,也是传统软件开发无法实现的。鉴于猫照片可以采取的巨大排列,没有任何工程师团队可以列举所有能够可靠地识别猫的规则以及可能出现在媒体中的所有其他可能的对象。

机器学习从根本上改变了软件开发范式

进入人工智能技术,如机器学习和深度学习。在这些方法中,工程师不会为如何制定决策和采取行动提供计算机规则。相反,她策划并准备特定于域的数据,这些数据被输入到学习算法中,这些算法经过迭代训练并不断改进。机器学习模型可以从数据中推断出哪些特征和模式是重要的,而无需人类明确地编码这些知识。ML模型的输出甚至可以让人类惊讶并突出我们自己没有想到的观点或细节。

因此,人工智能对计算机编程的最深刻影响是揭示人类如何感知,定义和执行软件开发。作者,科学家和Google研究工程师Pete Warden相信,随着知识在开发者社区中的传播,将会有很长的一段时间,但十年后我预测大多数软件工作都不会涉及编程。”

现任特斯拉人工智能总监的OpenAI前研究科学家Andrej Karpathy对此表示赞同,他说明了“未来很大一部分程序员不会维护复杂的软件存储库,编写错综复杂的程序或分析其运行时间。他们收集,清理,操纵,标记,分析和可视化为神经网络提供数据的数据。“Karpathy用高度可引用的洞察力描述了海洋变化:”神经网络不仅仅是另一个分类器,它们代表了我们如何根本转变的开始编写软件。它们是软件2.0 。 “

他将软件1.0的“经典堆栈”描述为计算机的明确指令,由程序员使用Python或C ++等语言编写。传统的软件开发生命周期通常从需求定义(即技术规范)开始,然后转向设计和开发。一旦构建了可行的原型,就会进行QA测试。最后,一旦产品通过集合,它将被部署到生产中并且必须持续维护。敏捷流程可以使这个周期变得更快,因为工程师将选择较小的功能集来专注于2-4周的冲刺,而不是试图一次性构建整个软件。无论是敏捷还是瀑布,这个过程基本上是相同的。

随着时间的推移,这些系统变得异常复杂,需要多个依赖关系和集成以及层功能和接口层。所有这些组件必须由人工手动管理和更新,从而导致不一致和无法解决的错误。

相比之下,机器学习模型推断数据中的重要特征和模式。用Karpathy的话来说,软件2.0是以“神经网络权重”的形式编写的代码,不是由人类编写的,而是通过机器学习方法,如反向传播和随机梯度下降。更新模型需要使用新数据重新训练算法,这将改变模型的行为和执行方式。

虽然机器学习开发有其自身的调试和维护挑战,但Karpathy强调了这样一个事实,即软件2.0已经变得非常可行和有价值,因为“很大一部分现实问题具有收集数据更容易的特性”(或者更一般地说,确定一个理想的行为,而不是明确地编写程序。“从软件2.0中受益最多的领域包括计算机视觉,语音识别,机器翻译,游戏,机器人和数据库。

Karpathy还引用了新范式的好处:

更加同质化,更易于管理
可以轻松烘焙成硬件
持续运行时间和内存使用
高度的便携性
高度的敏捷性和可集成性
更容易为未来的开发人员学习
比某些功能/垂直(即图像/视频,声音/语音和文本)中最好的人类编码器更好

然而,专业人士并非没有缺点。许多机器学习方法的关键局限性是我们人类无法完全理解这些复杂系统的工作原理,导致它们在我们看来是“黑匣子”。由于我们缺乏理解和控制而产生的另一个挑战是由于算法偏差和偏执机器人等有缺陷的模型而产生的无意识和令人尴尬的后果。

传统软件从ML技术中获得提升

然而,传统的软件开发并没有消失。培养高性能机器学习模型只是产品化AI技术的一个步骤。正如一篇受欢迎的Google论文断言,只有一小部分真实世界的机器学习系统由机器学习代码组成。

数据管理,前端产品接口和安全性等关键组件仍需要由常规软件处理。但是,使用传统SDLC开发的技术仍然可以通过以下方式受益于机器学习方法:

1.快速原型制作。将业务需求转变为技术产品通常需要数月甚至数年的计划,但机器学习通过使技术领域较少的专家能够使用自然语言或可视化界面开发技术来缩短此过程。

2.智能编程助手。开发人员将大部分时间用于阅读文档和调试代码。智能编程助手可以通过提供即时支持和建议(例如相关文档,最佳实践和代码示例)来缩短这一时间。此类助手的示例包括Kite for Python和Codota for Java。

3.自动分析和错误处理。编程助手还可以从过去的经验中学习,以识别常见错误并在开发阶段自动标记它们。一旦部署了技术,机器学习也可用于分析系统日志,以快速甚至主动地标记错误。将来,还可以使软件在没有人为干预的情况下动态地改变以响应错误。

4.自动代码重构。清洁代码对团队协作和长期维护至关重要。随着企业升级技术,大规模的重构是不可避免的,往往是痛苦的必需品。机器学习可用于分析代码并自动优化代码以实现可解释性和性能。

5.精确估计。众所周知,软件开发超出了预算和时间表。可靠的估算需要深厚的专业知识,对环境的理解以及对实施团队的熟悉程度。机器学习可以训练过去项目中的数据 - 例如用户故事,特征定义,估计和实际情况 - 以更准确地预测工作量和预算。

6.战略决策。花费大量时间来讨论哪些产品和功能要优先考虑哪些以及哪些要削减。针对过去的开发项目和业务因素培训的AI解决方案可以评估现有应用程序的性能,并帮助业务负责人和工程团队确定最大化影响并最大限度降低风险的工作。

根据Forrester Research关于AI对软件开发影响的报告,将AI应用于软件开发的大部分兴趣在于自动化测试和错误检测工具。

AI可以创建AI吗?

最终的问题是人工智能是否可以创造人工智能,从而颠覆人类对技术开发的需求。实际上,我们已经看到AutoML解决方案的巨大增长,这些解决方案旨在实现机器学习模型培训流程的自动化,减少数据科学家和工程师的工作量,并使领域专家能够培训生产质量模型。诸如H2O.ai的无人驾驶AI,Google Cloud的AutoML和Amazon Sagemaker等解决方案可自动化或简化关键组件,例如数据准备,模型搜索和调整以及模型部署和扩展。

相关文章:http://www.ljswrj.com/8/546.html

以上由深圳逻辑思维软件发布,转载请注明出处。

转载于:https://blog.51cto.com/14048984/2363705


推荐阅读
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
author-avatar
史玥Zaira_717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有