博舍

(一)利用人工智能编写自进化程序 人工智能程序写的新闻有哪些

(一)利用人工智能编写自进化程序

英特尔实验室的两位研究人员,利用遗传算法和图灵完备语言,号称实现了首个能够自动编程的AI系统“AIProgrammer”。文章共三篇,以下是网络翻译的详细内容:

介绍

计算机程序有可能自己编写程序吗?人类的软件开发者有一天会被他们掌握的电脑所取代吗?就像农民、装配线工人和电话接线员一样,下一个会是软件开发人员吗?虽然这种想法看起来有些牵强,但实际上可能比我们想象的更接近。本文描述了一个实验,以产生一个人工智能程序,能够开发自己的程序,使用遗传算法实现自我修改和自我改进的代码。

image.png

“hello”上面的编程代码是由一个人工智能程序创建的,设计用来编写具有自我修改和自我改进代码的程序。程序在29分钟内生成了上述结果。编程语言是脑残的。为什么是这种编程语言?继续读下去。所有人工智能程序的代码都可以在GitHub上找到。

人工智能写代码

近年来,随着计算机技术、硬件、内存和CPU速度的进步,人工智能一直在稳步发展。随着计算机速度的提高,可以进行更多的计算,从而提高许多人工智能算法所需的计算密集型处理能力。

人工智能爱好

这对我来说有点像是一种爱好,我涉猎人工智能程序,试图编写一个本身就可以编写程序的程序。当然,我并不是指那些将程序指令或代码块的子集组合在一起或以其他方式优化以产生最终结果的程序。我指的是从头开始,人工智能完全不知道如何用目标语言编程。人工智能必须自己学习如何为特定目的创建一个功能完备的程序。

