神经网络技术的应用:软件开发

1.简介


如今,开发软件需要花费很多精力。 将太多的时间花费在将方法学家分配给计算机,设计,编写技术规范,测试的逻辑上,所有这些工作都是由一个人完成的,并且执行起来非常缓慢。 但这原则上可行吗? 技术科学博士Maxim Shcherbakov在他的演讲“神经网络:数学与魔术”中回答:“是的,有可能。” 最好有一个自动化助理来解决问题,只需简单地使用某些条件和模板即可,但是他不必付费,而且可以在最短的时间内完成,但是神经网络今天可以解决哪些具体任务? 如今,机器学习的发展正在飞跃发展,因此明天机器可以代替日常工作中的一个人。 起草技术任务并不是最令人愉快的事情,尤其是因为需要对所有细节进行详细的绘画和形式化(更多细节,请参见第4点)。 每个公司都选择一种特定的软件开发方法,并且很少更改它。 但是,如果另一种方法比以前的方法更适合该项目,或者当前的方法根本不适合该怎么办? 替换是合乎逻辑的,但是要选择哪一个(第5段中的更多详细信息)? 正确的测试应该花费大量的时间和人力。 成本很高且很长(第6段中有更多内容)。 神经网络将降低成本并加快所有这些阶段。

2.缩写


NS-神经网络
软件-软件
TK-职权范围
AI-人工智能

3.人工神经网络


什么是人工智能? 粗略地说,这是一个人使用计算机的模拟。 从某种意义上说,图灵测试回答了这个问题。 其原因在于,在对话过程中,一个人必须确定该人或机器在谁面前。 如今,人们认为图灵测试不太正确,并且使用了其他测试人工智能的方法。 为了更好地理解为什么此测试不完全正确,您可以将其翻转过来。 计算机如何知道它是摆在面前的人? 他会问多少将是754534 * 32,然后启动计时器。 因此,就像我们不能足够快地求解方程式一样,该机器(目前)也无法完全模拟人机交互的所有微妙之处和功能。 按照这种观点,用计算机对大脑进行完整的模拟似乎是不可能的。 因此,目前,我们仅将人工智能用作特定区域的助手。

3.1人工智能简史


人工智能的发展历史不是很轻松有趣。 创造人工智能的早期实验帮助一些公司节省了不少钱。 例如,使用人工智能的数字设备公司(Digital Equipment Corporation)每年节省了1000万美元。 还开发了聊天机器人,细菌识别系统等。 此后,人工智能公司无法实现其所有崇高目标,最终关闭,因此,AI陷入了艰难的时刻,社区开始关注机器学习和神经网络。 1943年,沃伦·麦卡洛克(Warren McCallock)和沃尔特·皮茨(Walter Pitts)创造了术语“人工神经网络”。 使用生物神经元对执行计算的模型进行建模。 在多伦多和蒙特利尔大学学习63年后,他们开始用强大的力量和主体来教授深度神经网络,这成为机器学习的真正革命!

3.2神经网络的原理,其成功与不足


以简化的形式,神经网络的操作原理是查找依赖关系并更改权重,如果操作正确,则负责该操作的标度会增强,反之亦然。 更准确地说,原理是减少一些误差函数。 梯度下降最常用于此目的。



每个人都听说过神经网络的成功。 他们打败了GO游戏的冠军,从理论上讲,这是人的唯一特权,而对于计算机来说,它太复杂了,但是显然这不是事实。 不久之前,在2015年,AlphaGo赢得了五场比赛中的四场,从而赢得了冠军。 还不错吧? 两年后的2017年,神经网络得到了改善,她击败了9位GO冠军,赢得了60场比赛。 对于冠军来说最糟糕的是,该程序绝对随机地运行,最终还是赢了。 Google(AlphaGo开发人员)如何取得这一结果? 一切都得到了改进,AlphaGo的前身得到了培训。 神经网络本身发现了缺点并加以纠正。



