【学习】Q learning、Q-learning for continuous actions、关于深度学习的猜想


一、Q learning

value-based的方法,评论家不会直接决定行动。给定一个演员π,它评价这个演员有多优秀。状态值函数Vπ(s):当使用行动者π时,累积奖励期望在访问状态s后获得(预测)。
在这里插入图片描述
critic是绑定了某个actor预测这个actor的分数。

评估状态值函数Vπ(s)

MC

在这里插入图片描述
要把游戏玩到结束,才能更新网络参数,得出分数。

TD

在这里插入图片描述
MC的随机性大,所以有很大的方差;而TD方法不一定是准确的。
在这里插入图片描述
在这里插入图片描述
状态-动作值函数Qπ(s,a),当使用行动者π时,期望在状态s采取a后获得累积奖励。
action是无法穷举的就要左边的,右边的式子仅用于离散动作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一直循环之后就会得到好的方程。
给出所有action,找到会让Q最大的动作,就是π’。但是这个不适合a是连续的情况(a是离散的适合)
在这里插入图片描述
在这里插入图片描述
实际上Q’是会变的,那我们的目标就会一直在变(让Q接近Q’),所以我们要固定住一个Q’,更新另一个Q。更新了很多次Q,我们就更新一次Q‘。
在这里插入图片描述
如果是没有看过的动作,那可能都会是初始化的估值,而只要看过一个,那就是1的Q,其他都是0,就不会试试其他的动作。
在这里插入图片描述
epsilon greedy:E在刚开始训练的时候值比较大,后面就会变小。E一般是很小的值,有很大概率用来估测Q,而小概率是用随机性。在action 空间里面加noisy。
Boltzmann Exploration:对Q取对数然后做常规化(除Q的对数的和)。在刚开始Q的输出分布可能是很一致的。
在这里插入图片描述

把所有收集的资料都放到replay buffer里面(可能有以前训练的不同的policy计算的数据,满了才会丢掉),存的是s,a,r,s。
在这里插入图片描述
好处:同一个batch有多种多样的资料,这样会避免让网络坏掉。虽然有过去的资料,但是这样是没问题的。这样类似于off-policy的做法,不会那么花时间去收集资料。
在这里插入图片描述
上面的错误:是从buffer里面取batch。

double DQN

在这里插入图片描述
DQN总是高估(穷举所有的a让Q最大的那个a)
在这里插入图片描述
double DQN选择a的那个Q和计算Q不一样。如果Q高估了a,那么它被选中。Q’会给它适当的值。
Q '高估怎么样?Q不会选择该动作。
在这里插入图片描述
用能更新参数的Q去选择a,用固定参数的Q’去计算value。

dueling DQN

唯一的改变:改变网络的结构。
在这里插入图片描述
在这里插入图片描述

更新V之后,就会更新Q,这样就会有效率
在这里插入图片描述

prioritized reply

对于buffer里面的数据,如果有些数据是比较重要的,而有些数据是训练不好的,那就不能一致取样。先前训练中TD误差较大的数据被采样的概率较高。
在这里插入图片描述
不止改变取样数据的分布,也改变训练的过程。

multi-step

MC和TD之间的平衡
在这里插入图片描述
结合两个方法,取样了多个step之后才估测value,估测的部分的影响就会比较轻微。因为加入了N项r,所以variance就会比较大,可以调整N,让它平衡。

noisy net

在参数的空间上加noisy。在Q网络的 参数上面加噪声得到Q~。
把每个参数都加上噪声。在每集开始之前将噪声注入Q函数的参数中(得到action之前),得到的这个就是Q~就是固定住参数的,用来训练的。
在同一个episode里面,Q~的参数是固定的,只有下一个episode才更新参数,重新取样噪声。
在这里插入图片描述
动作噪音noise on action:给定相同的状态,代理agent可能采取不同的动作(epsilon greedy,因为是在action里面加上噪声,随机性大)。没有真正的策略是这样运作的(希望同样的状态得到一样的动作)。
参数噪声noise on parameters:给定相同(相似)的状态,代理采取相同的动作。→依赖于状态的探索exploration,以一致的方式探索。在一个episode里面,网络的参数是一致的,所以同一个状态会输出一样的东西。
在这里插入图片描述

distributional

状态-动作值函数Qπ(s,a):当使用行动者π时,期望在看到观察值s并采取a后获得累积奖励。
不同的分布可以有同样的期望expectation。这时候就会有些loss,有些信息是没有用到的。
在这里插入图片描述
每个动作有5个框,可以选择同样期望,但是风险更小的动作。(这种方法可以输出概率分布,同一个动作的分布总和是1)
在这里插入图片描述
这里可能会有低估reward的情况,会把极端的值丢掉。

rainbow

混合所有的方法
在这里插入图片描述
去掉某一种方法之后:

在这里插入图片描述
避免高估奖励才加了双DQN

二、Q-learning for continuous actions

estimate Q方程比较容易,只要得到Q方程,就能得到好的策略。问题:不容易处理连续的动作。
在之前,动作是离散的,就能穷举所有的a,算出最好的a。
方法1:取样得到N个a,找到最大的a。但是不能取样所有的a,所以可能不准确。
方法2:使用梯度上升的方法解决最优化问题。问题:全局最大问题,运算量也很大,还要循环更新参数。
方法3:特别设计Q网络去让最优化容易。Q方程是输入s和a,输出V。先输入s,得到三东西(向量,矩阵,数值),然后输入a,让a和μ相减,a此时是连续的向量,然后做其他的运算。这里我们需要让Q最大,也就是第一项最小,那就能让最大的a=μ(s).在这里μ是高斯均值,Σ(s)是正定的variance(在Qπ里面不是直接输出这个矩阵,而是跟一个矩阵做transpose相乘,保证是正定的)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、关于深度学习的猜想

几乎所有的局部最小值都具有与全局最优值非常相似的损失,因此找到一个局部最小值就足够了。
当我们遇到一个临界点时,它可能是鞍点或局部最小值。
在这里插入图片描述
有个正和一个负的就是saddle point
在这里插入图片描述
当E比较小的时候,特征值很可能是正的,那就可能遇到局部最小值。saddle point比较容易出现在loss高的地方,局部最小值容易出现在loss低的地方。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当critical point越像局部最小值,training error就越接近0.
在这里插入图片描述
在这里插入图片描述
深度学习与具有7个假设的spin glass模型相同。
在这里插入图片描述
模型越大,loss越接近一个较低的值。
如果网络的规模足够大,我们可以通过梯度下降找到全局最优解,独立于初始化。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Raphael9900/article/details/128588521