# rlTrainOptions


智能体训练选项

函数库: TyReinforcementLearning

# 语法

train_options = rlTrainOptions(
    max_episodes=max_episodes,
    batch_size=batch_size,
    target_update_interval=target_update_interval,
    soft_update=soft_update,
    soft_update_factor=soft_update_factor,
    learning_interval=learning_interval,
    path=path,
    save_condition=save_condition,
    stop_condition=stop_condition,
    averageing_window_length=averageing_window_length,
    test=test,
    evaluator=evaluator  
)

# 说明

创建一个智能体训练选项对象,用于指定在环境中训练智能体的选项。训练选项包括最大模拟回合数、经验回放批处理大小、固定目标网络更新控制、智能体学习间隔、模型保存与读取、平均窗口长度、是否测试智能体等选项。在设置了选项后,将该对象作为train!函数的输入参数。

# 示例

依据默认值创建智能体训练选项对象
using TyReinforcementLearning
train_options = rlTrainOptions()
rlTrainOptions(1000, 256, 100, false, 0.05, 300, "result", Dict("best" => 0), Dict{Any, Any}(), 20, true, rlEvaluator("MeanEpisodeReward", 1, 0, false, 1))
创建特定的智能体训练选项对象

创建特定的智能体训练选项对象,根据 name=value 来指定参数。

using TyReinforcementLearning
train_options = rlTrainOptions(
    max_episodes=200,
    save_condition=Dict(["best" => 1, "interval" => 100]),
    learning_interval=1,
    test=true,
    batch_size=256,
)
rlTrainOptions(200, 256, 100, false, 0.05, 1, "result", Dict("interval" => 100, "best" => 1), Dict{Any, Any}(), 20, true, rlEvaluator("MeanEpisodeReward", 1, 0, false, 1))

# 输入参数

max_episodes-最大训练回合数
标量

最大训练回合数。指定为正整数,训练会在达到最大回合数后终止。

默认值:1000

数据类型:Int64

batch_size-批处理大小
标量

批处理大小。用于具有经验回放功能的智能体中,用于控制单次迭代时所学习的数据量。

默认值:256

数据类型:Int64

target_update_interval-目标网络更新间隔
标量

目标网络更新间隔。用于具有目标网络且使用硬更新方法的智能体中,用于控制目标网络两次更新的间隔。

默认值:100

数据类型:Int64

soft_update-否使用软更新
布尔值

是否使用软更新。用于具有目标网络的智能体中,用于控制其目标网络的更新方法是否为软更新。

默认值:false

数据类型:bool

soft_update_factor-软更新系数
标量

软更新系数。用于具有目标网络且使用软更新方法的智能体中,用于控制目标网络单次更新的幅度。

默认值:0.05

数据类型:Float64

learning_interval-学习间隔
标量

学习间隔。用于控制智能体两次学习之间的步数间隔。如果使用了经验回放功能或是表格型的智能体,推荐学习间隔使用较小的值(如 1),这样可以更充分地利用数据。

默认值:300

数据类型:Int64

path-保存路径
字符串

保存路径。用于保存智能体、训练结构等文件的目录,建议使用绝对路径。

默认值:"result"

数据类型:string

save_condition-保存条件
字典

保存条件。用于在训练过程中判断是否保存智能体以及相应的值,所保存的智能体文件序号从 1 依次向后延续。数据以字典的方式传入,可以指定为以下值:

  • "best" => 0 :保存 score 最高的智能体,所保存的智能体文件名为 agent0;
  • "interval" => n: 每运行 n 个 episode 时保存;
  • "episodeReward" => score:当前回合测试分数大于等于 score 时保存;
  • "averageReward" => score:当前回合平均窗口测试分数大于等于 score 时保存;
  • "episodeCount" => score:当前已训练回合数大于等于 score 时保存;
  • "averageSteps" => score:当前回合平均步数大于等于 score 时保存;
  • "globalStepCount" => score:当前总训练步数大于等于 score 时保存;
  • "custom" => func:当自定义保存函数返回为 true 时保存。

自定义的保存函数,其形式如下:

func(result)

输入参数 result 为当前状态下的训练结果,一个rlTrainResult结构体对象,包含以下内容,可以使用其获取训练次数,最高分数,平均分数等当前训练的状态。

名称 说明
TrainOptions 训练选项。
BestScore 最高分。
rewards_per_episode 每个回合的奖励,以向量形式返回。每个条目包含对应回合的奖励。
steps_per_episode 每个回合的步数,以向量形式返回。每个条目包含对应回合的步数。
test_scores_per_episode 每个回合的分数,以向量形式返回。每个条目包含对应回合的分数(如果在 trainOptions 中指定 test=false,则该项等于 rewards_per_episode )。
average_rewards_per_episode 窗口期内的平均奖励,以向量形式返回。
average_steps_per_episode 窗口期内的平均步数,以向量形式返回。
average_test_scores_per_episode 窗口期内的平均分数,以向量形式返回。
total_agent_steps 训练中智能体的总步数,以向量形式返回。每个条目包含到达该回合之前的 steps_per_episode 条目的累积和。

默认值:Dict(["best" => 0])

stop_condition-中止条件
字典

中止条件。用于在训练过程中判断是否提前中止训练。数据以字典的方式传入,可以指定为以下值:

  • "episodeReward" => score:当前回合测试分数大于等于 score 时中止;
  • "averageReward" => score:当前回合平均窗口测试分数大于等于 score 时中止;
  • "globalStepCount" => score:当前总训练步数大于等于 score 时中止;
  • "averageSteps" => score:当前回合平均步数大于等于 score 时中止;
  • "episodeCount" => score:当前已训练回合数大于等于 score 时中止;
  • "custom" => func:当自定义中止函数返回为 true 时中止。

自定义的中止函数,其形式如下:

func(result)

输入参数 result 为当前状态下的训练结果,一个rlTrainResult结构体对象,可以使用其获取训练次数,最高分数,平均分数等当前训练的状态。

默认值:Dict()

averageing_window_length-平均窗口长度
标量

平均窗口长度。用于平滑化奖励或其他指标的变化趋势。这个参数定义了一个滑动窗口的长度,通过计算窗口内的平均值来平滑数据。

默认值:20

数据类型:Int64

test-是否测试
布尔值

是否启用 evaluator 函数。其奖励值之和作为智能体当前得分。如果设置为 false,则以训练过程中的奖励值之和为当前得分。

默认值:true

数据类型:Bool

evaluator-评估器
结构体

训练过程中测试使用的评估器。指定为rlEvaluatorrlCustomEvaluator对象。

默认值:rlEvaluator()

数据类型:Bool

# 输出参数

train_options-智能体训练选项
结构体

智能体训练选项,用于训练智能体。

# 另请参阅

train!