我的 RL 问题中的动作空间的合适定义是什么?

问题描述 投票:0回答:0

我正在考虑如何在我的强化学习问题中定义动作空间。目标是尝试许多不同的 RL 算法(基于价值、基于策略和混合),以便在问题的不同变体中比较它们的性能。

强化学习问题设置

环境包含物品。每一项都是一段文字。现有/可能项目的数量是infinite。可以消耗物品。任务是偶发的。在每一集中,智能体都会收到一份已消费物品列表

s_t
,以及一组候选物品
C_t
C_t
是一组有限的项目,但基数因剧集而异。在每个时间步长
t
,代理从
i_t
中选择一个项目
C_t
作为要约。环境要么消耗要么留下
i_t
。在这两种情况下,
i_t
都从
C_t+1
中删除。如果
i_t
被消耗,它被附加到
s_t
。如果物品被消耗(左),则奖励为 1 (0)。当
C_t
为空时,剧集结束。这意味着环境最终会消耗掉所有好的物品,但是由于打折,代理应该先提供好的物品。

  • State:按消费顺序排列的先前消费项目列表
    s_t
    ,以及新项目的候选集
    C_t
    .
  • 行动:提供消费品。
  • 奖励:如果所提供的物品被消耗(左),则为 1(0)。

每个项目

i
(一段文本)都可以表示为n维嵌入向量
v_i = [v_1, v_2, ..., v_n]
,其中
v_j
是实数,
-1 ≤ v_j ≤ 1
代表
j = 1, 2, ..., n
.

状态是实数的m维向量

s_emb
,由
s_t
中的项目的嵌入向量构成。

我正在尝试找到动作空间的良好表示。

可能的行动空间定义(?)

我想到了以下3种方法:

1.) 动作表示是所提供项目

v_i
的嵌入向量
i
。在 value-based 方法中,可以将
s_emb
v_i
作为 DQN 的输入,并对
C_t
中的每个项目执行此操作。它效率低下,因为我们不能一次为所有项目发出 Q 值,但它有效。在基于策略的方法中,这种方法很棘手。像 REINFORCE 这样的算法会输出一个嵌入向量
v'
(或者据我所知,向量中每个元素的均值和方差?)。要找到要提供的项目,
v'
必须与
C_t
中项目的所有嵌入向量进行比较。我是否正确认为这适用于 PPO 或 REINFORCE 等 基于策略的 方法? 缺点
v'
是在不知道
C_t
的情况下产生的,因为
C_t
不在状态表示中。

2.) 从C_t中随机抽取一块大小为

k
的块。在每个时间步,智能体都会提供块中的一个项目,并且块中会重新填充剩余
C_t
中的一个项目。这将允许将块中项目的嵌入向量附加到状态(这在方法 1 中是不可能的,因为
C_t
的大小会变化,因此如果不先嵌入
C_t
就无法构建 NN以固定大小表示)。这将问题从连续的动作空间转移到离散的动作空间。在每个时间步,都有 k 可用的操作,“提供项目 1”,“提供项目 2”,...。现在,如果我是正确的,则可以毫无问题地使用 REINFORCE 或 PPO。 缺点:智能体在每个时间步只有 k 个项目可供选择,这可能不会导致最优订单。

3.) 锦标赛风格系统:

C_t
中的所有项目都被放入比赛的锦标赛支架中。在每场比赛中,
i
j
两个项目竞争,所以状态是
s_emb
v_i
v_j
的串联。该动作是一个离散的二元动作,表示是否提供
i
j
。在实际向环境提供相应的项目之前,代理将遍历整个组别并确定锦标赛的获胜者。我不确定这种方法是否可以用 REINFORCE 或 PPO 执行。

我在问什么?

我正在寻找有关所列方法的反馈。我错了,还是完全误解了什么?还有哪些适合的方法?是否有处理类似 RL 问题的文献或现有项目?

machine-learning deep-learning reinforcement-learning theory
© www.soinside.com 2019 - 2024. All rights reserved.