英特尔“演化算法”新框架:29个Python代码块,自动生成新算法

【新智元导读】英特尔的研究人员提出一种新的自动算法生成器(AAD),利用演化算法框架,以Python语言的基本子集作为语法架构,能够对29个数组/向量问题的代码块进行组合,通过学习,自动生成更复杂问题的解决方案。

本文介绍一种自动算法发现器(AAD),这是一种用于合成高复杂度计算程序的演化算法框架。此前的演化算法依赖于客观的适应函数,这在给算法设计上增加了难度。

本文提出的AAD采用问题式引导演化过程(PGE),这需要将一组问题一起引入,针对更简单问题发现解决方案,用于解决同一组问题中的更复杂的问题。PGE还支持几种新的进化策略,并自然地应用于高性能计算(HPC)技术。

AAD可以为29个数组/向量问题生成Python代码,范围从min,max,reverse到更具挑战性的问题,如排序和矩阵向量乘法。此外,AAD显示出对受限环境/受限输入的强适应性,以及针对“开箱即用”的问题的解决能力。

AAD是将相对简单的问题解决组件自动组合程序,可以实现搜索由这些组件的所有可能排列所组成的整个空间,然后寻找满足给定要求的解决方案。目前已经提出了许多这样的搜索策略(例如枚举,基于演绎,约束求解,随机)来应对这类挑战。

使用AAD的分类算法代码块示例

本文提出了一种基于演化算法的搜索策略,将其AAD中实现。AAD可以基于Python的子集作为语法结构,组合成复杂度相对较高的程序(循环,嵌套块,嵌套函数调用等),并生成可执行的Python代码。在本文中使用AAD来发现数组/向量问题的算法解决方案。

总的来说,AAD实现了以下目标:

AAD结构设计方案和原理

AAD主要架构示意图,主要由问题生成器、解决方案生成器和检测器组成

问题生成器(ProbGen)

我们想要解决的每个问题都从问题生成器开始。这部分负责:(1)指定输入和输出的数量和类型。(2)为给定的问题生成输入。例如,对于最大查找(Max),问题生成器指定Max将一个数组作为输入,并生成一个数字作为输出。另外,当请求为大小为N的问题生成输入时,会产生一个由N个数字组成的输入数组。

检测器(Checker)

检测器负责接受/拒绝为给定问题生成解决方案。检测器使用问题生成器生成的输入执行生成的程序,并生成输出。检测器中包含接受/拒绝输出的逻辑。因此,检测器与给定的问题生成器对应,两者齐头并进。

解决方案生成器(SolGen)

SolGen主要由两部分组成:(1)表达式/短语存储,以及(2)演化器。

表达式/短语存储器(ExpStore)

解决方案生成器使用语法构造源程序。AAD使用的Python语法子集存储在ExpStore中,如表1所示。在AAD中,语法规则使用类型信息进行扩充。

AAD支持四种数据类型:数字(NUM),布尔数(BOOL),数组(ARR)和数组的数组(AoA),它们可以对矩阵进行建模。此外,表达式的每个操作数都标记为Consumer(只读),Producer(只写)或ProdCon(读-修改-写)。

演化器(Evolver)

演化器负责对表达式和短语进行组合,以生成程序(或函数),以解决问题生成器提出的问题。演化器分三个阶段构建解决函数(SolFunc)。

检查输出

上表所示为在问题集A中的调用者-被调用者的关系。比如SortDesc函数所在的行显示,SortAsc在57%的解决方案中调用了Max函数,在14%的解决方案中调用了Min函数,以此类推。Min,Max和ReverseArr函数没有调用任何其他函数。所有其他函数都依赖于一个或多个函数来得到解决方案,显示出函数组合的重要性。

上表中列出了3组问题以及在基线方法下的步数表现,并将其与四种演化策略下的表现进行了对比。

未来前景与应用方向

从概念上讲,AAD也可用于程序翻译。对于用C语言,汇编语言甚至二进制语言编写的程序,可以执行该实例作为AAD的检测器来生成Python(或类似语言)代码。这种方式与仅通过观察另一个对象行为,来构建自身行为方式的机器学习算法类似。很明显,本文中使用的Python代码可以被视为“Python到Python”的翻译,因为不同的检测器对应了不同的Python实现。

