# rlSQLAgent
强化学习 SQL 智能体
函数库: TyReinforcementLearning
# 语法
agent = rlSQLAgent(models, agentOptions)
agent=rlSQLAgent(critic, agentOptions)
# 说明
agent = rlSQLAgent(models, agentOptions) 使用指定智能体模型来创建一个 SQL 智能体,并通过 agentOptions 设置智能体属性。
agent =rlSQLAgent(critic, agentOptions) 使用指定评价者来创建一个 SQL 智能体,并通过 agentOptions 设置智能体属性。
SQL(Soft Q-Learning)是一种基于 Q-Learning 算法的变体,它引入了一个软化(soften)操作,用于处理动作选择时的探索与利用之间的权衡。引入 Boltzmann 分布(也称为 softmax 函数),对动作的选择进行软化。具体来说,对于每个状态,SQL 计算出每个动作的概率分布,然后根据这个概率分布进行动作选择。这样,不仅会选择具有较高 Q 值的动作,还会给予其他动作一定的概率,以增加探索的机会。
SQL 通过调整参数 alpha 来控制动作选择的随机性。较高的 alpha 会导致更均匀的概率分布,从而增加了非最优动作被选择的概率。相反,较低的 alpha 会使得概率分布更加尖锐,更倾向于选择具有较高 Q 值的动作。
通过软化操作,SQL 允许智能体在策略探索和利用之间进行平衡,同时保持一定程度上的随机性。这样可以帮助智能体更好地探索状态空间,并有可能发现更优的策略。
# 示例
使用指定智能体模型创建 SQL 智能体
创建环境接口。对于此示例,使用“CartPole-v1”环境,其动作空间是离散的,包含 4 个状态和 2 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CartPole-v1");
根据环境的状态个数与动作个数创建 SQL 的值函数。
critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env));
基于值函数创建智能体模型。
models = rlSQLModels(
criticNet=critic_net
);
创建智能体选项。
option = rlSQLAgentOptions(
stateSize=StateSize(env),
actionNum=ActionDims(env)
);
使用智能体模型与智能体选项创建智能体。
agent = rlSQLAgent(models,option)
rlSQLAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), Chain(Dense(4 => 64, relu), Dense(64 => 2)), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, 300, false, 0.05, 0.02, 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)
使用指定评价者创建 SQL 智能体
创建环境接口。对于此示例,使用“CartPole-v1”环境,其动作空间是离散的,包含 4 个状态和 2 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CartPole-v1");
创建评价者。
critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env))
critic = rlVectorQValueFunction(net=critic_net);
创建智能体选项。
option = rlSQLAgentOptions(
stateSize=StateSize(env),
actionNum=ActionDims(env)
);
使用评价者与智能体选项创建智能体。
agent=rlSQLAgent(critic,option)
rlSQLAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), Chain(Dense(4 => 64, relu), Dense(64 => 2)), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, 300, false, 0.05, 0.02, 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-智能体模型
结构体
智能体模型,指定为rlSQLModels对象,用作 SQL 智能体的策略。本函数包括策略函数、值函数,策略函数和值函数的优化器,策略函数和值函数的 L2 正则化因子,用于指导智能体生成动作,并对环境状态-动作对进行价值评估。
critic-评价者
结构体
强化学习评价者 critic,指定为rlVectorQValueFunction对象。
agentOptions-智能体选项
结构体
智能体选项,指定为rlSQLAgentOptions对象。
# 输出参数
agent-智能体
结构体
输出一个可以训练的强化学习 SQL 智能体。
# 另请参阅
BuildEnv | rlSQLModels | rlVectorQValueFunction | rlSQLAgentOptions | StateSize | ActionDims | randomNoise