强化学习--Pytorch篇

Q_learning算法

首先祭出强化学习中的基础方法Q-Learning,算法流程如下图所示:
强化学习--Pytorch篇_第1张图片
Q-learning是一个不断摸索,最终找到最优的方法。个人理解是这样的:
首先Q表是一个初值都为0 的表,被学习体只能随意摸索。当得到reward之后,乘以学习率 alpha ,更新Q表。这样,在下一次走到这一步的时候,就能够根据maxQ(s’,:)来决定选择,其 gammar可以理解为眼界,gammar取值为0~1,极端的,当gammar为1时,表示可以看到后续多步的结果;当gammar为0的时候,则表示只能看到眼前的利益。epsilon 表示贪心,假设epsilon为0.9,则表示90%的概率最选择获得最大reward的action,10%的概率选择其他action。这里选取贪心是为了避免陷入局部最优的尴尬。而maxQ(s’,:)则表示算法会朝着最快获得最大reward的方向前进。off-policy

Sarsa算法

与之相对应的是Sarsa算法,其算法流程为:
强化学习--Pytorch篇_第2张图片
Q_learning 和 Sarsa算法很多地方都是相同的构架,不同之处在于Q-learning选取 m a x Q ( s ′ , : ) maxQ(s',:) maxQ(s,:),而Sarsa则是根据贪婪策略来进行选择。

Sarsa( λ \lambda λ)

Sarsa( λ \lambda λ)相比于Sarsa又多加入了一张表格,用以记录走过的路径。同时该路径上的值会随着每次迭代的进行衰减。所以在算法上,主程序循环不用进行修改,只在更新表的时候,额外在更新一个路径表格,同时让路径表格中的值进行衰减即可,算法流程图如下图所示:
强化学习--Pytorch篇_第3张图片

DQN算法

前面的算法都是基于Q表的,但是在很多实际例子中,一个学习需要的状态很多,或者达到最后Reward所需的步骤很多,这都会造成Q表逐渐增大。因此,总是基于Q表的方法就有些捉襟见肘了,而神经网络确可以很好的完成这个工作,我们需要干的是给神经网络一个state,然后让他自己产生所有的action,然后在结合Q-learning算法即可。
DQN的精华还有一个Fixed-Q target, 也就是说使用两个神经网络,其中一个动态更新Q值,另一个则隔一定步骤之后在进行copyQ值,平常是冻结状态。Q估计采用的是最新的神经网络,Q现实采用的是Fix_Q的神经网络
强化学习--Pytorch篇_第4张图片

你可能感兴趣的:(强化学习)