Q-Learning 卡在一个几乎是玩具的问题上

机器算法验证 机器学习 强化学习 人工智能
2022-03-27 05:08:35

我正在使用 Q-Learning 来训练基于 MDP 的表单填写对话管理器。现在它在一个近乎玩具的设置中运行,共有 210 个状态(通常对应于表单填写进度)和 6 个可用操作(例如问候、询问信息、确认信息)。

学习本质上是一个简单的用户模拟器的反复试验,该模拟器可以回答代理的请求(确定性地,没有错误)。自己亲手制作的奖励函数,每轮对话只有-1(如果没有其他适用),填表进度(槽值填写/确认)+1,达到目标+1000,打招呼-1000不合时机。我使用 PyBrain RL 框架来实现。

所以,问题是,在一般的 100000 次交互集之后,Q-Learning 似乎没有找到最优策略。在学习之后,它的行为有些欠佳,随机进行 -1 动作并避免 -1000 的主要痛苦,但在成功对话结束时追求 1000 的奖励似乎无济于事。

对于 1-slot 形式的情况,完美的动作奖励序列是:

greet -1 --> askSlotValue -1 --> fillSlot +1 --> askConfirmation -1 --> confirmSlot +1 --> quitDialogue +1000。

那么,在这种情况下,为了实际获得最优策略,我应该学习什么?我是要以某种方式调整奖励功能,还是改用预先编写好的对话来学习?

我相信即使是基于模拟的基本试错方法也可以处理这种规模的问题。合理吗?

1个回答

探索可能是个问题。您确定算法在训练期间会尝试所有合法行为吗?为所有 Q 值设置一个非常高的初始估计值将鼓励在训练开始时进行探索。您也可以尝试“软选择”,在其中随机选择一个动作,而不是在某些时候具有最高 Q 值的动作。