AAD可能不仅仅是一个程序合成器。它还可以用来获取机器的内在知识。通过调用-被调用关系图和父子图捕捉不同问题之间的内在关系。这些关系是由AAD本身发现的,并且可以被认为是不同操作之间的联想记忆的一种表示,其形式与人类大脑构造和机制类似。

由于AAD可以通过引入越来越多的问题来增加知识储备的扩展,通过适当的指导机制,就可以引导系统获取大量技能(算法),并自己构建知识表示。就像我们在自己孩子还小时,向TA们提出许多问题和挑战,目的是为了引导孩子们获得大量技能和知识。

AAD是用于综合高复杂度程序的演化框架,它以Python语言的基本子集作为语法架构。使用AAD能够对29个数组/向量问题的代码块进行组合,其中既有最大值、最小值,矩阵翻转这类简单问题,也有更具挑战性的问题,如排序和矩阵向量乘法等,对于输入没有大小限制。

我们评估了解决这些问题策略的有效性,并证明了AAD具备解决“开箱即用”问题的能力。为了应对复杂需求带来的各种挑战,AAD工具还能实现与高性能计算(HPC)技术的结合。总的来说,与现有技术相比,采用PGE的演化算法能够解决类似或更高复杂性的问题。

论文链接:

【2019新智元AI技术峰会精彩回顾】

2019年3月27日,新智元再汇AI之力,在北京泰富酒店举办AI开年盛典——2019新智元AI技术峰会。峰会以“智能云芯世界“为主题,聚焦智能云和AI芯片的发展,重塑未来AI世界格局。

同时,新智元在峰会现场权威发布若干AI白皮书,聚焦产业链的创新活跃,评述AI独角兽影响力,助力中国在世界级的AI竞争中实现超越。

