RL56-DeepQ

前情提要

Q-learning

Q-Learning的目的是学习特定State下、特定Action的价值。Q-table可以形象地将其称为生活手册,因为其表示了在不同动作和状态之下所得到的Q函数.建立一个Q-Table,以State为行、Action为列,通过每个动作带来的奖赏更新Q-Table。因此,Q-table可以作为一种我们强化学习之后得到的结果,也就是输出。

1
2
3
4
初始化:	初始化学习率、可执行动作、Q_table等参数
动作选择: 根据小男孩当前所处的环境和Q_table进行动作选择
学习: 根据小男孩当前所处的环境对其它环境的预测情况q_predict和下一步环境的实际情况q_target更新Q_table表
确认是否存在该环境: 由于在学习之前环境是未知的,当进入一个新环境时,需要生成一个得分都为0的动作表格
1
2
3
4
5
6
7
8
模块名称	作用/功能
初始化 初始化环境参数、用于构建环境
图画更新 用于更新当前的图画,便于用户观察
环境观察 用于返回当前环境情况
终点观察 用于返回是否到达终点
更新坐标 用于更新当前所处位置
下一环境获取 用于获取下一步的环境的实际情况
参数归零 用于每一个世代坐标和当前行走步数的归零

Q-Learning是off-policy的。异策略是指行动策略和评估策略不是一个策略。Q-Learning中行动策略是ε-greedy策略,要更新Q表的策略是贪婪策略。

①target policy:目标策略,如同战役中的军师,在幕后学习前方将士传来的经验并做出决策,不需要亲自与环境交互,是我们要学习的策略。

②behavior policy:行为策略,如同一线的战士,根据军师的命令在战场上实际作战,并将得到的经验传给后方的军师。



我们先看下Q-learning算法的更新Q值的公式:

算法伪代码

SARSA

Sarsa全称是state-action-reward-state-action。 也是采用Q-table的方式存储动作值函数;而且决策部分和Q-Learning是一样的, 也是采用ε-greedy策略。不同的地方在于 Sarsa 的更新方式是不一样的。

Q-Learning算法,先假设下一步选取最大奖赏的动作,更新值函数。然后再通过ε-greedy策略选择动作。
Sarsa算法,先通过ε-greedy策略执行动作,然后根据所执行的动作,更新值函数。

我们再看下Sarsa算法的更新Q值的公式

算法伪代码

因此两种算法在表现上也会有很大的区别,Sarsa表现得更为胆小,因为它会记住每一次错误的探索,它会对错误较为敏感,而Q-learning只在乎Q值的最大化,因此Q-learning会十分贪婪,表现得十分aggressive。

推荐阅读

http://t.csdnimg.cn/F0DZT
http://t.csdnimg.cn/98Ttu

About this Post

This post is written by Rui Xu, licensed under CC BY-NC 4.0.

#AI#Reinforcement Learning