强化学习面试八股




<!--蒙特卡洛、TD、动态规划的关系?-->
动态规划属于有模型强化学习的范畴,蒙特卡洛和 TD 都属于无模型的范畴。
蒙特卡洛和 TD 都需要通过采样来获取数据进行学习
蒙特卡洛需要采样整个样本序列,无偏差,但是方差大
TD 只需要采样一个动作,偏差大,但是方差小
<!--DQN 的几个变种以及各自解决了那些问题?-->
double dqn:加一个 target q net,用 eval q 选择 q 最大的 a,用 target q 计算 q 值,用来
缓解 q 值的过估计问题;
dueling dqn:使用 V+A 来代替 Q,缓解 q 的过估计问题
n-step q:用 n-step TD 缓解 q 值估计的偏差;
PER dqn:用带优先级的经验回放,增加样本的学习利用率,增加探索性;
c51:用分布 z 代替标量来估计 q 值,实际中用直方图的形式来表示 z;
nosiy dqn:用网络参数空间的噪声代替 epsilon-greedy,增加探索性,探索的更平滑。
rainbow:集合上面全部的 trick。还有分位数回归 dqn、IQN。。。
<!--深度强化学习中的 DQN 和 A3C 区别与联系?-->
DQN 和 A3C 都属于基于深度学习的强化学习方法,整体思路架构类似
DQN 属于 value-based 的方法,A3C 属于 AC 框架的方法(结合 policy 和 value)
A3C 属于分布式强化学习的范畴(Actor-Learner)
<!--策略梯度的推导过程?-->
针对 E[G],V,E[Q]
可以按照 s,a 进行展开
也可以按照时间 t 进行展开 e
<!--策略梯度和 actor-critic 的关系与对比?-->
Actor-Critic 方法结合了基于值的方法(Critic)和基于策略梯度的方法(Actor),由于
借用了基于值的方法,使得其可以进行单步更新。
<!--A3C 和 DDPG 区别和共同点?-->
都属于 AC 系列的方法
A3C 属于分布式强化学习的范畴(Actor-Learner)
DDPG 是确定性策略的方法,需要通过添加噪声来增加探索
<!--value-based 和 policy-based 关系?-->
value-based 的方法是先通过计算出值函数,然后再求策略 policy-based 的方法则是直
接计算策略,更加直接,收敛速度更快,但是也更容易达到局部最优
value-based 的方法方差小偏差大,policy-based 方法无偏差方差大
value-based 的方法一般用来解决离散动作问题,policy-based 方法一般用于解决连续动作问
题
<!--off-policy 和 on-policy 的好与坏?-->
off 可以使用不同的数据收集和策略评估更新策略,更加灵活,更加通用,但是采样效率低,
而且会产生分布偏移问题,需要采用重要性采样来进行调整
on 使用相同数据收集和评估策略,采样效率较高,但是不够灵活
<!--表格式到函数近似的理解?-->
表格表达能力有限,只能处理有限范围的状态和动作空间,但是查询较快
<!--Actor-Critic 的优点?-->
同时借鉴了 value-based 和 policy-based 方法的优点,可以处理更大的状态动作空间,
收敛更快,无偏差,而且可以单步更新。
<!--Actor 和 Critic 两者的区别?-->
Actor:policy-based
Critic:value-based
<!--advantage(优势函数)推导过程,如何计算?-->
知乎天津包子馅儿-TRPO 推导
<!--DPG、DDPG、D3PG、D4PG 之间的区别?-->
DPG 确定性策略方法,不需要重要性采样
DDPG 借鉴了 DQN 的思想,引入了 replay-buffer
D3PG TD3
D4PG DDPG 的分布式模式
<!--强化学习是什么?和有监督学习的异同?SL 靠的是样本标签训练模型,RL 依靠的是什
么?-->
依靠奖励驱动,通过与环境交互来获取样本并对智能体进行训练并用来解决序列决策
问题的算法。
它不需要训练集测试集,而是通过与环境交互来获取数据,因此这表明其获取的数据
时不够稳定的。
<!--强化学习用来解决什么问题?-->
序列决策问题
<!--强化学习的损失函数是什么?-->
例:
MSE(Qvalue)
策略 期望
<!--为什么最优值函数就等同最优策略-->
基于值的方法中是为了去最优的值函数,最优值函数代表从当前状态(或状态动作)
出发,能够获取的奖励和,因此奖励和越大的预示着当前状态(或状态,动作)越应该被
选择
<!--强化学习和动态规划的关系;-->
动态规划可以用于解决有模型强化学习问题
<!--简述 TD 算法-->
r+γQ 来预计 Q 值
<!--蒙特卡洛和时间差分的对比:MC 和 TD 分别是无偏估计吗,为什么?MC、TD 谁的方差
大,为什么?-->
MC 是无偏估计,因为其采样了整个决策序列
MC 方差大
<!--简述 Q-Learning,写出其 Q(s,a)更新公式-->
r+γQ-Q
<!--简述值函数逼近的想法?-->
解决表格式方法适用场景有限的问题
<!--RL 的马尔科夫性质? t+1t+1t+1 时的状态仅与 ttt 时的状态有关,而与更早之前的历史状
态无关。-->
马尔科夫性
马尔科夫过程
马尔科夫决策过程
<!--RL 与监督学习和无监督学习的区别-->
依靠奖励驱动,通过与环境交互来获取样本并对智能体进行训练并用来解决序列决策
问题的算法。
它不需要训练集测试集,而是通过与环境交互来获取数据,因此这表明其获取的数据
时不够稳定的。
<!--RL 不同于其它学习算法的原因?-->
依靠奖励驱动,通过与环境交互来获取样本并对智能体进行训练并用来解决序列决策
问题的算法。
它不需要训练集测试集,而是通过与环境交互来获取数据,因此这表明其获取的数据
时不够稳定的。
<!--Model-based 和 model-free 的区别?-->
model-free 不需要构造模型,可以学习,但是无模型的方法样本效率比较低,而且在
有些数据难以获取或者获取困难的场景中难以应用,无模型方法通用但是泛化能力弱。。
model-based 需要首先构建模型,然后再进行学习(采用有模型和无模型方法都可
以),有模型可以通过构建虚拟模型来代替现实模型来发挥其优势(黑盒模型),也可以
采用白盒模型来进行学习。有模型方法不通用但是泛化能力强
主要解决了样本不好获取和样本效率低的问题。但是 MFRL 的效果往往优于 MBRL
<!--确定性策略和 随机性策略的区别与联系?-->
确定性策略每次输出的动作都是固定的,为了探索需要加入相应的噪声平滑(DDPG,
TD3)。
随机策略输出的动作的概率,不需要额外探索。
但是两种方法在代码实现时,对于连续动作空间最终都是输出一个动作。
<!--on-policy 和 off-policy 的区别与联系?-->
off 可以使用不同的数据收集和策略评估更新策略,更加灵活,更加通用,但是采样效
率低,而且会产生分布偏移问题,需要采用重要性采样来进行调整
on 使用相同数据收集和评估策略,采样效率较高,但是不够灵活
————————————————
<!--重要性采样的推导过程、作用?-->
解决分布偏移问题
目标策略是用于优化的策略,是评估 QV 值时使用的策略
基于重要性采样的 MC:
重要性采样系数:
基于重要性采样的 TD:
=============================================================
下面我们分析下 TD 的重要性采样,理解行为策略如何向目标策略靠拢:
注意,当不为 0 而为 0 时,重要性采样不可用。
当,即两策略在状态时选择的概率一致,不需要矫正
当,即行为策略 b 的在状态时选择动作的概率要比目标策略高,那么小于 1 的重要性采样
系数就会降低基于行为策略 b 得到的时序差分目标,从而引导代理后续降低行为策略 b 在
状态时选择动作的概率。
当,即目标策略状态时选择动作的概率要比行为策略 b 高,那么大于 1 的重要性采样系数
就会进一步增强基于行为策略 b 得到的时序差分目标,从而引导代理后续提高行为策略 b
在状态时选择动作的概率。
<!--Q-learning 是 off-policy 的方法,为什么不使用重要性采样?-->
从 Q-learning 的算法中可以看出,其行为策略为-greedy 策略,目标策略是 greedy 策略,因
此属于 off-policy 方法。那么为什么没有用重要性采样呢?
我们可以看出 Q-learning 在估计时序差分目标时,并没有使用行为策略来进行动作选择,
是根据奖励函数得到,与动作选择无关,虽涉及动作选择,但使用的是目标策略而不是行
为策略,因此这不需要用重要性采样来矫正估计值。
我们对比基于 TD 的重要性采样做法:
代理此时处于状态,在估计时序差分目标时,就需要使用行为策略来选择状态下的动作,
从而根据奖励函数和状态转移函数得到和。因为使用行为策略而不是目标策略进行动作选
择,所以需要重要性采样来矫正估计值。
由于 Q-learning 采用的是 off-policy,如下图所示
但是为什么不需要重要性采样。其实从上图算法中可以看到,动作状态值函数是采用 1-
step 更新的,每一步更新的动作状态值函数的 R 都是执行本次 A 得到的,而我们更新的动
作状态值函数就是本次执行的动作 A 的 。就算 A 不是通过 策略选择的(是通过 采样得
到),对 估计的更新也不会受到任何影响。因为对于下一个动作的选取是贪心的 。但是
如果是 n-step 更新,则会出现问题
如上式所示,还是利用 off-policy 采样, 的采样没有问题,但是 就会出问题,因为这一步
的动作 是使用 得到的,不是我们要优化的 策略。因此这种更新方法才需要添加重要性采
样系数。如下面这个算法所示
这是因为,在 1-step 中,我们更新 状态动作对时,并不需要知道他是根据什么分布得来的 。
但是在 n-step 中,如果想利用 以后的信息时,我们就需要使用重要性采样来处理后序的动
作。
注意 Q 和 V 的区别,Q 不用重要性采样,V 需要重要性采样
关键在于是否用行为策略选择的动作的结果来进行值函数或者策略的更新
————————————————
<!--有哪些方法可以使得 RL 训练稳定?-->
选用方差较小的方法
采用合理的奖励函数
<!--写出贝尔曼期望方程和贝尔曼最优方程?-->
sutton 书
<!--贝尔曼期望方程和贝尔曼最优方程什么时候用?-->
贝尔曼期望方程,值函数学习
大部分强化学习方法都有使用(只不过选择的动作是根据策略选择的)
贝尔曼最优方程,获取最优值函数
值迭代
<!--策略梯度算法的目标函数和策略梯度计算?-->
以 s,a 展开
以 t 展开
<!--DQN 的原理?-->
DQN 对 Q-learning 的修改主要体现在以下三个方面:
DQN 利用深度卷积神经网络逼近值函数(表达能力增强,可以处理状态空间动作空间较大
的问题)
DQN 利用了经验回放对强化学习的学习过程进行训练(打破数据关联性,保证输入神经网
络的数据独立同分布)
DQN 独立设置了目标网络来单独处理时间差分算法中的 TD 偏差。(打破关联性,提高收
敛能力)
<!--DQN 和 Sarsa 的区别?-->
DQN 对 Q-learning 的修改主要体现在以下三个方面:
DQN 利用深度卷积神经网络逼近值函数(表达能力增强,可以处理状态空间动作空间较大
的问题)
DQN 利用了经验回放对强化学习的学习过程进行训练(打破数据关联性,保证输入神经网
络的数据独立同分布)
DQN 独立设置了目标网络来单独处理时间差分算法中的 TD 偏差。(打破关联性,提高收
敛能力)
而 Sarsa 是 on-policy 方法,Ql 和 DQN 都是 off-policy 方法
<!--为什么使用优势函数?-->
保证总的回报期望不断增加而不减少。(TRPO,PPO)
<!--常见的平衡探索与利用的方法?-->
Epsilon-greedy
UCB
entropy
好奇心机制
<!--TD3 如何解决过估计?-->
采用双 Q 策略
<!--TD3 和 DDPG 的区别?-->
采用双 Q 策略
策略参数延迟更新
目标动作选择平滑
<!--多臂老虎机和强化学习算法的差别?-->
MAB 问题只有一个状态,是在同一个状态不断执行不同的 bandit 选择,更倾向于寻找合适
的探索利用机制
在经典 bandit 算法当中,我们要做的无非就是通过一类 pull arm 的策略,尽快找到比较好
的“arm”(reward 较高的 arm),然后尽可能多的去拉这些比较好的 arm 就是了。贪心算
法无非就是永远以当前对每个 arm 的 reward 的估计直接作为依据,而 UCB 算法则是考虑了
置信度的问题,因此考虑的是每个 arm reward 的置信区间的上界。
<!--多臂老虎机算法的分类?-->
bandit 算法中主要有两类流行的算法,一类是贪心算法(如 uniform exploration, -greedy
算法),还有一类是基于 upper confidence bound 的 UCB 算法。
<!--有那几种 Bandit 算法?-->
Epsilon-greedy
UCB
<!--简述 UCB 算法 (Upper Confidence Bound)?-->
UCB 公式
————————————————
<!--简述重要性采样,Thompson sampling 采样?-->
解决分布偏移问题
目标策略是用于优化的策略,是评估 QV 值时使用的策略
基于重要性采样的 MC:
重要性采样系数:
基于重要性采样的 TD:
=============================================================
下面我们分析下 TD 的重要性采样,理解行为策略如何向目标策略靠拢:
注意,当不为 0 而为 0 时,重要性采样不可用。
当,即两策略在状态时选择的概率一致,不需要矫正
当,即行为策略 b 的在状态时选择动作的概率要比目标策略高,那么小于 1 的重要性采样
系数就会降低基于行为策略 b 得到的时序差分目标,从而引导代理后续降低行为策略 b 在
状态时选择动作的概率。
当,即目标策略状态时选择动作的概率要比行为策略 b 高,那么大于 1 的重要性采样系数
就会进一步增强基于行为策略 b 得到的时序差分目标,从而引导代理后续提高行为策略 b
在状态时选择动作的概率。
————————————————
<!--什么是强化学习?-->
依靠奖励驱动,通过与环境交互来获取样本并对智能体进行训练并用来解决序列决策问题
的算法。
它不需要训练集测试集,而是通过与环境交互来获取数据,因此这表明其获取的数据时不
够稳定的。
适宜解决序列决策问题,因为传统的监督学习相当于通过单步学习来进行训练,效果肯定
不如整个序列的值来进行训练
<!--强化学习和监督学习、无监督学习的区别是什么?-->
依靠奖励驱动,通过与环境交互来获取样本并对智能体进行训练并用来解决序列决策问题
的算法。
它不需要训练集测试集,而是通过与环境交互来获取数据,因此这表明其获取的数据时不
够稳定的。
数据之间是相关的
<!--强化学习适合解决什么样子的问题?-->
序列决策问题
<!--强化学习的损失函数(loss function)是什么?和深度学习的损失函数有何关系?-->
MSE
<!--POMDP 是什么?马尔科夫过程是什么?马尔科夫决策过程是什么?里面的“马尔科
夫”体现了什么性质?-->
部分不可观测马尔科夫决策过程,含有隐状态和观测状态。
马尔科夫性
<!--贝尔曼方程的具体数学表达式是什么?-->
sutton 书
<!--最优值函数和最优策略为什么等价?-->
基于值的方法中是为了去最优的值函数,最优值函数代表从当前状态(或状态动作)出发
能够获取的奖励和,因此奖励和越大的预示着当前状态(或状态,动作)越应该被选择
<!--值迭代和策略迭代的区别?-->
策略迭代是通过策略评估和策略改善两个分步骤来进行的,使用的是贝尔曼方程
值迭代只有一个步骤,使用的贝尔曼最优方程
<!--如果不满足马尔科夫性怎么办?当前时刻的状态和它之前很多很多个状态都有关之间关
系?-->
如果不满足马尔科夫性,强行只用当前的状态来决策,势必导致决策的片面性,得到不好
的策略。 为了解决这个问题,可以利用 RNN 对历史信息建模,获得包含历史信息的状态表
征。表征过程可以 使用注意力机制等手段。最后在表征状态空间求解 MDP 问题。有点类
似 POMDP 的感觉
<!--求解马尔科夫决策过程都有哪些方法?有模型用什么方法?动态规划是怎么回事?-->
有模型 无模型
有模型:策略迭代,值迭代
无模型:MC,TD
<!--简述动态规划(DP)算法?-->
有模型方法。通过建立好的 MDP 模型(状态转移,奖励)和状态转移方程(贝尔曼方程)
对于值函数表进行更新
<!--简述蒙特卡罗估计值函数(MC)算法。-->
无模型方法。采样整个序列,然后再进行更新(首次遇见,次次遇见)
<!--简述时间差分(TD)算法。-->
无模型方法。也是采样整个序列,但是在决策序列的每一步都可以进行更新
<!--简述动态规划、蒙特卡洛和时间差分的对比(共同点和不同点)-->
动态规划属于有模型强化学习的范畴,蒙特卡洛和 TD 都属于无模型的范畴。
蒙特卡洛和 TD 都需要通过采样来获取数据进行学习
蒙特卡洛需要采样整个样本序列,无偏差,但是方差大
TD 只需要采样一个动作,偏差大,但是方差小
<!--MC 和 TD 分别是无偏估计吗?-->
MC 是,TD 不是
<!--MC、TD 谁的方差大,为什么?-->
MC 方差大,采样多
<!--写出用第 n 步的值函数更新当前值函数的公式(1-step,2-step,n-step 的意思)。当 n
的取值变大时,期望和方差分别变大、变小?-->
采样几步之后在更新,n 变大,偏差变小方差变大
<!--TD(λ)方法:当 λ=0 时实际上与哪种方法等价,λ=1 呢?-->
λ=0 单步时序差分
λ=1 蒙特卡洛方法
<!--写出蒙特卡洛、TD 和 TD(λ)这三种方法更新值函数的公式?-->
sutton 书
<!--value-based 和 policy-based 的区别是什么?-->
value-based 的方法是先通过计算出值函数,然后再求策略 policy-based 的方法则是直接计
算策略,更加直接,收敛速度更快,但是也更容易达到局部最优
value-based 的方法方差小偏差大,policy-based 方法无偏差方差大
value-based 的方法一般用来解决离散动作问题,policy-based 方法一般用于解决连续动作问
题
<!--DQN 的两个关键 trick 分别是什么?-->
replay buffer
目标网络
<!--阐述目标网络和 experience replay 的作用?-->
减少关联性,保证神经网络数据独立同分布,保留好较好的数据
<!--手工推导策略梯度过程?-->
前面有,可以根据 s,a 推,也可根据 t 推
最后的得出基于序列数据进行更新的 REINFORCE 方法
<!--描述随机策略和确定性策略的特点?-->
前面有
<!--不打破数据相关性,神经网络的训练效果为什么就不好?-->
神经网络有数据独立同分布假设
<!--画出 DQN 玩 Flappy Bird 的流程图。在这个游戏中,状态是什么,状态是怎么转移的?
奖赏函数如何设计,有没有奖赏延迟问题?-->
有奖励延迟
奖励如果设置为是否赢得比赛,则是延迟奖励
<!--DQN 都有哪些变种?引入状态奖励的是哪种?-->
double dqn:加一个 target q net,用 eval q 选择 q 最大的 a,用 target q 计算 q 值,用来缓解
q 值的过估计问题;
dueling dqn:引入状态奖励
n-step q:用 n-step TD 缓解 q 值估计的偏差;
PER dqn:用带优先级的经验回放,增加样本的学习利用率,增加探索性;
c51:用分布 z 代替标量来估计 q 值,实际中用直方图的形式来表示 z;
nosiy dqn:用网络参数空间的噪声代替 epsilon-greedy,增加探索性,探索的更平滑。
rainbow:集合上面全部的 trick。还有分位数回归 dqn、IQN。。。
<!--简述 double DQN 原理?-->
DQN 有一个显著的问题,就是 DQN 估计的 Q 值往往会偏大。这是由于我们 Q 值是以下一
个 s'的 Q 值的最大值来估算的,但下一个 state 的 Q 值也是一个估算值,也依赖它的下一个
state 的 Q 值...,这就导致了 Q 值往往会有偏大的的情况出现。
们在同一个 s'进行试探性出发,计算某个动作的 Q 值。然后和 DQN 的记过进行比较就可以
得出上述结论。
这种欺上瞒下的做法,实在令人恼火。于是有人想到一个互相监察的想法。
这个思路也很直观。如果只有一个 Q 网络,它不是经常吹牛嘛。那我就用两个 Q 网络,因
为两个 Q 网络的参数有差别,所以对于同一个动作的评估也会有少许不同。我们选取评估
出来较小的值来计算目标。这样就能避免 Q 网络吹牛的情况发生了。
另外一种做法也需要用到两个 Q 网络。Q1 网络推荐能够获得最大 Q 值的动作;Q2 网络计
算这个动作在 Q2 网络中的 Q 值。
恰好,如果我们用上 Fixed Q-targets,我们不就是有两个 Q 网络了吗?
所以你可以看到,这个优化在 DQN 上很容易实现。这就是 doubleDQN 和 DQN 的唯一的变
化。
<!--策略梯度方法中基线 baseline 如何确定?-->
不能包含 a(不引入偏差),可以减少方差
<!--什么是 DDPG,并画出 DDPG 框架结构图?-->
利用 DQN 的框架,引入了 replay buffer 和目标网络
是一种确定性策略的方法,回报期望的导数中不包含重要性采样项
<!--Actor-Critic 两者的区别是什么?-->
Actor-Critic 方法结合了基于值的方法(Critic)和基于策略梯度的方法(Actor),由于借用
了基于值的方法,使得其可以进行单步更新。
<!--actor-critic 框架中的 critic 起了什么作用?-->
提供对于 actor 中策略更新时对于值函数的估计,可以单步更新。
这也是其与普通的 policy-based 方法的区别,AC 系列方法要求值函数 Critic 部分必须有估计
误差
<!--DDPG 是 on-policy 还是 off-policy,为什么?-->
off-policy
类似于 DQN,采集数据放到 replay buffer 中然后进行学习,采集数据采用的策略和学习的
策略是不同的
<!--是否了解过 D4PG 算法?简述其过程-->
DDPG 的分布式版本
Actor 收集数据序列(n 步奖励更新)
Learner 进行训练
<!--简述 A3C 算法?A3C 是 on-policy 还是 off-policy,为什么?-->
多个 Actor 进行与环境交互,并计算梯度,随后每一个 Actor 周期性暂停学习,与中央参数
服务器交互更新参数。
on-policy,因为在本地进行的梯度计算
<!--A3C 算法是如何异步更新的?是否能够阐述 GA3C 和 A3C 的区别?-->
每一个 Actor 周期性暂停学习,与中央参数服务器交互更新参数
GA3C 并不在 Actor 本地计算梯度,Actor 只负责产生数据
<!--简述 A3C 的优势函数?-->
Q-A
————————————————
<!--什么是重要性采样?-->
解决分布偏移问题
目标策略是用于优化的策略,是评估 QV 值时使用的策略
基于重要性采样的 MC:
重要性采样系数:
基于重要性采样的 TD:
下面我们分析下 TD 的重要性采样,理解行为策略如何向目标策略靠拢:
当,即两策略在状态时选择的概率一致,不需要矫正
当,即行为策略 b 的在状态时选择动作的概率要比目标策略高,那么小于 1 的重要性采样
系数就会降低基于行为策略 b 得到的时序差分目标,从而引导代理后续降低行为策略 b 在
状态时选择动作的概率。
当,即目标策略状态时选择动作的概率要比行为策略 b 高,那么大于 1 的重要性采样系数
就会进一步增强基于行为策略 b 得到的时序差分目标,从而引导代理后续提高行为策略 b
在状态时选择动作的概率。
注意,当不为 0 而为 0 时,重要性采样不可用。
————————————————
<!--为什么 TRPO 能保证新策略的回报函数单调不减?-->
引入优势函数
<!--TRPO 是如何通过优化方法使每个局部点找到让损失函数非增的最优步长来解决学习率
的问题;-->
引入优势函数,并通过置信域方法进行优化
<!--如何理解利用平均 KL 散度代替最大 KL 散度?-->
最大 KL 散度有无数个,不好进行计算
<!--简述 PPO 算法?与 TRPO 算法有何关-->
升级版,更加简单,有两种
第一种,clip 版
第二种,直接将约束加入优化目标
<!--简述 DPPO 和 PPO 的关系?-->
PPO 是 DPPO 的基本元素,DPPO 是分布式强化学习算法。
<!--强化学习如何用在推荐系统中?-->
方式 1:
Agent:推荐引擎。
Environment:用户。
Reward:如果一条新闻被点击,计+1,否则为 0。一次推荐中 10 条新闻被点击的新闻个数
作为 Reward。
State:包含 3 个部分,分别是用户标签、候选新闻的新闻标签和用户前 4 屏的点击历史
(如果没有就置 0)。
Action:推出的 10 篇新闻。
方式 2:
状态 S:定义为用户的使用历史,比如用户过去在时间 t 前点击、下载、安装、购买过的 N
个 item。而且这个序列要按照时间顺序。
动作 A:被模型基于用户状态 s 计算出来的一个推荐列表(多个 item)
奖励 R:推荐智能体给出了 at 之后,用户会给出他的反馈,他可以进行曝光、点击、下单,
智能体立即根据这些反馈计算出来奖励
<!--推荐场景中奖赏函数如何设计?-->
用户的反馈
<!--场景中状态是什么,当前状态怎么转移到下一状态?-->
推荐系统推荐所需要的信息(用户信息,商品信息等)
<!--自动驾驶和机器人的场景如何建模成强化学习问题?MDP 各元素对应真实场景中的哪
些变量?-->
<!--强化学习需要大量数据,如何生成或采集到这些数据?-->
与真实环境交互或者采用有模型强化学习,先建立模型,然后与建立的虚拟模型进行交互
<!--是否用某种 DRL 算法玩过 Torcs 游戏?具体怎么解决?-->、
状态:车辆的信息
含有两类动作,1.控制左右 2.控制油门刹车
奖励就是偏离最佳行驶路线的程度
<!--是否了解过奖励函数的设置(reward shaping)?-->
在原本的 reward 函数中加入一项惯性(TD error),γV-V
<!--强化学习中如何处理归一化?-->
对于状态,不能进行 BN,因为 BN 的目的虽然是通过将数据分布保持标准正态分布提高网
络的适应能力来加快网络的训练速度,但是它需要稳定的数据来进行方差和均值计算,但
是强化学习恰好有训练数据不够稳定的特点,所以不适宜使用 BN,但是可以使用普通的归
一化来使得输入让神经网络更舒服。而且对于值函数也不需要进行归一化,但可以进行缩
放.
————————————————
<!--强化学习如何观察收敛曲线?-->
<!--强化学习如何如何确定收敛?-->
序列总奖励保持在一个较高的稳定范围内
<!--影响强化学习算法收敛的因素有哪些,如何调优?-->
状态奖励对应
方法
采样效率
<!--强化学习的损失函数(loss function)是什么?和深度学习的损失函数有何关系?-->
MSE
<!--多智能体强化学习算法有哪些?-->
最普通:IQL
基于通信:RIAL,DIAL,BiCNet
基于:MADDPG->COMA,VDN->QMIX->QTRAN
<!--简述 Model Based Learning?有什么新的进展?比如 World Model?Dream?MuZero?-->
model-based 需要首先构建模型,然后再进行学习(采用有模型和无模型方法都可以),有
模型可以通过构建虚拟模型来代替现实模型来发挥其优势(黑盒模型),也可以采用白盒
模型来进行学习。有模型方法不通用但是泛化能力强
主要解决了样本不好获取和样本效率低的问题。但是 MFRL 的效果往往优于 MBRL
<!--简述 Meta Reinforcement Learning?-->
通 过 学 习 多 个 预 训 练 任 务 , 来 使 得 模 型 在 新 任 务 上 有 很 好 的 效 果 , 类 似 于 Few-shot
learning,迁移学习,多任务学习
————————————————
<!--为什么 Reptile 应用的效果并不好?-->
<!--Meta RL 不好应用的原因有哪些?-->
前面讲到,要做 meta RL 的训练,很重要的一点是希望在训练智能体的时候,就让智能体
见到足够丰富的任务。因此,一个能够高效生成各种丰富任务的环境就显得很重要。往细
了讲,就是希望能够生成不同的 P 和 R。
<!--简述 Meta Gradient Reinforcement Learning?-->
通 过 学 习 多 个 预 训 练 任 务 , 来 使 得 模 型 在 新 任 务 上 有 很 好 的 效 果 , 类 似 于 Few-shot
learning,迁移学习,多任务学习
<!--简述 Imitation Learning?GAIL? Deepminic?-->
分为监督学习和逆强化学习
监督学习中,就是通过专家的标记的数据来训练 agent,提高决策能力
Forward Training,SMILE,Dagger(边训练边扩充数据),GAIL(GAN 框架)
逆向强化学习中,就是学习得到一个良好的 reward 函数
基于最大边际:学徒学习,神经网络逆向学习
基于最大熵
<!--简述 DRL 的一些最新改进?R2D3?LASER?-->
<!--简述 Multi-Agent Reinforcement Learning? 比如 MADDPG 比较早的,思想是什么?和一
般的 DRL 有什么区别?-->
由原来的对一个智能体进行决策变成了对多智能体进行决策,这些多智能体之间可能是竞
争,合作或者竞争和合作并存的关系。
在 MDP 框架之上进行了一定的改进
MADDPG,中心化训练,分布式执行,所有智能体的值函数和策略函数都在中心进行
更新,但是他们仍可以独立地执行。
<!--简述 seed rl? 对于大规模分布式强化学习,还有更好的提高 throughput 的方法吗?-->
IMPALA 存在着一系列的缺点,例如资源利用率低、无法大规模扩展等。
作者 : AI 科技 评 论 链 接: ICLR 2020 | 谷歌 推出分布式强化学习框架 SEED ,性能 “完
爆”IMPALA,可扩展数千台机器 - 知乎 来源:知乎 著作权归作者所有。商业转载请联系作
者获得授权,非商业转载请注明出处。
SEED RL 本质上是在 IMPALA 基础上的一个改进。因此我们先简单来看下 IMPALA 是如何做
分布式强化学习的。
IMPALA 的体系架构分为 Actors 和 Learners。其中 actor 一般运行在 CPU 上,它在环境中采
取步骤,然后在模型上运行推断,进行迭代,然后预测下一个动作。Actors 会更新推理模
型的参数,在收集到足够多的观察数据后,actor 会将观察和动作的结果发送给 learner,
learner 根据这些反馈结果进行优化。
实验的结果,我们在文章前面已经展示。这里总结一下谷歌这项工作的意义:
1、 相比 IMPALA,SEED RL 框架将推理部分转移到 Learners 中。这样调整后,Actors 中就不
再有任何关于神经网络相关的计算了。这样做的好处是,模型的大小不会影响 Actors,于
是便可扩大 Actors 的数量,做到可扩展。
2、在 SEED RL 的架构下,Learner(以 GPU 或 TPU 为主)可以专注于批量推理,而 Actors
(以 CPU 为主)可以更加适应多环境。整体来说,这种结构会降低实验成本。
3、涉及模型的所有内容都留在 Learner 本地,只有观测结果和动作会在 Learners 和 Actors
之间进行传输,这可以将带宽需求降低多达 99%。
4、使用了具有最小延迟和最小开销的 streaming gRPC,并将批处理集成到服务器模块当中。
据了解,目前 SEED RL 框架已经开源,打包后可以非常容易地在 Google Cloud 上运行。开源
地址是:https://github.com/google-resea
<!--简述 AI-GAs? 你对这个理论有什么看法?-->
利用 GA 遗传算法来对参数进行更新,可以提供更好的收敛保证
<!--简述 Out-of-Distributon Generalization? Modularity?-->
<!--DRL 要实现足够的泛化 Generalization 有哪些做法?Randomization?-->
探索利用协调,引入噪声
<!--简述 Neural-Symbolic Learning 的方法?怎么看待?-->
<!--简述 unsupervised reinforcement learning?Diversity is all you need?-->
<!--简述 offline reinforcement learning?-->
online RL 无论是 on-policy 还是 off-policy 都需要通过与环境进行交互来获取数据,而 offline
RL 则是提前准备好数据集,用该数据集来进行学习,这种方法就带了分布偏移问题,所以
可以通过重要性采样或 KL 散度约束原策略和现策略之间的差距来解决。
<!--简述 Multi-Task Reinforcement Learning? Policy Distillation?-->
通过一个 agent 来解决多个任务(例如多个游戏),最简单的方法就是策略蒸馏,也就是
从多个 teacher 智能体(执行不同任务)中获取信息,用这些信息来对 student 智能体进行
训练和学习。
除此之外还有无监督学习(辅助任务)等方法。
<!--简述 sim2real? 有哪些方法?-->
我们建立的模型常常与现实模型有差距。
<!--对于 drl 在机器人上的应用怎么看?-->
连续动作 policy-basedRL
许多较为复杂的情况要使用分层强化学习来解决
————————————————
<!--简述 go-explore?-->
Go-Explore 旨 在 解 决 探 索 困 难 ( hard-exploration ) 的 问 题 , 这 类 问 题 通 常 奖 励 稀 疏
(sparse)并且会有误导性的奖励(deceptive)。这篇文章通过一系列算法设计,使得它
在 Montezuma's Revenge 和 Pitfall 游戏上的表现相比于之前的算法有了质的飞跃。
算法分为两个部分。其中第一部分(Phase 1)的最终目的是通过在环境中探索生成一系列
高奖励的轨迹;第二部分(Phase 2)使用第一部分生成的轨迹做 imitation learning 并获得
最终的策略。
————————————————
第一部分限定在确定性(deterministic)并且可以重启(resettable)的环境中进行,这样的
好处是记录下行动序列就可以确定性地到达之前到达的状态上。第一部分的主要思想是维
护一个存档(archive),保存着从起始状态到达各个已经探索到状态的路径。每一轮都选
择一个已经达到过的状态,然后利用存档中的信息走到这个状态上,接着从这个状态出发
做探索,如果探索到了新的状态或者有用的路径,就记录下来加入存档中。注意到这个部
分纯粹是做探索并且记录状态和行动序列,这里面并没有使用神经网络。(该部分具体细
节见后)
第二部分使用第一部分生成的轨迹做训练。这不仅仅是因为第一部分其实压根没有学习到
概括性的策略,而且也是因为第一部分实在确定性的环境中探索的,其策略没法适应真实
的随机性环境。文中使用了一种 learning from demostration 的方法 Backward Algorithm。大
致上来说,拿到一条高奖励的轨迹之后,先把智能体放在离轨迹末端较近的位置,让智能
体能够学习到如何从这个离目标很近状态走到目标,然后再逐步把智能体放在轨迹上离目
标更远一些的地方。通过这种方式智能体就能逐步学习到如何从初始位置走到目标位置。
其学习的算法还是使用的通用的强化学习算法,比如 PPO 等。这个过程也可以看做是一个
课程学习(curriculum learning),使用第一部分生成的反向轨迹来作为由易到难设定的课
程。
————————————————
<!--对于 hard exploration 的问题,要怎么处理?-->
建立模型,使用有模型强化学习
奖励稀疏(sparse)并且会有误导性的奖励(deceptive)
<!--简述 Transformer?能否具体介绍一下实现方法?-->
QKV
还有多头注意力机制
<!--简述 Pointer Network?和一般的 Attention 有什么不同?-->
用来解决组合优化问题,解决了传统 seq2seq 方法不够灵活的特点,还可以结合 RL 来提供
训练数据。
<!--什么是 Importance Sampling? 为什么 PPO 和 IMPALA 要使用?两者在使用
方式上有何不同?能否结合?-->
解决分布偏移问题
目标策略是用于优化的策略,是评估 QV 值时使用的策略
基于重要性采样的 MC:
重要性采样系数:
基于重要性采样的 TD:
下面我们分析下 TD 的重要性采样,理解行为策略如何向目标策略靠拢:
当,即两策略在状态时选择的概率一致,不需要矫正
当,即行为策略 b 的在状态时选择动作的概率要比目标策略高,那么小于 1 的重要性采样
系数就会降低基于行为策略 b 得到的时序差分目标,从而引导代理后续降低行为策略 b 在
状态时选择动作的概率。
当,即目标策略状态时选择动作的概率要比行为策略 b 高,那么大于 1 的重要性采样系数
就会进一步增强基于行为策略 b 得到的时序差分目标,从而引导代理后续提高行为策略 b
在状态时选择动作的概率。
注意,当不为 0 而为 0 时,重要性采样不可用。
PPO 是因为使用了优势函数。
IMPALA 是因为它是分布式强化学习框架,产生数据和训练是分开进行的,无法保证 on-
policy‘
结合结果就是 DPPO
————————————————
<!--PPO 在实现上是怎么采样的?-->
用策略网络进行采样,每次连续采样一整个序列在进行训练学习。
<!--PPO 里使用的 GAE 是怎么实现的?能否写出计算过程?-->
<!--是否理解 Entropy,KL divergence 和 Mutual Information 的含义?-->
Entropy 数据的离散程度(惊奇度)
KL 散度衡量两个分布之间的距离
互信息
<!--AlphaStar 的 scatter connection?怎么实现的?-->
<!--对于多个 entity 的 observation,你会怎么预处理?神经网络要怎么构建?-->
拥有各自的一段网络,随后进行汇总
<!--AlphaStar 的 League,能否解释一下?如何让 agent 足够 diverse?-->
<!--Inverse RL 能否解决奖励问题,如何解决的?-->
可以,逆向强化学习就是为了学习到一个较好的奖励函数,它是通过采用最大边际的方法
尽量增加在学习到的奖励下,专家策略和非专家策略之间累计奖励的距离。
<!--分层强化学习的原理是什么 ?-->
通过构造多层奖励函数,将一个复杂的问题分层为简单的问题
<!--简述分层强化学习中基于目标的 (goal-reach)和基于目标的 (goal-reach)的区别与联
系?-->
主要解决奖励系数的问题
通过一个元控制器负责目标层级的选择,和一个普通控制器负责细粒度层级的选择
<!--请简述 IQL(independent Q-learning 算法过程?-->
每个 agent 都拥有自己独立的算法,而且将别的智能体当作环境的一部分
————————————————
<!--是否了解 α−Rank 算法?-->
支撑 α-Rank 的进化观点是,游戏中的智能体之间通过相互作用,构成了一个不断变化的种
群的动态系统,其中较为强大的代理会复制并取代较弱的对应物。
为了计算智能体之间的排名,α-Rank 在从一个智能体向另一个演化的过程中会构建出一个图
表(如下图)。这一群类在游戏过程中花费的平均时间就构成了每个智能体的评级数据。
作者:数据汪 链接:DeepMind 发布多智能体协作最新评估方法 α-Rank,登上 Nature - 知乎
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
<!--请简述 QMIX 算法?-->、
每个智能体都可以根据 Qi(si,ai)来在本地单独进行决策,而训练的时候则是通过一个
Mixing 网络将所有智能体的 Q 进行混合,对混合后的结果进行训练。
<!--简述模仿学习与强化学习的区别、联系?-->
模仿学习和强化学习都是为了学习到一个好的策略,目标相同
模仿学习是通过在提供专家数据的前提下利用专家数据进行学习,而强化学习则是完全采
用自己与环境交互生成的数据来进行学习。
模仿学习的速度和效率更高但是需要专家来标注数据
————————————————
<!--简述 MADDPG 算法的过程和伪代码?-->
<!--多智能体之间如何通信、如何竞争?-->
RIAL,DIAL
通过设置奖励函数来竞争
<!--你熟悉的多智能体环境有哪些?-->
贪吃蛇,捉迷藏
<!--你做过的强化学习项目有哪些,遇到的难点有哪些?-->
算法效果不稳定
奖励函数失效
训练时间
<!--请简述造成强化学习 inefficient 的原因?-->
在环境中随机采样,奖励函数稀疏,延迟回报
<!--sarsa 的公式以及和 Q-leaning 的区别?-->
on-policy
<!--是否了解 RLlib?Coach?-->
分层的分布式强化学习库,非常完善但是代码很复杂
————————————————
<!--Ray 怎么做梯度并行运算的?-->
在训练时我希望能完全的利用他们(与单纯的深度学习不同,训练强化学习智能体,CPU 和 GPU
都很重要)。 下图是一个分布式计算的示例图。
off-policy 的 RL 算法或者蒙特卡洛方法来说,如果能利用所有的核心,那么就可以 24 个线
程同步采集训练数据,供优化算法进行优化,所以可以极大的提高训练的速度。 目前 Ray
仅支持 Linux 和 MacOS,对 python3.5-3.7 支持较好。我们通过一个例子来看 ray 是怎样进行
分布式计算的。
<!--A3C 中多线程如何更新梯度?-->
从 Actor 收集数据之后进行统一更新
<!--GA3C 算法的 queue 如何实现?请简述-->
不同 Agent(Actor)收集到的数据发送给 Trainer
<!--强化学习的动作、状态以及奖励如何定义的,指标有哪些,包括状态和动作的维度是多
少,那些算法效果比较好?、-->
根据实际问题
指标:序列总奖励
TD3
D3QN
<!--DQN 的 trick 有哪些?-->
目标网络
replay-buffer