#神经网络 #强化学习 #人工智能 #神经进化 #机器学习 #

evo-rl

基于神经进化的ML库,用于强化学习,灵感来自NEAT

4个版本

0.1.0-alpha.42024年6月25日
0.1.0-alpha.32024年6月24日
0.1.0-alpha.22024年4月22日
0.1.0-alpha.12023年11月10日

#463机器学习

MIT/Apache

115KB
2K SLoC

Evo RL

Evo RL是一个用Rust编写的机器学习库,旨在探索创建人工神经网络的进化策略。神经网络作为由直接编码方案指定的图来实现,允许在选择过程中进行交叉。

神经进化

神经进化 是人工智能领域的一个分支,利用进化算法创建结构化的人工神经网络。

此库中的主要进化算法灵感来源于 NEAT (K.O. Stanley and R. Miikkulainen) 并实现了截断作为选择机制的随机通用抽样。

关于2024年该领域的最新进展和其他包的调查/讨论,请参阅 此处

或者 EvoJAX 提供了一个更完整且可扩展的工具包,实现了许多神经进化算法。

仓库

该仓库的代码位于 Github

Python

可以通过在源代码目录中运行 maturin develop 来构建一个python包 (evo_rl)。示例包含在 examples 目录中。

以下是一个代码片段

#A Python script which trains an agent to solve the mountain car task in OpenAI's Gymnasium

import evo_rl
import logging

from utils import MountainCarEnvironment, visualize_gen

import gymnasium as gym
import numpy as np

FORMAT = '%(levelname)s %(name)s %(asctime)-15s %(filename)s:%(lineno)d %(message)s'
logging.basicConfig(format=FORMAT)
logging.getLogger().setLevel(logging.INFO)

population_size = 200

configuration = {
        "population_size": population_size,
        "survival_rate": 0.2,
        "mutation_rate": 0.4, 
        "input_size": 2,
        "output_size": 2,
        "topology_mutation_rate": 0.4,
        "project_name": "mountaincar",
        "project_directory": "mc_agents"
        }

env = gym.make('MountainCarContinuous-v0')
mc = MountainCarEnvironment(env, configuration)

p = evo_rl.PopulationApi(configuration)

while p.generation < 1000:

    for agent in range(population_size):
        mc.evaluate_agent(p, agent)

    if p.fitness > 100:
        break
        
    p.update_population_fitness()
    p.report()
    p.evolve_step()

运行测试

详细

RUST_LOG=[debug/info] cargo test -- --nocapture

依赖项

~14–21MB
~299K SLoC