神经网络也学会写音乐。 神经网络“聆听”了世界经典的杰作之后,就组成了自己的音乐,并且对机器学习没有很好的理解,几乎不可能将人类创造与机器创造区分开来。 在“神经网络:数学与魔术”讲座中,他们包括了计算机计算的其中一部作品,并愿意听从前说它是由一位伟大的音乐家创作的。 听完听众之后,他们问:“有人上钩了吗?” 有些人回答是。 原来汽车可以做什么? 答案很困难。 为了理解原因,我们将以一个房间里的例子为例,看一下神经网络的原理,该房间里有很多我们看不懂的带有符号的传单。 我们有一种算法,该算法根据如何鼓励或责骂我们的行为来决定如何,在何处移动哪片叶子,或者由我们自己构建此算法。 在这里,我们收到了输入请求,我们根据算法运行了叶子的移动,并为输出获得了一组折叠的叶子,我们不了解这些符号在输入中的含义以及在输出中的含义,我们是一个神经网络。 让我们回到制作音乐。 事实证明,神经网络并不能创造作品,它只是混乱而已,但在某些规则下,它却在不理解作品的情况下跳动了和弦(它使人联想起现代绘画)。 由Yandex的神经网络创建的音乐示例:


他们还学习了如何使用与音乐相同的原理绘制神经网络。



如您所见,机器学习使您能够解决各种各样的任务。 但是,如何教他们如何做这一切呢? 秘密在于机器学习。 让我们回到有叶子的房间,并记住“在这种情况下,我们已经对神经网络进行了训练”,该算法具有如何,在何处以及要转移哪片叶子的算法。 她知道要放什么,放哪里,但是还有第二种选择“我们自己根据是否受到鼓励或责骂来构建此算法”,正是这种选择制定了所谓的增强神经网络训练。 某个“老师”鼓励神经网络的正确动作,结果她会记住并尝试找到正确动作的依存关系,或者“老师”为错误而责骂神经网络,并且她正越来越多地尝试寻找正确动作的依存关系。 还使用以下方法来教神经网络:在有老师的情况下,没有老师,有部分老师参与。 选择取决于训练神经网络的条件。

使用老师的训练,我们必须将具有正确答案的数据集或另一个训练数据集提交给输入,然后神经网络应识别模式并正确响应测试数据集。 通常(逻辑上),神经网络经常被误认为是测试样本,这是由于“再培训问题”造成的。



当一个神经网络处理相同的数据太多次时,它会专门适应该数据样本,结果是,在一个新样本中,许多不同的神经网络被误认为是错误的。

在没有老师的情况下进行培训,我们也会提交数据,但我们不知道正确的答案,而任务是实际找到此数据中的依存关系。 部分教师培训最常用于训练能够处理声音的神经网络。 我们可以找到任意数量的数据,但是标记必须手动完成。

最有趣的(根据某些观点)是强化训练,因为从本质上讲,我们只需注意神经网络执行的正确或不正确的操作就可以向神经网络教授任何内容。 2017年,DOTA 2电子竞技锦标赛以“ 2017年国际邀请赛”的名称举行,当时专业选手与OpenAI神经网络进行了比赛(尽管有一些限制)。 专业人士没有机会获胜。 为了训练该神经网络,使用了一种强化方法。 神经网络已经玩了很多次,并且学会了毫无问题地赢得胜利。 当然,她没有成功就不会成功,因为游戏相当复杂,您可以以此来欺骗神经网络。 一名职业球员只能通过欺骗来获胜。


现在我们已经了解了基础知识,我们可以讨论使用神经网络作为程序员的助手。

4.在创建技术规范中使用神经网络


4.1原理


谁可能需要软件? 如今,每个人都需要并且出于完全不同的目的。 通常,他们自己无法自己创建软件,或者因此,他们不愿求助于程序员。 但是您如何向表演者解释您想要什么呢? 原则上,程序员可以制定一项技术任务,并有条件地告知程序中将包含的内容,但并非所有人都会由于使用术语而完全清楚或被误解。 单独起草传统知识怎么样? 这是困难的,漫长的并且不是必需的,但要付出这样的代价,但是当有必要做一些困难的事情时又为什么又长时间不将这个任务分配给计算机呢? 神经网络将完成此任务。

4.2必要性


