要将您的问题表述为 RL 问题,我们首先需要从1到n. 这样,就会有n + 1总共的动作,即
一种一世= {停止添加 F一世我= 01≤i≤n _ _ _ _
因此,状态s吨将由一个序列表示吨动作,最终状态以动作结束一种0. 此外,步骤奖励吨(做动作后一种吨) 如下
r吨= {− 0.5 +1F(s吨一种吨) = T你好_ _+3吨(s吨一种吨) = T你好_ _0一种吨≠一种0一种吨=一种0
为了为神经网络准备这样的表示,我们需要用 one-hot 编码来表示动作。这是一个例子,
s = [
[0, 0, 0, 1, 0] #a^1
[0, 0, 1, 0, 0] #a^2
[0, 0, 0, 0, 1] #a^0
]
它表示具有三个动作(和四个功能)的最终状态。
问题的棘手部分是state 的不断变化的表示。作为一个相反的例子,对于那些在DQN 论文中研究的视频游戏,每个状态都是固定数量的固定大小的 2D 图像。
为了解决这个设计挑战,我们可以选择以下两种方法之一(可能还有许多其他方法):
将状态的最终长度限制为吨并为那些(尚未)采取的步骤添加“未采取”行动。例如,
s = [
[0, 0, 0, 0, 1, 0] #a^1
[0, 0, 0, 1, 0, 0] #a^2
[0, 0, 0, 1, 0, 0] #a^2
[1, 0, 0, 0, 0, 0] #not taken
[1, 0, 0, 0, 0, 0] #not taken
]
四个功能和吨= 5. 这样一来,我们总共得到n + 2代表每个状态的符号。
使用循环神经网络(RNN、LSTM 等)将可变长度状态编码为固定长度表示;这类似于在 NLP 任务中将可变长度的句子编码为固定长度的表示。
该问题现在被完全表述为 RL 问题,同时考虑了一些实施挑战。
从这一点开始,我们可以通过例如在 RNN 表示之上设计一个 1D Dense 网络,或者在固定长度的 2D 表示之上设计一个 2D Dense 或卷积网络来进行 RL(使用m×(n+2)大小的内核只沿着动作移动,而不是沿着n+2one-hot 编码的维度),它接收状态的表示s,记为ϕ(s), 和输出Q(s,a)对于每个n+1动作,与 DQN 论文相同(参见算法 1:具有经验回放的深度 Q 学习)。
额外说明
- 您可以查看这篇文章,了解使用 Keras 向 LSTM 提供可变长度多维序列。