我最初是在20世纪90年代末开始这项冒险的,当时我试图用简单的if/then/else语句创建程序,用BASIC编程语言输出程序。这是一项艰巨的任务,原因很多。首先,使用if/then/else条件来编写随机程序似乎一点也不聪明。第二,BASIC中可用的计算机指令太多了。更麻烦的是,有些指令非常危险(Shell(“formatc:”)!我还尝试用C、C++和其他几种语言生成程序。然而,这种天真的方法从来没有产生一个工作的孩子计划。尽管这不仅仅是因为使用简单的if/then/else语句,还因为所选的编程语言是为了供人类使用而不是计算机,因此,对于人工智能来说,自动化要复杂得多。

虽然最终的目标是产生一个能够编写自己的文字处理软件、图像编辑工具、网络浏览器或磁盘碎片整理程序的计算机程序,但我更感兴趣的是一个简单的概念证明,证明这个想法是可能的。

足够多的猴子和破打字机

我最初的动机来自于【无限猴子】定理,它说如果你有1000多只猴子在打字机上敲打足够长的时间,它们最终会重演莎士比亚写的剧本。这听起来很荒谬,但如果有足够的时间,猴子们最终肯定会碰到“一些”随机的字符序列,最终产生书面作品。简化这个想法,其中一只猴子肯定会在键盘的敲击声中敲出莎士比亚戏剧的第一个字母;这当然是可能的。如果你能引导猴子呢?每次一只猴子按正确的顺序按正确的键,你就用香蕉奖励他?经过足够长的时间,也许猴子会开始发现一个模式?如果他真的很犀利,也许他甚至会开始学习英语中哪些字母通常一起组成单词,从而比同龄人利用更多的香蕉。

关于遗传算法的切线

这是遗传算法的基本思想。遗传算法是一种模仿生物进化的人工智能,除了可用的工具和有效的指令外,它一开始对这个学科一无所知。人工智能随机挑选一系列指令(作为一段DNA)并检查结果的适用性。它是在人口众多的情况下完成的,比如说100个项目。当然,有些节目比其他节目好。那些身体最健康的人被交配在一起产生后代。每一代人都从轮盘赌选择、交叉和变异等进化技术中获得了一点额外的多样性。每个子代都会重复这个过程,希望产生越来越好的结果,直到找到目标解决方案。遗传算法是适者生存的编程实现。他们也可以被归类为人工智能搜索算法,就他们如何搜索一个巨大的问题空间的具体解决方案。

好,但是为什么选择brainfck呢?

虽然使用BASIC、C、C++和其他语言的原始实验未能产生结果,但我能够成功地通过将一个自组织的编程语言(包括加法、减法、循环等)与遗传算法和神经网络结合来生成人工智能编写的程序。虽然这很有趣,但最终的结果是简单的数学计算和编程语言本身,是未知的,并且对它最终能产生什么有严重的限制。我开始寻找一种简单的编程语言,指令数量有限,可以训练人工智能程序使用。汇编(ASM)很接近,但仍然包含了太多的排列。虽然听起来很幽默,但我最终还是尝试了brainfck,并最终成功地生成了上面显示的代码。虽然brainfck被设计成一种笑话编程语言,但由于人类使用它有多困难,它实际上对计算机有几个明显的优势。

Brainfck作为人工智能编程语言的优势

1。它是图灵完备的图灵完全编程语言意味着它在理论上能够解决宇宙中的任何计算问题。一种具有这种能力的编程语言提供了大量的可能性。毕竟,大多数(如果不是所有的话)计算机程序的设计都是为了执行某种计算并以某种方式输出结果。2。它只由一组简化的8条指令组成简化的指令集减少了可以找到目标程序代码的搜索空间。随着计算机越来越快,可以搜索更大的问题空间。然而,在个人计算机上,搜索空间需要受到限制。通过将编程指令集限制为8个不同的字符,AI可以更快地运行,并在合理的时间内(即,分钟、小时,甚至可能是一天)获得最佳适应度分数。3。建立一个解释器很容易指令集有很好的文档记录,易于理解。因此,创建一个可以执行程序的简单解释器非常简单。通过将解释器包含在AI程序+遗传算法本身中,代码可以优化为比调用外部编译器来执行每个子程序快得多。这也提供了安全约束,因为子程序是在人工智能程序的受控环境中运行的。AI还可以访问解释器的内部组件,例如内存、指令和输出。这在计算健康评分时很有用。然而,使用第三方编译器,这些组件将更难访问。4。每条指令为1字节本文中使用的人工智能程序是在C#.NET中设计的,它使用一个双倍数组作为基因组。基因组中的每个double(基因)对应于编程语言中的一条指令。因为每条指令只有1个字节,所以很容易将每个基因映射到一个编程代码(注意,1double=8字节;仍然相当于数组中的一个插槽)。5。存在扩展指令的可能性大多数编程语言的解释器只是执行代码,维护内存值,并支持控制台输入/输出。但是,可以扩展解释器以包括对生成图形、网络功能、文件系统访问等的支持。想想你能给人工智能开发自己程序的能力吧!;)

工作原理

人工智能程序的工作原理如下:1一个基因组由一系列双倍体组成。2每个基因对应于brainfck编程语言中的一条指令。3从一群随机的基因组开始。4通过将每个double转换成相应的指令并执行程序,将每个基因组解码成结果程序。5根据每个程序写入控制台的输出(如果有),获取每个程序的适应度得分,并对它们进行排序。6使用轮盘赌选择、交叉和变异将最好的基因组配对,产生新一代。7对新一代重复此过程,直到达到目标适应度分数。

由于适应度方法fitness是计算成本最高的部分(它必须为人口中的每个成员执行程序代码,这可能包括无限循环和其他讨厌的东西),人工智能程序使用Parallel.ForEach方法,可在.NET4.5中找到。以这种方式,它可以在每一代对群体中的多个基因组执行多个适应度算法。这允许程序利用最大的CPU资源并利用多个CPU核。程序还每隔10000代保存一次状态,以防程序或PC关闭,并且可以从停止的位置继续搜索。

适应度法

适应度方法的工作原理是对生成的程序的输出进行评分。通过查看程序输出的每个字符(如果产生任何输出)并从所需字符中减去其值来计算分数:fitness+=256-Math.Abs(console[i]-targetString[i]);

当然,最初大多数生成的程序甚至不会编译,更不用说将文本输出到控制台了。这些都被简单地丢弃,偏向于至少输出一些东西的程序;并进一步引导和进化,直到输出结果越来越接近所需的解决方案。

解释器指令集

Brainfck由以下指令集组成:

image.png结果?输出Hi

人工智能在大约1分钟内成功地编写了一个程序,在5700代之后输出“hi”。它产生了以下代码:尽管上面的代码包含解析错误(例如不匹配的括号),但是我们的仿真解释器会一直计算结果,直到程序失败为止,因此在上述情况下,语法错误(在找到解决方案之后,在代码中稍后进行介绍))不会影响健康度。

