0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用人工神经网络制定编写规则

DPVg_AI_era 来源:未知 作者:李倩 2018-05-30 17:06 次阅读

美国橡树岭国家实验室的一些专家预测,到2040年,AI技术将会强大到足以替代程序员。不过,即使机器能够完全代替今天程序员所做的工作,但这并不意味着它们不需要人类的帮助。

程序员以及其他类型的IT工作无疑是当前最热门的工作。然而,这种趋势可能不会一直持续下去。

美国橡树岭国家实验室的一些专家预测,到2040年,AI技术将会强大到足以替代程序员,AI编写软件将比人类程序员更好、更快。换句话说,软件编写的软件比人类编写的更好。

这是怎么发生的?AI能真正学会如何做需要高度创造性的智力工作吗?毕竟创造性一直被认为是人类特有的。AI能学到的东西会比我们教它的更多吗?

利用人工神经网络制定编写规则

人工神经网络是一种试图模仿人类大脑学习机制的技术。它启发自真实的神经网络,并且部分地模拟真实的神经网络。我们可以试着把人类的神经系统想象成一台非常强大的计算机。

在上面这幅图中,每个神经元都有一个输入和输出,输入实际上是一系列信号的加权组合。每个信号都有自己的数学上可表达的影响,信号的总和决定了输出。人类神经网络的特殊之处在于,它们能够基于学习和经验进行适应和改变,这意味着相同的输入并不总是产生相同的输出。

这是通过改变不同脉冲的优先次序和修改神经元之间的物理连接来完成的。这些变化通过学习算法和成本函数来指定,以提高人类适应新环境和优化未来行为的能力。

研究人工神经网络的科学家和工程师试图复制这种机制,并在软件开发中实施。具体地说,这意味着软件不会以传统的方式编写,比如一系列的“if… then”规则。从理论上讲,我们可以想象通过渐进式学习和优化的过程,人工神经网络能够学习如何制定(或“编写”)规则,从而得到比人类编写的更好的输出。在AI科学中,这被称为深度学习,通常在一定程度上依赖人类的反馈。

以下是几个可以代替程序员的应用程序。

Karpathy:利用循环神经网络自动生成代码

早在2015年,当时是斯坦福大学计算机科学博士生的Andrej Karpathy就使用循环神经网络来生成代码。他使用了一个Linux存储库(所有的源文件和 headers files),将它合并成一个巨大的文档(超过400 MB的代码),并用这些代码来训练RNN。

他让系统跑了一晚上。第二天早上,他得到了这个:

AI生成的代码样本

从字面上来看,AI生成的代码包含函数和函数装饰。它有参数、变量、循环和正确的缩进形式。括号有开括号和收括号,甚至还有注释。

在这些代码中,AI当然也犯了一些错误。有时变量从未被使用。其他时候,有些变量没有更早定义。但Karpathy对这个结果感到满意。

“这些代码总体上看起来非常棒。当然,我不认为它会编译,但是当你浏览生成的代码时,它感觉非常像一个巨大的C代码库,”Karpathy在他的博客中写道。

这个项目在GitHub上可以找到。它使用了Torch7 的深度学习库。这里有Karpathy得到的整个输出文件:

https://github.com/karpathy/char-rnn

DeepCoder

微软和剑桥大学的研究人员开发了一种可编写代码的机器学习系统,被称为DeepCoder,它具有学习的能力。

DeepCoder可以在庞大的代码库中进行检索,然后编写有效的代码。DeepCoder 所用的技术叫程序合成( program synthesis),通过截取已有软件的代码行来组成新的程序。不得不承认,当下很多程序员也是这样做的。通过学习一系列代码片(code fragment)的输入和输出数据,DeepCoder 能自动摘取出对目标任务有用的代码片。

DeepCoder 可以在一秒钟之内写出能够跑通的程序。随着 DeepCoder 的编程经验增加,其分辨有用及无用的代码片的能力增加,其生成程序的速度将会越来越快。

这并不意味着AI是在窃取代码,或者从现有软件复制粘贴代码,或者在互联网上搜索解决方案。DeepCoder的作者期望它将在不久的将来参与编程竞赛。

