强化学习是一类算法,使计算机实现从一开始什么都不懂,通过不断的尝试,从错误中总结经验,更新自己的行为准则,最后找到规律,学习实现目标的方法。例如Alpha Go。
那么计算机是通过什么样的方法来学习的呢?
计算机需要一位虚拟的好老师,这位老师比较吝啬,他不会告诉计算机如何行动,如何做决定。他为计算机做的事情只有给计算机的行为打分,而计算机要做的就是从老师打出的分数中学习怎么做决定,即记住那些会被打高分和低分的行为,并在下一个时间步中尝试用一个好的行为得到高分而避免低分。
比如老师会根据表情的高兴程度打分,当计算机给出一个高兴表情时会得到高分,而计算机给出一个难过表情时会得到低分。在开始时,计算机给出的表情近乎随机,而随着迭代的深入,计算机获得了这些被打分的经验,有了这些经验,计算机就能学会如果要得到一个好的分数,应该给出一个高兴的表情。

可见,在强化学习中,一种行为被定义的分数是强化学习的核心思想,即强化学习具有分数导向性。相比于监督学习在训练集中就给出了数据和标签,在强化学习中,所有的数据在开始时不会给予计算机任何标签,只有在计算机确定了某个数据输入后老师才会给出该输入对应的标签(或分数)让计算机学习。

单步更新效率更高,故通常使用单步更新

Pip/pip3 install gym

Q-Learning
Sarsa算法(实践派):

R-Learning比较激进,而Sarsa比较保守

传统强化学习(Q-Learning和Sarsa)的问题是,随着时代的发展,一个模型的状态和行为会大量扩展,用表格的形式记录所有可能的状态和行为几乎已经成为了不可能的事情,例如Alpha Go学习下围棋。这就是为什么强化学习要和深度学习搭档,形成深度强化学习的Deep Q-Learning算法。将状态和行为输入神经网络输出行为的Q值,或者输入状态值得到该状态下所有行为的Q值并选择其中的最大值作为要做的行为。