【李宏毅-强化学习笔记】p3-p5、Q_learning

一、introduction of Q_learning

首先还是讲一下Q_learning的朴素理解:还记得蒙牛的牛仁根吗?他曾经说过:别问我的一双手能干多少事,惟问移泰山需要多少双手;别问我的一口锅能煮多少斤米,惟问劳千军需要多少口锅;别问我的一盏灯能照多少里路,惟问亮天下需要多少盏灯。这段话和Q_learning的思想有异曲同工之妙。

牛仁根的这段话鼓励我们志存高远,遇到困难披荆斩棘而不是望洋兴叹,只有这样才能获得满意的人生。Q_learning不断的update自己,使得称为合格的critic,告诉agent采取某个action可以获得的最大奖励值,所以基于此critic可以告诉agent该怎么选择才能获取最大的利益。

两者的切合点在于如何做好当下最好的自己,做出最明智的选择,现在我们转向问题本身,我们的任务就是训练一个critic,他能告诉我们最佳的action。
问题是如何去训练这个critic呢?假设我们有一笔数据:
(st,at,rt,st+1)

你现在问critic:看到st后我采取行动at能获得的最大收益是多少?
Critic:你能获得的最大收益是看到st+1后所能获得的收益的最大值加上rt。
我:废话,但是好像很有道理的样子。

基于此我们就可以train一个network,即后面要介绍的target network。在此之前回顾下基于value的critic。

1.1、Critic

critic不像actor那样输出action,而是评估当前的actor(用π表示)看到某个scenario后,episode剩余部分所能得到的reward总和的期望值。

值得注意的是critic适合actor关联在一起的,就像日常生活中同样的问题让不同的人解决,其结果也是不一样的,critic就是评估某个人适不适合当前的问题。那么,如何去训练出一个critic呢?主要有两种方法:

**1、**monte-carlo based approach即蒙特卡洛方法
**2、**Temporal-difference approach

1.1.1、Monte-carlo based approach

就是让机器去看曾经的游戏过程,这样agent就知道当看到Sa时,将来能得到的奖励值的期望值。过程如下图所示:
在这里插入图片描述
            图1 基于蒙特卡洛的critic
可以看出基于蒙特拉罗的方法,需要考虑整个episode的奖励值,当episode很长的时候,这会让学习变得很慢,下面的方法可以解决这个问题。

1.1.2、Temporal-difference approach

只要考虑连续的两个scenario,就可以直接训练模型,框架如图2所示:
在这里插入图片描述
              图2 Temporal-difference的critic
以reward为界,把前后两个scenario作为输入进行评估,那么两个输出的差值就是该奖励值reward。

两种方法的比较:
在这里插入图片描述
实际上,每次看到相同的state,最终的奖励值是很多不的和,这个summation不是固定的,而是一个分布值,也就是说MC方法network的目标值其实方差是比较大的;TD的方法显然显然是小方差的,但是可能会有bias,也就是说准确率也不高。后面的tips会有将两者结合起来的方法。

1.1.3、State-action value function

另外一种critic,不是评估agent在该scenario后可以得到多少分,而是给出在不同的action后agent可以获得的cumulated reward。一般的critic是评估形势,本方法是给出选择,如图3所示。
在这里插入图片描述
            图3 state-action value function

1.2、target network

在这里插入图片描述
首先拷贝一份Q的参数并保持,用于估计t+1时刻的最大收益。然后在t时刻用回归的思想来逼近这个值。若干步以后更新target的参数。采取的是步步为营的策略。

1.3 exploration和buffer

1.3.1 exploration

假如以我现在的财力,抽烟只能选择20元档,第一次我买了一包芙蓉王,感觉不错,那么以后为了求稳我每次都只买芙蓉王,因为这样可以获取一个稳定的奖励值(尼古丁的满足)。直到有一天有人递给我一根玉溪,我发现比芙蓉王还淡一些,所以我决定以后买玉溪。也就是说,有时候做一些探索,可能会有更大的收益,当然也有可能获取很糟糕的体验,正如那句富贵险中求。两种常见的exploration的方法如下:
在这里插入图片描述

1.3.1.1 Epsilon Greedy

以1-Epsilon的概率求稳,Epsilon的概率求新。

1.3.1.2 Boltzmann Exploration

不是选择最佳的选项,而是给所有的可能分配一个概率值。

1.3.2 buffer