由DeepCoder创建的域特定语言(DSL)示例程序

DeepCoder 的创造者之一,在剑桥大学参与微软研究项目的 Marc Brockschmidt 表示:“该程序最终可以让非编程人员通过向计算机描述自己的程序构想来获得想要的程序,系统会自动写就。”

你可以在这里找到DeepCoder的文档:

https://openreview.net/pdf?id=ByldLrqlx

AI编写Python代码

一名法国工程师以BenjaminTD的昵称发表了一篇博客文章,解释了自己是如何“教一个AI系统如何用Python代码编写Python代码”。

他使用了长短期记忆网络(LSTM),这是最流行的递归神经网络结构之一。他用大量的Python代码(使用Pandas、Numpy、Scipy、Django、Scikit-Learn、PyBrain、Lasagne、Rasterio等库)来“喂给”这个网络。组合文件大小有27MB。

然后,AI生成了自己的代码。下面是定义初始化:

...使用布尔表达式:

...并创建数组:

如果仔细观察数组,你会发现有一个语法错误。BenjaminTD的代码远非完美,但是他认为,对于一个只是从阅读示例代码中学习的网络来说,这些代码看上去不错。

AI Programmer

2017年 ,来自彭博和英特尔实验室的研究人员号称实现了首个能够自动生成完整软件程序的 AI 系统 “AI Programmer”。

AI Programmer 利用机器学习中的遗传算法,模拟复杂的指令。虽然现在 AI Programmer 生成的程序,复杂程度与人类新手程序员编写的结果相当。但研究人员认为,AI Programmer 编写的程序完全可以超越传统范畴,不受人类时间和智慧的局限。

AI Programmer 的软件架构。从图中可见,由人类驱动的部分非常少,只需要在开始输入指令,最后接收适用于某项任务的函数即可,剩下部分全部由机器完成。

研究人员表示,他们能用 AI Programmer 生成很多软件程序。下表是所生成程序的名单。

潜在的威胁:不确定机器能做到什么程度

现在已经有程序可以代替人类了,但随之而来的问题是,如果机器能够自己学习,他们能学到多少?极限在哪里?这个优化的过程真的能教软件比人更好地写代码吗?网站开发机构和软件公司是否会利用AI驱动的程序为自己编写代码,以节省资金?事实是,我们还不确定机器能做到什么程度。

但是,我们知道人工智能已经在影响IT行业的一些工作。印度软件咨询和外包公司Wipro Ltd.自去年6月以来使用AI平台Holmes来维护软件,其3000多名工程师因此担心他们的工作。更不用说,我们经常使用的许多技术都采用机器学习技术——从语音识别到机器翻译。

AI和人类程序员将在编程中扮演互补的角色

人工神经网络的一个问题是它们使用的算法是“黑盒”,这意味着它们内部的工作方式太过复杂。特斯拉的AI总监Andrej Karpathy认为,对于大多数应用领域,我们永远无法得到完全由AI驱动的100%精确的模型。他认为AI系统的准确率将超过90%,但它们并不完美,它们偶尔会以出人意料的方式失败。

一般来说,有监督和有人控制的深度学习系统比无监督的系统表现更好。这意味着,即使是最复杂的AI软件也需要人类的参与和反馈,以学习和适应新的环境。这个事实为未来人工智能和人类程序员之间的紧张关系提供了一种解决方案——共同工作。

我们可以肯定的是,在不久的将来,AI和人类程序员将在编程中扮演互补的角色。AI的工作可能是处理重复性的、耗时的任务,这些任务需要机器优异的精确性。机器可以避免由于人为因素而产生的语法错误或设计错误。例如,AI可以提供帮助的一种方式是自动完成功能,程序员只编写一小部分代码,然后AI识别程序员的意图,并完成剩下的代码,从而为人类节省大量的工作。

