强化学习算法——TPG算法(遗传编程GP算法)代码
tpg算法是一个使用模块涌现和复用机制的遗传编程(GP)算法,该算法在一些强化学习问题上有着不错的表现,本文给出该算法的项目地址。
tpg算法的C++实现代码大概有1万的逻辑代码,如果这个比例换做使用python的话估计会有一定的减少,但是由于是逻辑代码,因此即使使用python代码重构的话代码量也不会有太明显的下降,同时由于该算法的计算量很大,因此难以取得比Deep learning下的DRL的性能优势,甚至在长期来看的话tpg算法是没有DRL性能好的,但是tpg算法同其他的进化算法一样在较短的时间内是会比DRL性能好的,举个例子,比如使用进行10000个episode的训练,每100个episode的数据收集后训练一次(tpg和DRL都如此),在1000 episodes的时候tpg性能优于DRL,但是很快tpg就进入到收敛状态,难以寻找更优解,但是这时DRL的性能曲线已经持续上升,最后在10000 episodes训练结束时很多情况下DRL会明显优于tpg,这一点或许也是当前背景下很多researcher不去研究tpg而是去研究DRL的原因。
由于tpg这样的进化算法运算量大,虽然运行早起有优势,但是后期难以达到DRL的性能,并且tpg这样的进化算法难以有较大的改进空间,并且编码难度极大(上万行的C/C++代码量是常事),因此如今已经很少有人去做tpg这样的进化算法了,不过作为解决AI的,或者说解决ML的最具通用性的黑盒优化算法,在科研领域依然有很小一部分人在做这个领域的研究。
一个难以进一步优化的,并且运算量大,代码实现极为困难的算法确实难以有人fellow的,不过tpg这样的算法不需要使用GPU,因为这类算法主要的操作是逻辑运算而不是矩阵的数值运算,并且如果在较短的优化周期内来看tpg这样的优化算法也确实有其优势的地方,但是如果在一个较长的优化周期来看那就不具备什么优势了;不过我个人任务tpg这样的算法没有太多人fellow的主要问题其实还是其代码实现难度极大,一个SOTA的相关deep learning的代码,如果使用pytorch、TensorFlow这样的框架的话,那么几百行的python代码就可以实现,与之相对比的是进化算法的上万行C++代码,甚至是近10万行的C++代码,这个工作量差的级别不是一个level的,deep learning方面的算法研究,从一个新的方向着手,从想idea,做实现,写论文,投稿,发表会议确认出版,总共时间可能是3个月,也可能是半年,但是对于绝大部门的AI从业者来说,一个上万行的C++代码(更有可能是近10万行的C++代码),可能把这上万行的C++代码弄明白怎么一个流程都或许不是三个月或者半年就能搞定的事情,很有可能这上万行的C++代码看了三个月然后就崩溃了,而其他人的论文都发表CCF A会都录用了,这中研究方向导致的成果差距也是极少有人能接受的,现在还在这个领域(进化算法)的researcher大多都是远古时期(20、30年前)就已经从事这个方向的研究者,可以说进化算法领域的AI研究也是一个濒危方向。
- unused_code_chunks.cpp 调试代码,实际项目的运行中并没有使用。
- sequence_comparisons.h 计算两个double数组或两个double类型的vector的距离(欧式距离等等距离的度量,输入为矢量,结果为标量)
- state.h
- memoryEigen.h
- instruction.h
- instruction.cc
- [ ]
项目所属实验室地址:
https://creativealgorithms.ca/


tpg算法的项目代码地址:
https://gitlab.cas.mcmaster.ca/kellys32/tpg/
This code reproduces results from the paper:
Stephen Kelly, Tatiana Voegerl, Wolfgang Banzhaf, and Cedric Gondro. Evolving Hierarchical Memory-Prediction Machines in Multi-Task Reinforcement Learning. Genetic Programming and Evolvable Machines, 2021. pdf
该项目代码经验证真实可运行:

强化学习算法library库:(集成库)
https://github.com/Denys88/rl_games
https://github.com/Domattee/gymTouch
个人github博客地址:
https://devilmaycry812839668.github.io/
强化学习算法——TPG算法(遗传编程GP算法)代码的更多相关文章
- 【Python Deap库】遗传算法/遗传编程 进化算法基于python DEAP库深度解析讲解
目录 前言 概述 启发式的理解(重点) 优化问题的定义 个体编码 初始族群的创建 评价 配种选择 锦标赛 轮盘赌选择 随机普遍抽样选择 变异 单点交叉 两点交叉 均匀交叉 部分匹配交叉 突变 高斯突变 ...
- 【比较】遗传算法GA和遗传编程GP有什么不同?
遗传算法GA 本质上有一个固定的长度,这意味着所产生的功能有限的复杂性 通常会产生无效状态,因此需要以非破坏性方式处理这些状态 通常依赖于运算符优先级(例如,在我们的例子中,乘法发生在减法之前),这可 ...
- 学习Road map Part 03 编程和算法
方法: 优先重复已学过的内容 写学习笔记
- 遗传编程(GA,genetic programming)算法初探,以及用遗传编程自动生成符合题解的正则表达式的实践
1. 遗传编程简介 0x1:什么是遗传编程算法,和传统机器学习算法有什么区别 传统上,我们接触的机器学习算法,都是被设计为解决某一个某一类问题的确定性算法.对于这些机器学习算法来说,唯一的灵活性体现在 ...
- 强化学习(十七) 基于模型的强化学习与Dyna算法框架
在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...
- 强化学习Q-Learning算法详解
python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...
- 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...
- ICML论文|阿尔法狗CTO讲座: AI如何用新型强化学习玩转围棋扑克游戏
今年8月,Demis Hassabis等人工智能技术先驱们将来到雷锋网“人工智能与机器人创新大会”.在此,我们为大家分享David Silver的论文<不完美信息游戏中的深度强化学习自我对战&g ...
- 【python(deap库)实现】GEAP 遗传算法/遗传编程 genetic programming +
目录 前言 1.优化问题的定义 单目标优化 多目标优化 2.个体编码 实数编码 二进制编码 序列编码(Permutation encoding) 粒子(Particles) 3 初始种群建立 一般族群 ...
- 谷歌重磅开源强化学习框架Dopamine吊打OpenAI
谷歌重磅开源强化学习框架Dopamine吊打OpenAI 近日OpenAI在Dota 2上的表现,让强化学习又火了一把,但是 OpenAI 的强化学习训练环境 OpenAI Gym 却屡遭抱怨,比如不 ...
随机推荐
- 使用Typora编写后的md文件优雅的上传到博客(插件dotnet-cnblog的使用)
一.Typora的设置 如下图,设置图片上传位置 之后文章上的图片都会临时存放到文件同级目录下的xxx.Asster文件夹下面. 二.下载插件dotnet-cnblog 1.安装.Net Core S ...
- LeetCode216.组合总和lll
4.组合总和lll(LeetCode216) 题目叙述: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列 ...
- VS常用拓展以及快捷键
VS常用拓展以及快捷键 扩展1:Select Next Occurrence 该拓展可以当前目标.下一个目标.上一个目标,类似于Alt+鼠标拖动,但是可以在没对齐的情况下使用 安装 设置4个常用的快捷 ...
- Microsoft Build 2023 After Party (Placeholder)
一年过去了,微软BUILD又回来了! https://build.microsoft.com/en-US/home This is a placeholder page for Microsoft B ...
- 5分钟说透chatgpt
5分钟说清楚 --到底它为啥能这么火? --到底牛逼在哪? --到底我能用来干嘛? 把"他"想象成一个博览群书的人 想象一下,现在有一个知识非常渊博的一个人,博览群书,掌握了绝 ...
- Ubuntu 安裝 VMware Workstation Pro
安装 下载依赖: # Ubuntu 22.04 及以前 sudo apt install libaio1 # Ubuntu 24.04 及以后 sudo apt install libaio1t64 ...
- Codeforces Round 916 (Div. 3) (A~F附带题解和详细思路)
Codeforces Round 916 (Div. 3) (A~E2) A. Problemsolving Log 签到题,对于给出的字符串,用数组记录每个字母出现的次数,然后遍历一边记录数组,如果 ...
- DRBD - Distributed Replication Block Device
Ref https://computingforgeeks.com/install-and-configure-drbd-on-centos-rhel https://www.veritas.com/ ...
- Innodb对表加锁的过程分析
本节我们通过一些具体的案例来分析Innodb对表上锁的过程.具体场景如下图所示. 在这里我们将语句分为4类:普通select(快照读).锁定读.半一致性读 和 insert语句. 普通读 普通的sel ...
- .NET 的 Native AOT 现在是什么样的?
今天要写的这篇文章源自昨天在朋友圈发的文章<UWP 通过 .NET 9 和Native AOT 的支持实现 UWP 应用的现代化>[1],一位小伙伴的对话让我想全面梳理下Native AO ...