Q-learning 是要让 agent 通过不断地玩游戏,从环境给予的奖励反馈中学习到给定state下的最优 action。
在 Gym 里的 Taxi 环境中,有个奖励表格 P,例如第 328 个状态的奖励 p 为 :
env.P[328]
{0: [(1.0, 428, -1, False)],
1: [(1.0, 228, -1, False)],
2: [(1.0, 348, -1, False)],
3: [(1.0, 328, -1, False)],
4: [(1.0, 328, -10, False)],
5: [(1.0, 328, -10, False)]}
0-5 表示agent 此时可以采取(south, north, east, west, pickup, dropoff) 这些action
probability 是指采取各个action的概率,这里都是 1
接着是 nextstate 是指在当前state采取每个action后会到达的新状态
然后是每个action的reward ,在这个state上,四个方向的奖励是 -1,pick up和drop off的奖励是-10,如果这个state是正确的目的地,那么drop off 的奖励是20。
最后一列代表 done,当把乘客成功放到目的地后,done 就变成true,此时这一轮的游戏也结束了。
agent 在当前 state 下采取一个 action,根据 P 得到一个奖励,进而计算出一个 Q-value 来记忆这个 action 是否是有利的,它也是衡量这对 state action 组合的质量的指标,比如一个state上有个乘客,那么此时pickup的Q值应该比dropoff和north,east,west,south的要大。
Q-values 最开始可以初始化成任意值,随着 agent 不断探索环境,通过在各个state上执行不同的 action,会获得不同的奖励,并且不断地更新 Q 值。
Q-values 的更新可以有多种算法,最经典的是 Q-learning:
公式的含义是给旧的 Q-value 加个权重 (1−α),再加上新学到的值,这个新学到的值包括在当前state采取当前action的奖励,加上下一个状态next state上最大reward的discounted 值。这个公式既考虑到当前的最优策略,也考虑到下一步的最优策略,最终会驱动agent找到全局整体的最优策略。