所谓的强化学习,是指智能系统从环境到行为的映射学习,目标是使奖励信号(强化信号)最大化。如果某个行为策略使环境给予正向奖励,那么该行为策略被采用的可能性就会增强。
假设我们有一只小白鼠在一个迷宫外,如果它找到了正确的路径,就给予正反馈(例如糖),反之则给予负反馈(例如电击)。随着时间的推移,无论将小白鼠放在哪里,它都能找到正确的出路。
下面我们来看一个具体的例子:
假设我们有5个房间,房间编号为0到4,其中5代表出口。我们可以通过一幅图来展示它们之间的连接情况。
在这个例子中,我们的目标是找到出口。为了实现这一目标,我们为每个房间之间的通道设置了不同的奖励值。例如,如果能直接到达出口,则给予100的奖励,其他路径则不给予奖励。我们用一个矩阵来表示这些奖励值。
在这个环境中,我们引入了一个虚拟的机器人,它需要通过自我学习来找到出口。每个房间被视为一个状态(state),而从一个房间移动到另一个房间的动作被称为动作(action)。我们可以通过一个状态转移图来表示这些关系。
假设我们现在位于房间2,只能移动到房间3,而不能直接移动到房间0、1或4。从房间3可以移动到房间1、4或2;房间4可以移动到房间0、3或5。这些关系可以用一个矩阵来表示,这就是所谓的Q矩阵。Q矩阵的列代表当前状态,行代表下一个状态。例如,第三行第二列的值表示从状态2转移到状态4的收益。
Q矩阵初始值为0,因为我们已经知道了所有可能的状态。如果我们不知道有多少状态,可以从一个状态开始,并在发现新状态时扩展矩阵。
根据Q-learning公式,Q(state, action) = R(state, action) + Gamma * Max[Q(next state, all actions)],Q矩阵的值等于当前奖励加上折扣因子乘以下一状态的最大收益。
虚拟机器人将通过不断尝试来学习最佳路径。它会从一个状态转移到另一个状态,直到到达最终状态。每一轮尝试称为一个场景,机器人会在一个随机状态开始,直到到达最终状态后重新初始化,开始下一轮尝试。
Q-learning算法可以总结为以下步骤:
举个例子,假设从状态1到状态5的奖励值为100,而Gamma值为0.8,那么Q(1, 5)的值为80。
为什么要重新计算呢?因为某些状态的价值可能会发生变化,计算完成后需要更新矩阵。
通过多次迭代,最终得出的结果如图所示。经过归一化处理,矩阵的值最终变为如图所示。
强化学习到此结束。我们的虚拟机器人通过不断试错,最终学会了最优路径。
接下来讨论一些细节问题。在选择动作时,我们通常会选择当前状态下收益最大的动作。但如果存在多个最大收益的动作,就需要随机选择其中一个。为了平衡探索和利用,我们引入了ε-greedy策略。即有一定概率随机选择动作,其余情况下选择当前状态下收益最大的动作。随着学习的进行,ε的值逐渐减小,以减少随机动作的影响。
希望这些解释对你有所帮助。如果你有兴趣了解更多细节,可以继续阅读相关代码。