上次提到一个问题,就是如何有效的将交叉熵算法用于很大的数据量的问题上。
前面说过,对于骑自行车这种可能只有十个 state,四个 aciton 的小问题上面,交叉熵可以解决,但如果在自动驾驶,或者打游戏上面,它却不行,因为这时我们没有办法再存储一个表格来记录所有可能状态的所有可能行为的概率,因为这可能有几十亿的状态,或者是一个连续空间,是没有办法做记录的。
存储这样的表格不仅是不可能的,也是没有效率的。如果我们稍微改变了某个状态,agent 就要从头开始学习,因为这是一个不同的状态,从来没有见过。
人类肯定不是这样学习的,我们有概括能力,所以也想让强化学习算法具有这样的能力,这时就可以用approximate reinforcement learning
这时我们就不再不明确地存储所有的概率了,可以用机器学习算法去学习,例如用神经网络,也可以是回归,随机森林等任何算法都可能,让它们来模拟学习。
例如在某个游戏中,agent 玩了 N 次,从中选择 M 次成绩最好的,称之为 elite games。这时不再更新表格,只是通过若干次梯度下降的迭代来学习,通过训练神经网络,来增加在 elite 中的 action 的概率。