构建器离编程很远,实际上离计算机也很远。 对他来说,“ 2.5 GHz及更高​​频率的Intel Core i5 4200M处理器”这一行根本什么也没说,为什么它根本就需要传统知识? 让我们教一个神经网络,根据他的行为为每个人单独更改线条。 例如,以第4.3段“ Intel Core i5 4200M 2.5 GHz或更高”中的同一行为例,我们将其更改为市场上该处理器的简称和平均成本。 因此,它将为客户提供更多信息。

4.3实施


可以使用与老师一起教学的方法来完成。 在入口处,我们提交了承包商可以收到的有关有条件客户的一系列信息。 我们还将添加快捷方式并将其挂在别人身上,并且每个快捷方式后面都会挂有一个程序,这将更改文本。 标准分类任务是一个数据集和几个答案选项。 假设神经网络已确定客户在该领域的知识水平不高,并在转向负责该标签的程序并将文本替换为与客户知识相对应的文本之后,在其上悬挂了适当的标签。 这不是很正确,因为神经网络的操作仅减少到确定客户的类型,而程序本身会更改文本。

如何用神经网络( kremlebot )替代负责快捷方式的程序,类似于用于为网站,电影以及通常使用评论的位置创建评论的程序。 我们将教神经网络使用客户标签中固有的术语来交换程序术语,然后程序将根据客户的大致描述重新措辞并将数据传输给执行者。 最有可能的是,一开始可能仅将神经网络通信用于“ 4.软件产品的技术要求”,这是因为那里主要存在一个“问题区域”。 项目“ 8。 “工作计划表”也可以传输到神经网络,但第6节对此进行了详细说明。
后来,当技术有所发展时,就有可能将技术任务的整个设计转移到神经网络的肩膀上,或者转移到神经网络的连接链上。 像我们的大脑一样,各个组成部分将负责人造神经有机体中的各个过程。 所有这些都将消除客户与承包商之间的专业沟通障碍(也称为沟通障碍)。

4.4结论


这个的实现不是很复杂,尤其是第一个神经网络。 您将不得不修改第二个,但最终它将取得成果。 神经网络的这种使用将简化客户和承包商之间的交互。

5.在创建最佳软件开发方法中使用神经网络


当一个人已经习惯了新事物时,他几乎不会接受它。 即使铲子更方便,更简单,更轻松,人们也会继续使用棍子挖洞。 两代人之间非常清楚地看到了这一点。 祖母有机会通过互联网在家中支付公共公寓的费用,因此宁愿开车去城市的一半。 怎么了 因为他们首先是人,并且像大多数人一样,他们并不真正喜欢改变,其次,他们不想学习新事物,认为对他们来说太难了,甚至不想去研究它。 方法学也是如此。 公司,特别是大型公司,不太愿意改变已经有效的方法。 但是,如果所选的方法不是最佳的或完全不适用于给定的项目怎么办? 顺理成章地说,什么需要用最优的替代,但是哪一个将是最优的,这意味着最优? 团队会轻易接受的还是会加速发展的? 谁可以委托这种负责任的工作? 让我们看看神经网络如何解决这个问题。

5.1实施


对于这种网络,很可能一个人无法管理,我们将再次需要一连串的连接,每个连接将负责一项单独的任务。 在这种情况下,我们有一组关于方法论的使用以及所应用的项目本身的数据。 您也可以添加有关开发人员的数据,但这会使所有事情变得非常复杂,因此我们将其推迟一会儿。 如果存在没有“响应”的数据集,则意味着我们在没有老师的情况下使用了该方法。 神经网络本身会发现开发时间和项目本身数据之间的关系。 由于人为因素,精度很可能不会很高。 这将需要第二个神经网络,它将基于例如对应关系(这需要他们的同意)或他们喜欢的工作方式来分析开发人员。 并添加第4段中所述的快捷方式,我们会将其返回到第一个神经网络进行处理。 在这里,您将不得不在老师的部分参与下使用该方法。 我们将必须选择一组人员,并通过测试识别其角色(快捷方式),并将此数据提交至输入。 现在必须确定神经网络将寻找什么关系。 如果您选择对应关系,那么首先,人们会不喜欢它,因为使用了他们的个人数据,其次,它不会给出确切的结果。 然后,我们将尝试使用有关这些人的工作的数据,但是这里的问题是该数据对神经网络的可用性。 将信件传送到入口并不困难,但是如何收集和转换有关这些人工作的数据? 让我们走到另一边。 作为“角色”,我们承担了梅瑞迪斯·贝尔宾(Meredith Belbin)博士确定的8种角色。