即使机器能够完全代替今天程序员所做的工作,但这并不意味着它们不需要人类的帮助。但程序员必须将注意力从编写程序转移到监控AI的性能,并将数据“喂给”AI。正如Karpathy所指出的,程序员可能会成为一种数据加持者——收集、整理和分析数据,然后将它们用作AI的输入,然后让AI完成剩下的工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100720
  • AI
    AI
    +关注

    关注

    87

    文章

    30757

    浏览量

    268902

原文标题:AI抢程序员工作:2040年AI可能代替程序员

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人工神经网络原理及下载

    人工神经网络是根据人的认识过程而开发出的一种算法。假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,通过不断地给
    发表于 06-19 14:40

    用人工神经网络模拟污水生物处理

    用人工神经网络模拟污水生物处理(1.浙江工业大学建筑工程学院, 杭州 310014; 2.镇江水工业公司排水管理处,镇江 212003)摘要:针对复杂的非线性污水生物处理过程,开发了径向基函数的人工
    发表于 08-08 09:56

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章
    发表于 03-20 11:32

    人工神经网络课件

    人工神经网络课件
    发表于 06-19 10:15

    【PYNQ-Z2试用体验】神经网络基础知识

    前言前面我们通过notebook,完成了在PYNQ-Z2开发板上编写并运行python程序。我们的最终目的是基于神经网络,完成手写的数字识别。在这之前,有必要讲一下神经网络的基本概念和工作原理。何为
    发表于 03-03 22:10

    【专辑精选】人工智能之神经网络教程与资料

    电子发烧友总结了以“神经网络”为主题的精选干货,今后每天一个主题为一期,希望对各位有所帮助!(点击标题即可进入页面下载相关资料)人工神经网络算法的学习方法与应用实例(pdf彩版)卷积神经网络
    发表于 05-07 19:18

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。那有哪些办法能实现人工
    发表于 08-01 08:06

    【AI学习】第3篇--人工神经网络

    `本篇主要介绍:人工神经网络的起源、简单神经网络模型、更多神经网络模型、机器学习的步骤:训练与预测、训练的两阶段:正向推演与反向传播、以TensorFlow + Excel表达训练流程
    发表于 11-05 17:48

    怎么解决人工神经网络并行数据处理的问题

    本文提出了一个基于FPGA 的信息处理的实例:一个简单的人工神经网络应用Verilog 语言描述,该数据流采用模块化的程序设计,并考虑了模块间数据传输信号同 步的问题,有效地解决了人工神经网络
    发表于 05-06 07:22

    嵌入式中的人工神经网络的相关资料分享

    人工神经网络在AI中具有举足轻重的地位,除了找到最好的神经网络模型和训练数据集之外,人工神经网络的另一个挑战是如何在嵌入式设备上实现它,同时
    发表于 11-09 08:06

    人工神经网络,人工神经网络是什么意思

    人工神经网络,人工神经网络是什么意思 神经网络是一门活跃的边缘性交叉学科.研究它的发展过程和前沿问题,具有重要的理论意义
    发表于 03-06 13:39 3423次阅读

    人工神经网络的内容有哪些?

    人工神经网络的内容有哪些? 人工神经网络模型主要考虑网络连接的拓扑结构、神经元的特征、学习
    发表于 03-06 13:42 1636次阅读

    人工神经网络实用教程下载

    本书系统的介绍了人工神经网络典型模型的原理、算法,并对遗传算法的基本原理也做了简单介绍。 人工神经网络方法已应用于许多领域。本书是以应用为主要目的为从事
    发表于 02-17 17:46 146次下载
    <b class='flag-5'>人工</b><b class='flag-5'>神经网络</b>实用教程下载

    人工神经网络和bp神经网络的区别

    人工神经网络和bp神经网络的区别  人工神经网络(Artificial Neural Network, ANN)是一种模仿人脑
    的头像 发表于 08-22 16:45 4456次阅读

    BP神经网络人工神经网络的区别

    BP神经网络人工神经网络(Artificial Neural Networks,简称ANNs)之间的关系与区别,是神经网络领域中一个基础且重要的话题。本文将从定义、结构、算法、应用及
    的头像 发表于 07-10 15:20 1027次阅读