如何概括强化学习中的多个依赖动作

时间:2018-08-10 13:56:30

标签: reinforcement-learning price

我试图建立一个RL代理,以支付飞机座位(而不是机票)的价格。常规设置为:

  1. 选择航班后(针对预订中的 n 人),客户将查看包含可用座位类型和价格的网页。
  2. 他们从座位图中选择零个和 n 个座位,不同座位的价格各不相同,然后添加到预订中。
  3. 也许经过了一些其他步骤之后,他们支付了预订费用,代理商获得了席位收益。

我还没有决定通用的体系结构。我想考虑各种预订和航班信息,所以我知道我将使用函数逼近(很可能是神经网络)来概括状态空间。

但是,我对如何设置动作空间尚不清楚。我想一个动作等于一个向量,每个座位类型都有一个价格。例如,如果我有8种不同的座位类型,并且每种都有10个不同的价格点,那么总共给我提供10 ^ 8种不同的动作,其中许多动作将非常相似。此外,每个子动作(为一种座位类型定价)在某种程度上取决于其他子动作,从某种意义上说,一个座位类型的价格可能会影响对另一个座位的需求(并因此奖励贡献)。因此,我怀疑该问题是否可以分解为一系列子问题。

我对是否有任何针对此类问题的研究感兴趣。显然,我构建的任何代理都需要某种方式来在某种程度上概括各种操作,因为即使在一个状态下也无法收集数百万个操作的真实数据。

如我所见,这归结为两个问题:

  1. 是否可以让代理理解相对的行为?举例来说,一组潜在价格为[10,12,20]。我能否让我的经纪人意识到那里存在自然的订货,并且前两个定价动作彼此之间的相似性大于第三种可能的定价行为?
  2. 此外,是否可以从这一系列操作中进行概括-是否可以设置代理以了解价格组[10、13、20]与第一组价格非常相似?

我还没有找到任何有关这方面的文献,特别是有关第二个问题的任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但是我将假设这就是您要问的问题,并将相应地回答。

  1. 我正在构建一个RL,它必须足够聪明才能理解,如果我要购买一张机票,那么它将立即影响其他机票的价格,因为现在供应减少了。

  2. 此外,RL代理必须意识到彼此非常接近的动作是相对相似的动作,例如[10,12,20]≈[10,13,20]

1)为了向您的RL代理提供内存,您可以通过两种方式进行。最简单的方法是将州作为过去购买的票证以及当前票证的向量。

示例:假设我们建立RL以至少记住过去3次交易。在开始时,我们的状态向量将为[0,0,3],这意味着以前没有购买票证(零),而目前,我们正在购买票证#3。然后,下一个时间步的状态向量可以是[0、3、6],告诉RL代理先前已选择了票#3,现在我们要购买票#6。神经网络将学习到状态向量[0,0,6]与[0,3,6]相比应映射到不同的结果,因为在第一种情况下,第6张票是购买的第一张票,并且有很多票供应。但是在第二种情况下,票3已经售出,所以现在所有剩余的票价格都上涨了。

正确且更复杂的方法是将循环神经网络用作RL代理的函数近似器。循环神经网络体系结构允许神经网络记住某些“重要”状态。对于您来说,以前购买的门票数量很重要,因此神经网络会记住以前购买的门票,并据此计算输出。

2)任何函数逼近强化学习算法都会自动概括彼此接近的动作集。唯一无法做到这一点的RL体系结构将是基于表格的方法。

原因如下:

我们可以简单地将这些函数逼近器视为一条线。神经网络只是建立一条高度非线性的连续线(使用反向传播和梯度下降训练神经网络,因此它们必须是连续的),并且一组状态将映射到一组唯一的输出。因为它是一条线,所以非常相似的状态集应该映射到也非常接近的输出。在最基本的情况下,假设y = 2x。如果我们的输入x = 1,我们的y =2。并且如果我们的输入x是1.1,非常接近1,我们的输出y = 2.2,这非常接近2,因为它们在一条连续的线上。

对于表格方法,仅存在一个矩阵。在y轴上有状态,在x轴上有动作。在这种方法中,状态和动作是离散的。取决于离散化,差异可能很大,并且如果系统离散化差,则彼此之间非常接近的动作可能无法推广。

我希望这会有所帮助,如果有任何不清楚的地方,请告诉我。