最小化总成本而不是最大化总奖励时的 Q 学习

数据挖掘 强化学习 q学习 马尔科夫过程
2022-03-02 09:27:48

我有一个决策问题,结果被衡量为我想最小化的成本。它似乎很适合 Q-learning,但我不确定如何调整它以处理成本而不是奖励。

哪一个更好:

  1. 用零初始化所有动作的 Q 值,然后让代理学习最大化 Q 值的动作,然后过滤掉具有最小 Q 值的动作。Q 值更新将是:
q_dict['state1']['act1'] += 
    r + (max([q_dict['state2'][u] for u in q_dict['state2']]))
  1. 用大数字初始化 Q 值,然后让代理学习最小化 Q 值的动作,然后过滤掉具有最小 Q 值的动作。Q 值更新将是:
q_dict['state1']['act1'] -= 
    r + (max([q_dict['state2'][u] for u in q_dict['state2']]))
1个回答

我有一个决策问题,结果被衡量为我想最小化的成本。它似乎很适合 Q-learning,但我不确定如何调整它以处理成本而不是奖励。

在不改变学习算法的任何其他内容的情况下,最简单的方法是注意

Reward=Cost

因此,从字面上看,只需使用标准 Q 学习,根据负成本的总和对预期回报进行优化。一切都会正常工作。你最好的代理最终可能仍会得到负的预期回报(和负的 Q 值),但将其最大化仍应导致最优策略。

如果您出于某种原因确实必须将最小化成本作为您的目标,那么您需要进行一些小的更改才能与 Q 学习一起使用。

您的 Q 函数的定义成为未来成本的预期贴现总和:

Q(s,a)=Eπ[k=0γkCt+k+1|St=s,At=a]

(这实际上只是将替换为RtCt

那么您对最优策略的最佳猜测是最小化预期未来成本的策略:

π(s)=argminaQ(s,a)

而且您的 Q-learning 更新规则也基于最小化下一步的假设优化

Q(s,a)Q(s,a)+α(c+γmina[Q(s,a)]Q(s,a))

这不符合您的任何建议。如果我要更正您的代码,然后使用奖励(带r = -c),它将如下所示:

q_dict[state1][act1] += alpha * (r + max(q_dict[state2].values()) - q_dict[state1][act1])

学习率在哪里alpha,我假设没有折扣(所以它必须是一个偶发问题,而不是连续的)。

如果您想c直接使用成本,并找到最小化总成本的策略,那么它看起来像这样:

q_dict[state1][act1] += alpha * (c + min(q_dict[state2].values()) - q_dict[state1][act1])

代替crminmax

您关于具有不同起始值的想法可能会对收敛速度产生一些影响。但是,这与您使用成本还是奖励无关。

我建议不要像这样直接使用成本。虽然它很简单并且可以工作,但每当您阅读任何 RL 文章时,您都必须不断调整是否切换maxmin. 最大化总和(或平均)奖励的约定在 RL 教程中更为常见,并且在您学习它的同时,您将节省一点努力来遵循这个约定。