上次提到一个问题,就是如何有效的将交叉熵算法用于很大的数据量的问题上。
前面说过,对于骑自行车这种可能只有十个 state,四个 aciton 的小问题上面,交叉熵可以解决,但如果在自动驾驶,或者打游戏上面,它却不行,因为这时我们没有办法再存储一个表格来记录所有可能状态的所有可能行为的概率,因为这可能有几十亿的状态,或者是一个连续空间,是没有办法做记录的。
存储这样的表格不仅是不可能的,也是没有效率的。如果我们稍微改变了某个状态,agent 就要从头开始学习,因为这是一个不同的状态,从来没有见过。
人类肯定不是这样学习的,我们有概括能力,所以也想让强化学习算法具有这样的能力,这时就可以用approximate reinforcement learning
这时我们就不再不明确地存储所有的概率了,可以用机器学习算法去学习,例如用神经网络,也可以是回归,随机森林等任何算法都可能,让它们来模拟学习。
例如在某个游戏中,agent 玩了 N 次,从中选择 M 次成绩最好的,称之为 elite games。这时不再更新表格,只是通过若干次梯度下降的迭代来学习,通过训练神经网络,来增加在 elite 中的 action 的概率。
神经网络要做的是分类任务,
它的输入是 states,目标 y 就是对应的 action,
即网络的输入就是 elite states,elite actions 作为要预测的目标,
然后用随机梯度下降等算法,执行若干次迭代找到最优的策略,
当我们想要更新这个神经网络的 policy 时,只需要调用 fit 训练一下。
这个就是最简单的最基本的算法,而且很有效。
它的基本流程是没有变的,和交叉熵的差不多,也是玩几次游戏,选择最好的几次,作为训练集,训练神经网络模型。
学习资料:
Practical Reinforcement Learning
推荐阅读 历史技术博文链接汇总
http://www.jianshu.com/p/28f02bb59fe5
也许可以找到你想要的:
[入门问题][TensorFlow][深度学习][强化学习][神经网络][机器学习][自然语言处理][聊天机器人]
Hello World !
This is 不会停的蜗牛 Alice !
要开始连载强化学习系列啦!
今天开始我们一起来每天 2 分钟,get 强化学习的一个小知识吧!