您可以尝试将上面的代码粘贴到brainf-ck解释器中。单击“启动调试器”,忽略警告,然后单击“运行到断点”。注意输出。

如果我们剪裁多余的代码,则会看到以下语法上有效的代码:

您可以在程序运行时查看以下屏幕截图:

AIlearninghowtoprogramAIlearninghowtoprogram,almostthereAIlearninghowtoprogram,asolutionisfoundAIprogramfitnessovertime

这是历史图表,绘制了一段时间内的体能得分。您可以看到人工智能是如何学习如何用目标语言编程并实现所需的解决方案的。

Executingtheprogram,developedbytheAI输出hello

人工智能在大约29分钟内成功地编写了一个程序,在2520000代之后输出“hello”。它产生了以下代码:+-+-+>-+++++[-[---.--[[-.++++[+++..].+]],]++++++++[[++++++.-------------.-.-+.+++++.+++++],.,+,-+-,+>+.++++++++++++.+-.+

人工智能小程序有哪些

人工智能小程序是使用人工智能技术开发的小程序,可以用于各种不同的场景和应用。以下是一些常见的人工智能小程序类型:

智能助手:可以回答用户的问题并提供各种信息和服务。例如,小冰、小爱同学等。

智能客服:使用人工智能技术为用户提供自动化的客户服务。例如,阿里云智能客服、腾讯智能客服等。

语音识别:将语音转换为文本或命令,并进行语义分析和处理。例如,百度语音识别、讯飞输入法等。

图像识别:使用深度学习技术进行图像识别、分类和标记。例如,腾讯优图、百度AI图像识别等。

机器翻译:使用机器学习技术进行语言翻译和转换。例如,百度翻译、谷歌翻译等。

人脸识别:使用计算机视觉技术进行人脸检测、识别和分析。例如,阿里云人脸识别、Face++等。

推荐系统:根据用户的历史行为和偏好进行个性化推荐和服务。例如,今日头条、网易云音乐等。

这些只是人工智能小程序的一小部分,随着技术的不断发展,未来将有更多的应用出现。

适合人工智能的编程语言有哪些

人工智能早在20世纪50年代就已经出现,尽管如此,直到最近10年,软件开发人员才能如愿以偿地将AI构建到应用程序中。编程语言是人工智能开发项目的支柱,有了它的帮助,软件开发人员才可以在不用通晓仅用于科学家相互交流的高度专业化语言的情况下而创建出新的AI解决方案。

那么,人工智能在全球各行业中的使用率如何?

  AI在各行业的使用率资料来源:Statista

目录

1) Python

2) R语言

3)Java

4)LISP

5)Prolog

6)C++

7)Haskell

8)JavaScript

9)Julia

2021年常用编程语言极其占比表

本文中,我们将介绍一些最适合AI的编程语言,以及这些语言所具备的优势。

1) Python

Python非常适合人工智能,因为它具有强大的数据科学和机器学习能力。它的计算能力之快、可读性之强使其成为数据科学家的首选。借助Python,数据科学家可以分析大量复杂的数据集,同时不必担心计算速度。

Python拥有大量与人工智能相关的软件包列表,例如PyBrain、NeuralTalk2和PyTorch。虽然TensorFlow现在比PyTorch的使用范围更广,但由于PyTorch最近发布了一些独特功能,几年内它的受欢迎程度可能会与TensorFlow持平。

这些独特功能除了用于深度学习网络的GPU加速之外,还包括可变精度,最新版本的PyTorch还支持多设备。这也使得Python比C++或Java学起来更容易(因此受到初学者的青睐)。Python也是专业人士使用的最流行的语言之一。

由于开发人员不断地添加新库或升级现有库,因此Python在开发方面并不落后于其他语言。如果你了解C++或Java,但不太熟悉神经网络或深度学习方法,在这种情况下,你可以借助Numpy库中的830多个类,轻松选择所需的内容。

在AI中使用Python的好处

