虽然不知道最优策略,但是如果我们有一个所有状态所有动作的 记录Q值的表,只要反复通过上面的过程推导就能知道这个大表的所有值,最终就能通过这个大表知道最优策略。
这就是Q-learning 算法的逻辑。
当然Q-learning是不实用的,因为如果state 跟action有非常多,这个表数据量要爆炸的。
所以后续又发展好多算法,我推荐读一下DQN相关的算法。
RL很早很早就有了。
强化学习的历史发展1956年Bellman提出了动态规划方法。
1977年Werbos提出只适应动态规划算法。
1988年sutton提出时间差分算法。
1992年Watkins 提出Q-learning 算法。
1994年rummery 提出Saras算法。
1996年Bersekas提出解决随机过程中优化控制的神经动态规划方法。
2006年Kocsis提出了置信上限树算法。
2009年kewis提出反馈控制只适应动态规划算法。
2014年silver提出确定性策略梯度(Policy Gradents)算法。
2015年Google-deepmind 提出Deep-Q-Network算法。
因为alphaGo 就是基于RL的,主要用了蒙特卡罗树搜索算法 (MCTS)然后RL这两年又被大神们推进了好多优化。
这里有一篇
我摘一段放这里说明一下实现RL算法的几种类别:
Model-free:不尝试去理解环境, 环境给什么就是什么,一步一步等待真实世界的反馈, 再根据反馈采取下一步行动。
Model-based:先理解真实世界是怎样的, 并建立一个模型来模拟现实世界的反馈,通过想象来预判断接下来将要发生的所有情况,然后选择这些想象情况中最好的那种,并依据这种情况来采取下一步的策略。它比 Model-free 多出了一个虚拟环境,还有想象力。
Policy based:通过感官分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动。
Value based:输出的是所有动作的价值, 根据最高价值来选动作,这类方法不能选取连续的动作。
Monte-carlo update:游戏开始后, 要等待游戏结束, 然后再总结这一回合中的所有转折点, 再更新行为准则。
Temporal-difference update:在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样就能边玩边学习了。
On-policy:必须本人在场, 并且一定是本人边玩边学习。
Off-policy:可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则。
RL现阶段比较实用的算法是:
DQN,DDPG, A3C,DPPO 等
这里有一篇deepmind 关于DQN混血的报道
摘一张图大家看看
横轴是训练次数,纵轴是超过人类水平百分比,100%就是等同于平均的人类玩游戏的水平,在57款雅达利游戏中的平均表现。
今天就先讲这么多,之后我会陆续补充一下算法的综述,感谢各位阅读!
GANs:生成对抗网络(待续)
RNN:循环神经网络(待续)
LSTM:长短期记忆网络(待续)
迁移学习(待续)
这两年一些很有趣的开源应用示例,以及使用的算法
CNN :图像识别 人脸识别 风格迁移
RL :alphaGO 游戏代打 机器人控制 阿里商品推荐系统
GANs:风格迁移 草图生成实体图 猫脸转狗脸 去掉图像遮挡 年龄转移 超分辨率
RNN LSTM:翻译模型,生成古诗,生成对联,PSD生成HTML代码