所谓buffer是episode片段的存储区,每次从中选择一个batch的数据用来更新Q function。这些数据之所以珍贵而且可以重复使用,因为我们现在不是像之前policy_based那样训练一个actor(离线数据需要加重要性权重),现在是训练一个评估器,此时想要get的点是t时刻看到s采取action后,t+1时刻的s是什么,这样的数据是environment决定的,与agent无关。
Actor:行动派→实践出真知。
Critic:理论派→见多识广。

In each iteration:1. Sample a batch 2. Update Q-function
在这里插入图片描述

1.4 Q_learning algorithm

在这里插入图片描述

二、tips for Q_learning

Q_learning在实作的时候效果非常不好,表现在network输出的值总是会远大于实际值,也就是说network高估了action会得到的最大收益。所以就有一系列的改进方法。

2.1 Double DQN

在这里插入图片描述
可以看出,DQN远大于实际值,老师在视频中分析的原因是:network有一定的误差,而network倾向于选择每次被高估的值。Double DQN的做法是:在Target network中有两个Q,分别为:
Q:update参数的网络
Q’:target network
每次让Q来选择action,让Q’来计算奖励的期望值,这样只要两个网络不同时高估某一个选择,就不会太离谱。但是我个人认为这不能解决TD方法造成的bias问题,而且两个网络的输出曲线理论上类似平移关系,因为每经过N step两个网络的参数就会同步一次。所以我认为可以采用如下的方法:直接用原始的DQN来训练,模型收敛后,统计估计值和实际值之间的差异的期望作为bias直接在network后减去这个bias。
Paper
1.Hado V. Hasselt, “Double Q-learning”, NIPS 2010
2.Hado van Hasselt, Arthur Guez, David Silver, “Deep Reinforcement Learning with Double Q-learning”, AAAI 2016

2.2 Dueling DQN

正如我在上面分析的那样,针对DQN的bias问题,Dueling DQN用网络train出一个bias然后和另外一个输出值相加。
在这里插入图片描述
为了防止网络忽略V(s),增加了一些constraint,例如A的输出和为0,这样假如我们的目标值刚好比当前大1,那么就会迫使网络修改V,因为修改A起不到作用。还有一些细节需要揣摩,参考论文:
Ziyu Wang, Tom Schaul, Matteo Hessel, Hado van Hasselt, Marc Lanctot, Nando de Freitas, “Dueling Network Architectures for Deep Reinforcement Learning”, arXiv preprint, 2015

2.3 prioritized Reply

思想就是对于训练过程中,难以拟合的数据给予一个较大的采样概率,有迎难而上的感觉。原始论文的parameters更新过程也有调整。Paper:https://arxiv.org/abs/1511.05952?context=cs

2.4 multi-step

将原始网络的一步之差变为多步之差。
在这里插入图片描述

2.5 Noisy-Net

之前讲exploration的时候有提过epsilon greedy,就是以小概率随机选择action而不是基于利益最大化。Noisy net是类似的考虑,但是也有区别,后者是在参数层面加噪声,而且直到episode结束才切换。

Noisy in act Noisy in parameter
May different actions Same action
随机乱试 系统的测试

当训练收敛以后,基于parameters的net输出结果是固定的,虽然和加噪声之前会有差,可以理解为给模型加了某种倾向(本质上和parameters update了一下等价),但是如果是act noisy的方法,其结果仍是不能预测的。

2.6 Distributional Q-function

我们知道,在agent在state下采取某个action其收益是一个分布值。DQN将且期望作为输出值,Distributional Q-function将每个action实际的收益分布输出(截取若干个,例如每个action对应5个收益值)。

2.7 rainbow

以上方法的综合,paper:https://arxiv.org/abs/1710.02298

三、continuous Action

何为离散?何为连续,这是针对action来讲的,以围棋为例,每次的action都是棋盘上的一目,可以穷举所有的可能。但假如是自动驾驶的话,可以采取的action就是连续的,可以左转5度,5.05度等等无数种可能。

3.1 solution

3.1.1 对action采样

3.1.2 gradient ascent to optimization

3.1.3 design network to simplify optimization

Model先不考虑a输出三个值:标量、向量、矩阵,然后计算Q(s,a),显然,如果∑是一个正定矩阵,当a为us的售后Q会最大。什么意思呢?我想是这样的:固定住V,初始化a之后,更新网络
在这里插入图片描述

3.1.4 使用别的方法

发布了12 篇原创文章 · 获赞 1 · 访问量 262

猜你喜欢

转载自blog.csdn.net/weixin_43522964/article/details/104266890
今日推荐