强化学习笔记
Step-By-Step Tutorial 问题背景
假设一幢建筑里面有5个房间,房间之间通过门相连,将这五个放进啊按照0到4进行编号,且建筑外围可认为是个大房间,编号为5。
上图的房间可以通过一个图来表示,房间作为图的节点,两个房间若有门相连,则相应节点对应一条边。
对于这个例子,我们首先将agent置于建筑中的任意一个房间,然后从那个房间开始,让其走到建筑外,那是我们的目标房间,编号为5。为了将编号为5的房间设置为目标,我们每一扇门关联一个rewrad值,直接连接到房间的门的reward值为100,其他的reward值为0。
编号为5的房间有一个指向自己的箭头,其reward值为100,其他直接指向目标房间的边的reward值也为100。Qlearning的目标是达到reward值最大的state,因此,当agent到达目标房间后将永远停留在那里,这种目标也称为“吸收目标”。
我们的agent是一个通过经验进行学习的哑巴虚拟机器人,它可以从一个房间走到另一个房间。
假定现在agent位于2号房间,我们希望agent通过学习到达5号房间。
算法解释
Q-Learning算法中有两个重要术语,状态和行为
我们将每一房间称为一个状态,将agent从一个房间走到另外一个房间称为一个行为。
我们可以以状态为行,行为为列,构建一个关于reward值的矩阵R,其中的-1标志空值,即房间不相连。
类似的我们可以构建一个矩阵Q,表示agent已经学习到的知识。矩阵Q与R是同阶的,其行表示状态,列表示行为。
由于刚开始agent对外界环境一无所知,因此矩阵Q应初始化为零矩阵。
注:为简单起见我们,本例中我们假设状态的树木是已知的,设Q是一个6*6的零矩阵。对于状态数目未知的情况,我们可以让Q从一个元素出发,每次发现一个新的状态时就可以在Q中增加相应的行列。
Q-Learning算法的转移规则:
其中 s s s和 a a a表示当前的状态和行为, s ~ \widetilde{s} s 和 a ~ \widetilde{a} a 表示 s s s的下一个状态及行为,学习参数 γ \gamma γ为满足 0 ≤ γ < 1 0\leq \gamma < 1 0≤γ<1的常数。
agent将通过经验进行学习,它不断从一个状态转至另外一个状态探索,直到到达目标,我们将agent的每一次探索称为一个episode,在每一个episode中,agent从任意初始状态到达目标状态。当agent达到目标状态后,一个episode即结束,接着进入另一个episode。
算法步骤
- step1:给定参数 γ \gamma γ和 r e w a r d reward reward矩阵R
- step2:令 Q : = 0 Q:=0 Q:=