# rlDQNAgent
强化学习 DQN 智能体
函数库: TyReinforcementLearning
# 语法
agent = rlDQNAgent(models, agentOptions)
agent = rlDQNAgent(critic, agentOptions)
# 说明
agent = rlDQNAgent(models, agentOptions) 使用指定智能体模型来创建一个 DQN 智能体,并通过 agentOptions 设置智能体属性。
agent = rlDQNAgent(critic, agentOptions) 使用指定评价者来创建一个 DQN 智能体,并通过 agentOptions 设置智能体属性。
DQN(Deep Q-Network)是一种基于深度学习和值函数的强化学习算法,用于解决具有高维状态空间和离散动作空间的强化学习问题,通过与环境的交互来学习最优策略。
DQN 算法的核心思想是结合 Q-learning 和深度神经网络(DNN),利用深度学习技术来近似和优化 Q 值函数。传统的 Q-learning 方法往往难以处理大规模状态空间,而 DQN 通过将 Q 值函数拟合为 DNN,可以有效地处理高维状态空间。该网络通常由多层全连接层组成,可以使用 CNN 或其他类型的神经网络结构,以适应不同的问题。通过不断迭代和更新神经网络的参数,DQN 智能体可以学习到最优的 Q 值函数近似,并根据该函数选择最佳动作。在训练完成后,DQN 智能体可以使用训练得到的策略在给定环境中做出决策。
# 示例
使用指定智能体模型创建 DQN 智能体
创建环境接口。对于此示例,使用“CartPole-v1”环境,包含 4 个状态和 2 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CartPole-v1");
根据环境的状态个数与动作个数创建 DQN 的值函数。
critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env));
基于值函数创建 DQN 智能体模型。
models = rlDQNModels(
criticNet=critic_net
);
创建智能体选项。
option = rlDQNAgentOptions(
stateSize=StateSize(env),
actionNum=ActionDims(env)
);
使用智能体模型与智能体选项创建智能体。
agent = rlDQNAgent(models,option)
rlDQNAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, TyReinforcementLearning.original_rewards, rlReplayMemory(Matrix{Float64}(undef, 4, 0), Matrix{Int64}(undef, 1, 0), Float64[], Matrix{Float64}(undef, 4, 0), Bool[], 0), rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)
使用指定评价者创建 DQN 智能体
创建环境接口。对于此示例,使用“CartPole-v1”环境,包含 4 个状态和 2 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CartPole-v1");
创建 DQN 评价者。
critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env))
critic = rlVectorQValueFunction(net=critic_net);
创建智能体选项。
option = rlDQNAgentOptions(
stateSize=StateSize(env),
actionNum=ActionDims(env)
);
使用评价者与智能体选项创建智能体。
agent = rlDQNAgent(critic, option)
rlDQNAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, TyReinforcementLearning.original_rewards, rlReplayMemory(Matrix{Float64}(undef, 4, 0), Matrix{Int64}(undef, 1, 0), Float64[], Matrix{Float64}(undef, 4, 0), Bool[], 0), rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)
# 输入参数
models-智能体模型
结构体
智能体模型,指定为rlDQNAModels对象,用作 DQN 智能体的策略。本函数包括值函数、值函数优化器与 L2 正则化因子,用于指导智能体对环境状态-动作对进行价值评估并选择输出动作。
critic-评价者
结构体
强化学习评价者 critic,指定为rlVectorQValueFunction对象。
agentOptions-智能体选项
结构体
智能体选项,指定为rlDQNAgentOptions对象。
# 输出参数
agent-智能体
结构体
输出一个可以训练的强化学习 DQN 智能体。
# 另请参阅
BuildEnv | BuildDefaultNet | rlDQNModels | rlVectorQValueFunction | rlDQNAgentOptions | StateSize | ActionDims | epsilonGreedy