Python有许多可用的库,可以通过机器学习简化编程。如果你正在做一个基于AI的项目,那Python库可以满足你所有的需求。作为一名新开发人员,学习Python会更为合适,因为它与大多数编程语言相比,学习曲线更为简单,学起来更容易。它有一个强大的机器学习框架PyBrain,并拥有一个活跃的用户社区,开发员可以随时提出问题并得到相关解答。2) R语言

R语言是一种开源编程语言,支持统计分析和科学计算。R编程语言可以帮助我们生成交互式图形和其他高级的可视化图形。它可以处理所有类型的数据分析,从简单的线性回归到复杂的3D模拟。而且任何人都可以使用R语言。

作为一种编程语言,R语言的使用范围很广,从统计计算到机器学习技术。R语言面向对象编程,具有高度可扩展性、可以不间断地进行高效能计算,同时它功能全面,拥有庞大的用户群,被广泛用于预测。

在AI中使用R语言的好处

R语言在处理大量数据时表现的计算能力极为强大。R语言应用数学函数的能力也使它在创建具有复杂决策过程的程序时更受欢迎。R语言作为一种开源工具,在为我们提供同等功能的同时还不收取任何费用。R语言擅长在大数据集中寻找新模式。重大风险公司需要分析客户信息并将这些信息用于商业营销和运营中,R语言的这一特征尤其受到风险公司的欢迎。3)Java

Java被评为当今最受欢迎的编程语言之一。凭借其面向对象的特性,Java可以让我们毫不费力地快速完成任务;在Java中很容易使用线程和多线程功能,因为它内置了对并发的支持。

许多编程语言(例如RubyonRails、Python和Node.js)都能与Java结合使用,因为它们都提供了与之配合使用的综合框架。

在AI中使用Java的好处

Java编程语言有几个特点,使其特别适合开发AI程序。Java是一种高级的、面向对象的编程语言。Java可读性高,当开发人员经常与许多其他团队成员在不同时区以不同速度一起完成一个大型项目时,这一特征变得极为重要。它是一种5级编程语言,可确保程序员得到多种好处。由于人工智能应用程序使用机器学习算法,从零开始编写代码(而不是预先制作好的库)的编译时间比Java代码要长。4)LISP

LISP最初创建于1958年,是一种函数式编程语言,这也意味着LISP中的一切都是一个表达式。换句话说,每一行代码都做特定的事。一开始听起来可能有点复杂,但是你可以编写一个函数来做任何你想做的事情,所以了解并构建LISP语法比从头开始学习一门全新的语言更简单。

因此,如果你有任何一种编程经验,即便是是Python或C++,那么学习LISP对你来说都不费吹灰之力。

在AI中使用LISP的好处

几乎所有主要的深度学习框架的核心操作都依赖于LISP,在选择库或工具时这为我们提供了很大的灵活性。代码快速执行,无需考虑环境细节。它非常适合抽象操作:使用更简单的模型来解释更深层次的模型,因此程序员无需了解单个组件的工作原理。如果基于初始模型的预测结果是错误的,使用LISP可以在后面帮我们节省时间,因此重写模型会变得相对简单,也不会过多影响工作进展。5)Prolog

Prolog是一种声明式编程语言,我们可以在其中描述要实现的目标而不用写出具体的实现方法。在Prolog中,知识由事实和规则表示。事实是关于对象的陈述,例如迪丽热巴长得很漂亮或张怡宁打乒乓球天下无敌。

规则描述如何从现有事实推断出新事实,例如,如果说一个人有很多孩子,那么推断出的新事实将是这个人至少有2个孩子。这是一种人工智能方法,可以让程序员将更少的时间花在算法上,而将更多的时间花在思考目标上。

在AI中使用Prolog的好处

Prolog可以快速处理大量数据。Prolog的语句享有盛誉,使用它的人通常比普通程序员更聪明。Prolog有助于提高这些项目的速度和准确性。如果你希望自己的程序随着时间的推移变得有感知力(就像天网一样),那么Prolog可能正是你要找的!因为它能够修改你的程序从而显著提高程序的能力。6)C++