THE END
1.智能算法生成的编程题生成器本文介绍了一个使用智能算法生成的编程题生成器,该生成器通过随机生成整数、选择运算符和操作数范围,实现了从简单加减到复杂加减乘除的题目的自动生成。https://blog.csdn.net/weixin_30629977/article/details/97107274
2.JavaLuhn算法卡号生成器mob64ca12f3f05d的技术博客Luhn算法,也称作模10算法,是一种用于验证数字(例如信用卡号)的有效性的方法。在这篇文章中,我们将通过生成一个符合Luhn算法的卡号,来理解这个算法的基本原理。 流程概述 以下是实现Luhn算法卡号生成器的主要步骤: 详细步骤 步骤1:生成随机数作为卡号前缀 https://blog.51cto.com/u_16213446/11682152
3.递归函数算法生成器JasonBorn递归函数、算法、生成器递归函数# 递归 :在函数运行过程中 直接或者间接的调用了自身 官方表示:python默认最大递归深度为1000次import sys print(sys.getrecursionlimit()) # 查看递归深度 print(sys.setrecursionlimit(2000)) # 设置递归深度 def func(): print('from func') index() def index(): print('https://www.cnblogs.com/garyhtml/p/15574865.html
4.java实现雪花算法ID生成器工具类java本文主要介绍了java实现雪花算法ID生成器工具类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧+ 目录 IdGenerate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 主键(id)生成器,用于生成唯一id号 * 1、注意:在写主键生成https://www.jb51.net/program/292069h8c.htm
5.雪花算法id生成器简介:雪花算法id生成器 根据时间戳 生成全局唯一id import java.net.NetworkInterface;import java.net.SocketException;import java.util.Enumeration;/*** 雪花算法id生成器*/public class IdGenerator {/*** 工作id 也就是机器id*/private static long workerId;/*** 数据中心id*/private static long dataCenterhttps://developer.aliyun.com/article/1468286
6.AdobeFlashPlatform*绘制API示例:算法可视化生成器绘制API 示例:算法可视化生成器 Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 设置侦听器 创建卫星 更新卫星位置 响应用户交互 进一步自定义 Algorithmic Visual Generator 示例在舞台上动态绘制几个“卫星”,即在圆形轨道中运动的圆形物。要阐述的功能包括:https://help.adobe.com/zh_CN/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dcf.html
7.蓝桥杯算法实现随机数生成器腾讯云开发者社区蓝桥杯-【算法实现】随机数生成器 题目如下: HTML文件: 代码语言:javascript 复制 <!DOCTYPEhtml>vartestArr=getRandomNum(1,30,3);document.write("1-30 以内的 3 个随机数:"+testArr+"");testArr=getRandomNum(1,100,10);document.write("1-100 以内的 10 个随机数:"+testArr+""); index.js文件https://cloud.tencent.com/developer/article/2405988
8.列表推导式和生成器生成器仅仅保存了一套生成值的算法,并且没有让这个算法现在就开始执行,而是我什么时候调它,它什么时候开始计算一个新的值,并给你返回这个值。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。 生成器对象具有惰性求值的特点。 https://web.suda.edu.cn/hejun/chapter6/python_6_3.html
9.AI色情创作算法亟需“养料”,非法裸图数据集“重生”这个博士生给自己的算法生成器取了个名字——“GeneratedPorn”,并命名为r / GeneratedPorn subreddit来发布有关该技术的信息(下称“ GP”)。 在公开信息中,这个项目的创始人表示,他开启这个项目只是因为想要提高自己的机器学习技能。与许多deepfake制作的色情产品不同,在项目最初,GP制作的图像并不希望“以假乱真https://www.thepaper.cn/newsDetail_forward_10299064
10.ARPA基于BLS的门限签名算法随机数生成器设计ARPA基于BLS的门限签名算法随机数生成器设计 作者| ARPA 责编| 晋兆雨 头图| 付费下载于视觉中国 随机数已经在密码学、彩票和游戏等众多领域被广泛使用。区块链与随机性也有着紧密的关联,因为它们从随机性中寻求公平。被广泛应用的的工作量证明(Proof-of-Work)共识协议建立在搜索特定随机值的加密任务之上。蓬勃发展https://cloud.tencent.cn/developer/article/2255345
11.百度雪花算法uidgenerator解析UidGenerator是一款基于Snowflake算法的分布式高性能唯一ID生成器,由百度开源。 它使用Java实现,支持自定义workerId位数和初始化策略,适用于虚拟化环境下实例自动重启、漂移等场景。UidGenerator通过借用未来时间来解决sequence的并发限制,采用RingBuffer缓存生成的UID,实现无锁并行生产消费,避免了硬件级“伪共享”问题,单机QPhttps://www.jianshu.com/p/d08792f57c54
12.AppStore上的“AI文字转图生成器:算法”AI 文字转图生成器: 算法 17+ 将文字变成图像 Stephen Fung 免费 提供App 内购买项目 截屏 iPhone iPad Apple Vision 简介 介绍Algo:将文字转化为引人入胜的数字艺术杰作 Algo是一款突破性的艺术创作软件,能够在几秒钟内将您的文字提示轻松转换为迷人的数字艺术作品。只需输入提示,选择所需的风格,精彩的艺术https://apps.apple.com/cn/app/algo-generative-ai-art/id6444638017
13.数据结构——着法生成器“着法生成器”在不同的引擎中差异较大。本文将向你演示使用位棋盘(aka bitmaps)【编者注:即前两章所说的BitBoard】时生成着法的基本原理。高级的国际象棋引擎通常具备一次只生成一小部分着法的能力。例如,仅生成象走的着法,马走的着法,导致升变的着法,所有的吃子着法等等,这正是位棋盘的强项。那为什么用https://www.xqbase.com/computer/struct_movegen.htm
14.词法分析程序的自动生成器(二)——Thompson算法碎碎念:我写词法分析程序的自动生成器的时候,先写的NFA-DFA和DFA化简。之后发现因为正则表达式的结构太复杂了,比如描述Pl/0程序标识符的正则表达式是 (a|…|z|A|…|Z)( a|…|z|A|…|Z|0|…|9)* ,所以我一直认为把正则表达式转换成NFA的难度与写正则表达式的引擎的难度相同,所以被卡住了,迟迟没有动手https://zhuanlan.zhihu.com/p/54291684
15.设计师必备:3款色板生成器推荐Khroma 是一款可以根据你的风格定制的无限调色板生成器。它使用机器学习来分析你的颜色偏好,并生成独特的个性化颜色组合。首次使用时,系统会要求你选择50种喜欢的颜色。虽然挑选50个颜色可能需要一些时间,但点击漂亮的颜色并不枯燥。完成后,Khroma 算法会生成五种不同的颜色组合。 https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_4347270115659951589