现在,我们有了特定的标签和特征来确定要挂在哪一个上。 考虑到人为因素的随机性,这是相当困难的,但是尽管如此,还是可以找到一些模式,这可以通过神经网络看到。 假设该主题的第一个标签为“主席”,但国民议会对此一无所知。 这种人格的特征,神经网络可以从个人档案中抽取出来,这对于她来说就足够了。 根据这些报告,还将确定将哪个标签应用于此人。 结果,快捷方式将被挂断并发送到第一个神经网络以进行处理和查找关系。 所有这些都是相当复杂的,但是当为神经网络选择一种方法时,它将大大提高准确性。 我们的链条经过培训,可以根据输入数据确定哪种方法在时间上是最佳的,同时要考虑开发团队的特点。 如果团队将不断使用神经网络来选择方法,那么它将逐步学习,从而逐渐获得回报,并提高准确性。 从这一点出发,由于长期学习,神经网络并不是最好的出路。 让我们看看机器学习还能为我们做些什么。

5.2结论


由于大量的人为因素以及漫长而昂贵的培训,神经网络不太适合此类任务。

6.使用神经网络测试软件


我们都是人类,我们容易犯错误。 凯文·米特尼克(Kevin Mitnik)曾说过:“人们是安全中最薄弱的环节。 人,而不是技术。” 随着软件开发技术的发展,始终存在相同的问题。 缺陷,错误,错误。 这一切都是由于人的懒惰,注意力不集中或知识不足而出现的。 调试和测试解决了这个问题。

6.1 -


测试花费了总时间的百分之六十,这是软件开发的最长阶段。发生这种情况是由于该阶段自动化的复杂性,这是由于自动测试器缺乏随机性以及创建它们的复杂性。最好的选择是手动测试,因为(目前)没有任何程序可以完全替代一个人。时间长且难以实施?我们再次使用神经网络的帮助。首先,您需要了解神经网络测试的含义。立即有必要了解创建通用测试器行不通的情况,您将必须分别为每个通用任务创建一个,例如,一个用于测试站点的神经网络。首先,让我们尝试弄清楚它的操作原理以及是否可以在此方向上使用。我们要向入口提交什么?我们期望退出什么?训练样本将由经过验证的站点组成,在该站点上将训练神经网络。让我们的朋友自由自在地获得我们想要的结果,因此我们将NS限制在网站上可以显示的对象方面,包括神经网络可以执行的各种按钮,栏,复选框和动作。当神经网络很有趣并记住这种动作会发生什么,并以此寻找瘾时,我们创建了所有存在的漏洞最多的网站,并配置了神经网络以在事件未达到预期时发送消息。通过将此站点提交到入口,我们将收到有关可能的错误的消息,从而自动创建验收表。让我们的朋友自由自在地获得我们想要的结果,因此我们将NS限制在网站上可以显示的对象方面,包括神经网络可以执行的各种按钮,栏,复选框和动作。当神经网络很有趣并记住这种动作发生的情况以及与此相关的过程并寻找成瘾时,我们会在拥有的所有东西中创建最多的错误站点,并配置神经网络以在事件未达到预期时发送消息。通过将此站点提交到入口,我们将收到有关可能的错误的消息,从而自动创建验收表。让我们的朋友自由自在地获得我们想要的结果,因此我们将NS限制在网站上可以显示的对象方面,包括神经网络可以执行的各种按钮,栏,复选框和动作。当神经网络很有趣并记住这种动作发生的情况以及寻找瘾时,我们会在拥有的所有东西中创建最多的漏洞站点,并配置神经网络以在事件未达到预期时发送消息。通过将此站点提交到入口,我们将收到有关可能的错误的消息,从而自动创建验收表。神经网络可以执行的功能。当神经网络很有趣并记住这种动作发生的情况以及与此相关的过程并寻找成瘾时,我们会在拥有的所有东西中创建最多的错误站点,并配置神经网络以在事件未达到预期时发送消息。通过将此站点提交到入口,我们将收到有关可能的错误的消息,从而自动创建验收表。神经网络可以执行的功能。当神经网络很有趣并记住这种动作发生的情况以及与此相关的过程并寻找成瘾时,我们会在拥有的所有东西中创建最多的错误站点,并配置神经网络以在事件未达到预期时发送消息。通过将此站点提交到入口,我们将收到有关可能的错误的消息,从而自动创建验收表。

