文章目录
写在前面
强化学习是一门来源于心理学的学科,每个人都是过去经验的总和
你过去的经验,早就现在的你。
day1
第一天真的是纯小白入门。作业也就是一键运行,熟悉百度自己的PARL强化学习框架。顺带说一下,这个框架是两届强化学习世界冠军使用的框架。使用此框架不仅能够快速入门强化学习,还能使用框架提供的基于注释的并行算法(两行代码搞定问题,可谓超级强大)。
value-based & policy based
VB是确定性的策略
PB是随机性的策略
day2 基于表格的方法求解RL
强化学习的探索和利用算法:
第二天的作业是使用迷宫游戏来让我们学习和了解Sarsa和Q-learning两种算法。强化学习方法总的来说分为两大类:value-based和policy-based方法。本次的两种方法都是属于value-based的。话不多说 直接上两种方法的伪代码:
SARSA
sarsa其实是一种on-policy的策略,sarsa优化的是它实际上要去执行的策略,直接拿下一步一定要去执行的action来优化q-table,on-policy用一种策略去做action的选取,也用一种策略去做优化。所有sarsa它可以知道自己下一步可能会有危险,所有它的策略会比较保守。
Q-Learning
从代码片段看两者的区别
on-policy和off-policy区别
day3 基于神经网络的方法求解RL
对于gym中的迷宫,悬崖或者是自己定义的迷宫,状态都是可数的,但是往往在生活中很多问题的状态数都是不可数的。对于可数的状态数,我们可以使用一个q-table来状态这些状态,那么对于状态不可数的怎么办呢?这个时候,DQN就应运而生了。DQN=Q-Learning+神经网络
值函数近似
使用带参数的q函数来近似q表格。可以有多对一的近似或者是一对多的近似。
DQN两大创新点
对于DQN并没有严格的公式能够证明其收敛,但是DQN引入了两大技巧来使收敛。
Experience Replay: 解决样本的相关性和利用效率的问题
在Supervised Learning解决归类问题(classification)的应用场景中,我们的训练数据是经过shuffle 打乱的,这是因为如果不打乱,很可能前面的几个mini batch都是归于同样的class的(我们训练的时候是一小批一小批数据来训练的,这样算出的gradient会比单个数据更准确,也减少了单个数据训练带来的overhead)。这样导致的问题就是我们的神经网络先学会了把所有图片归类成为一个class,然后又学会了把图片归类为另一个class(毕竟在几个batch内只看这一个class的图片)。这样的学习过程就让神经网络不能收敛,因此我们需要在batch里面有不同class的图片,这样学习就容易收敛,不会偏向于一个class。
在DQN里面也是相同的,一局游戏的前后其实有挺高的关联,例如Breakout打砖块游戏这一个state跟下一个state其实基本上只差了一个砖块的不同。
这样很容易导致DQN学习的问题,为了减少这个问题的出现,我们使用Experience Replay,把过去的 (