知乎上关于deep learning和强化学习的资源:
https://zhuanlan.zhihu.com/intelligentunit
目前在Deep Reinforcement Learning取得开拓性进展的主要集中在DeepMind和UC Berkerley团队(openAI)
强化学习资料:
简明教程:
http://blog.csdn.net/itplus/article/details/9361915 (
推荐先看这个来了解Q-learning,theory和example很详细)
《Reinforcement Learning-An Introduction》-----入门经典
《Algorithms for Reinforcement Learning》----各种算法
《Reinforcement Learning State-of-the-Art》---最新进展(flat,hierarchical...)
《Recent Advances in Reinforcement Learning》
资源整合:
https://github.com/stone8oy/deepRL/tree/resource
知乎:
https://www.zhihu.com/question/41775291
DQN从入门到放弃:
1,
2,
3,
4,
5,
6,
7
Q-learning、DNQ 和 Policy Gradient :
Q-Learning和Policy Gradient:
https://www.zhihu.com/question/49787932
Q-learning
是一种基于值函数估计的强化学习方法,
Policy Gradient
是一种策略搜索强化学习方法。两者是求解强化学习问题的不同方法,如果熟悉监督学习,前者可类比Naive Bayes——通过估计后验概率来得到预测,后者可类比SVM——不估计后验概率而直接优化学习目标。
Q-Learning和DQN:
https://zhuanlan.zhihu.com/p/21996219
Q-learning
中,t 为时刻,
每一对状态s_t (state)和动作a_t(action),相应的会有一个反馈reward, 定义Q表示从经验中学习到的知识,对应一个Q_t值。
这里的s_t就对应网络中的输入中的一张游戏截图,a_t就对应网络中的输出节点,就是网络看到这个游戏截图后,给出的动作。
Q-learning学习凑效的原因是对Q矩阵的更新
。这个更新遵循一个原则:若当前状态下执行某动作后的下一个状态的动作能带来更多价值,则当前动作的价值就应该往高方向更新,这里说的动作的价值就是Q值。
上面是一个Reward矩阵,Q矩阵和Reward大小一样,也是State*Action大小。
把cnn用作生成Q的一个函数。拿游戏来说,输入是训练游戏截图(state),输出是Q矩阵,所以就叫深度质量网络(DQN)。
状态State到动作Action的过程就称之为一个
策略Policy
,增强学习的任务就是找到一个最优的策略Policy从而使Reward最多。
最开始deep mind 用强化学习来进行Atari游戏,发表paper为
https://link.zhihu.com/?target=http%3A//arxiv.org/abs/1312.5602:
DQN玩flappyBird:
MxNet:
https://github.com/li-haoran/DRL-FlappyBird
TensorFlow:
https://github.com/yenchenlin/DeepLearningFlappyBird
https://github.com/songrotek/DRL-FlappyBird (150行代码完成DQN作者,该作者下还有很多其他的强化学习代码,比如:
https://github.com/songrotek/DQN-Atari-Tensorflow)
150行代码完成DQN:
https://zhuanlan.zhihu.com/p/21477488?refer=intelligentunit
https://github.com/openai/gym
下面是一个强化学习的入门demo,:
(1)
http://www.cnblogs.com/geniferology/p/what_is_reinforcement_learning.html
(2)
https://studywolf.wordpress.com/2012/11/25/reinforcement-learning-q-learning-and-exploration/
(3) github代码:
https://github.com/studywolf/blog/tree/master/RL/Cat%20vs%20Mouse%20exploration
git clone
https://github.com/studywolf/blog.git
cd blog/RL/Cat vs Mouse exploration
python egoMouseLook.py (可能要pip install pygame)
猫的行动是简单地朝着老鼠追(没有智能),老鼠的行动是学习出来的。老鼠学到避开猫、吃芝士。
MDP(Markov Decision Process)马尔科夫决策过程
MDP基于这样一种假设:
未来只取决于当前
什么意思呢?
就是如果我们站在上帝视角下看,我们知道这个世界的每个物体的状态,那么未来的变化只跟当前的状态相关,和过去没有关系。
用数学的话来描述就是:
一个状态是Markov当且仅当
P为概率。简单的说就是下一个状态仅取决于当前的状态和当前的动作。注意
这里的状态是完全可观察的全部的环境状态(也就是上帝视角)。
回到增强学习的范畴,增强学习的问题都可以模型化为MDP的问题。
一个基本的MDP可以用(S,A,P)来表示,S表示状态,A表示动作,P表示状态转移概率,也就是根据当前的状态和转移的概率。如果我们知道了转移概率P,也就是称为我们获得了
模型Model