Web应用程序。加固方法。胡萝卜和棍子。

由于神经网络可能无法正确学习并预期到不合逻辑的结果,因此很难预测先前测试版本的准确性。第二个选项更长,但更准确和通用。神经网络将仅监视测试人员的行为,从而使用增强方法进行学习。通过在其中找到一个连接并重现它们,它将接收大量数据。神经网络不仅应记录站点上的动作,还应记录测试人员将在何时记录有关错误的消息以查找连接。在这里,我们已经获得了更准确的独立测试器版本。但是同时,存在一个人为因素,这并不是一件容易的事情,要用功能来描述它;因此,神经网络很难赋予人以随机性。

6.2


与上一节一样,在测试软件时,我们可以使用带有增强功能的方法。一种极为通用的方法,可让您教授神经网络几乎所有内容。我们放置了一个神经网络来监视大量测试人员。我们将其功能分为功能测试和非功能测试。负责功能测试的神经网络将基于职权范围。对于她的培训,我们将使用程序员在这些程序中发现的一组传统知识和错误。在这里,您还可以使用第5段中的神经网络为提供给输入的数据添加快捷方式。因此,NS将能够通知可能的错误或错误,并随着时间的推移不断改进自身并适应特定的开发团队。对于非功能测试,您可以使用常规程序,因为此处的神经网络只是一个复杂问题。

6.3结论


神经网络对于测试站点非常有用,但是同时将花费大量时间进行训练。关于软件测试,这几乎是同一件事,但实现测试本身却有些糟糕和困难。

7.结论


综上所述,我们可以说将神经网络用于软件开发将加快该过程,但并非在所有情况下都可以。当然,以上所有内容仅在理论上起作用,在实践中一切可能并不那么乐观,但工作是至少在理论上研究使用神经网络加速软件开发的可能性。我研究的最终结果是答案:不仅在理论上,而且如果以个体的方式进行分析并作为一个人进行分析,那么将存在目前很难克服的大问题。为了充分利用神经网络作为助手,需要进行长时间的培训,这将在以后得到回报。神经网络最适合创建技术规范,或者简化承包商和客户之间的交互。神经网络破坏了沟通障碍,从而加速并促进了整个过程。还值得注意的是,在测试中使用神经网络的可能性也非常有用。神经网络可以预测可能的错误,而不是加快测试速度。这不会显着加快该过程,但会使其更加容易。不幸的是,神经网络在选择方法上不是很有效。神经网络无法开始理解人们的感受;因此,它只能基于统计数据选择一种方法。不幸的是,神经网络在选择方法上不是很有效。神经网络无法开始理解人们的感受;因此,它只能基于统计数据选择一种方法。不幸的是,神经网络在选择方法上不是很有效。神经网络无法开始理解人们的感受;因此,它只能基于统计数据选择一种方法。

神经网络正在飞速发展,谁知道同样的类人机器人将在我们的家庭中出现多快,这将(摧毁整个人类)改善我们的生活。


(Android索非亚)

参考文献

Nikolenko,S。深度学习:沉浸在神经网络世界中/ S. Nikolenko,A。Kadurin,E。Arkhangelskaya-圣彼得堡-深度学习。-SPb:彼得(Peter),2018-480羽:生病。-(“程序员库”系列)。

Source: https://habr.com/ru/post/zh-CN413095/


All Articles