C++是一种流行的通用编程语言。它是一种高级语言,由贝尔实验室的BjarneStroustrup所领导的计算机科学家团队开发。它可以在Windows、Linux、MacOSX操作系统以及智能手机和平板电脑等移动设备上运行。C++已被用于开发游戏、应用程序和图形程序。

C++能够帮助我们创建许多其他软件程序,包括那些设计用于人工智能技术的软件程序。但是,由于其复杂性和缓慢的开发速度,它不适用于GUI(图形用户界面)设计或快速原型设计等任务。

在AI中使用C++的好处

C++有助于机器学习的原型设计和生产,因为它能够帮我们轻松快速地将复杂的模型加载到内存中。它还可以让我们快速试验新模型或重新设计现有模型,而无需过多的加载时间或牺牲处理能力。在开发需要快速访问许多数据存储空间的高性能代码时,C++是最佳选择之一。如果我们需要用到某种算法或者我们使用的应用程序需要尚未内置在语言中的功能,而其​​他人可能已经编写了我们需要的东西,大多数情况下,这些模块都是开源的,也就是说我们可以直接使用或修改别人写好的东西。7)Haskell

Haskell是一种纯粹基于函数的语言,这也就导致Haskell的所有表达式都只产生一个值。由于没有变量,Haskell极度依赖递归来创建代码,但是也有一些可变类型,特别是列表和数组。

有一些复杂算法需要多步操作才能达到最终想要的结果,在这种情况下,Haskell就成为一个理想的选项。而它更为吸引人的一个特征是它的类型系统,Haskell没有空值,你不能在变量中存储任何东西,也不能传递任何参数。

在AI中使用Haskell的好处

Haskell包含一个健全的类型系统,以避免代码中出现多种类型的错误。虽然其他语言不容易帮我们写出简洁的代码,但Haskell却可以做到。因此,对于涉及大量数据的项目来说,使用Haskell是个不错的选择。Haskell的简洁性还有助于我们同时处理多个项目。使用Haskell的一个明显优势是它的速度。用Haskell编写的程序通常比用其他编程语言编写的程序运行得更快,因为它非常简单。8)JavaScript

JavaScript是一种广泛使用的编程语言,对人工智能至关重要,它可以帮助我们构建从聊天机器人到计算机视觉的所有内容。凭借其灵活性和强大的开发人员社区,JavaScript已迅速成为人工智能最受欢迎的语言之一。

自1995年JavaScript创建以来,我们已经用它编写了许多类似人类的行为,例如面部识别和艺术生成程序。虽然企业会逐渐淘汰一些过时的系统,JavaScript仍将是任何想要深入人工智能领域的开发人员所必备的基本技能。

在AI中使用JavaScript的好处

JS的高度灵活性使其可以与开发人员正在使用的各种操作系统、浏览器和虚拟机一起使用。JS不必从一个系统移植到另一个系统,因为许多系统都可以在类似的架构上运行。JS可以广泛应用于任何领域。JS基于网络或浏览器,编码相对来说属于轻量级的,没有太多的技术要求。9)Julia

AI是一个热门的研究领域,而Julia在这一领域中占有有利位置。JeffBezanson,StefanKarpinski,ViralB.Shah和他们的团队基于数值性能从无到有构建了这门语言。Julia几乎可以在任何操作系统上运行,此外,它使用了许多我们已经掌握的通用编码概念,如循环和条件语句,所以学起来也很容易。

Julia的开发环境目前并不理想(需要做一些开发工具的工作),但随着时间的推移,越来越多的人围绕编程语言构建工具,Julia的开发环境会变得更好。

在AI中使用Julia的好处

它是一种专为科学计算而设计的高级、高性能的编程语言。Julia的语句美观简洁,这样,你可以专注于解决问题本身而不是编写新代码。使用Julia,你可以在节省时间的同时生成更清晰、速度更快、错误更少的代码。Julia一个最大的优势是它是开源、免费的,这意味着任何人都可以访问其代码。

总结

综上所述,我们可以使用多种编程语言来开发人工智能。没有一种语言是十全十美的,有的专注于开发速度,有的具备概率模型的天然优势,而另外一些则能与现有软件无缝衔接。究竟使用哪种编程语言,最终还是要看我们的实际需求。文章最后为大家分享一份2021年常用编程语言极其占比信息。

2021年常用编程语言极其占比表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