diff --git a/DRL-Interviews/drl-interview.assets/20171108090350229.jfif b/DRL-Interviews/drl-interview.assets/20171108090350229.jfif new file mode 100644 index 0000000..fd891f8 Binary files /dev/null and b/DRL-Interviews/drl-interview.assets/20171108090350229.jfif differ diff --git a/DRL-Interviews/drl-interview.assets/eea4714c.png b/DRL-Interviews/drl-interview.assets/eea4714c.png new file mode 100644 index 0000000..d27ae2c Binary files /dev/null and b/DRL-Interviews/drl-interview.assets/eea4714c.png differ diff --git a/DRL-Interviews/drl-interview.assets/equation-1584541764589.svg b/DRL-Interviews/drl-interview.assets/equation-1584541764589.svg new file mode 100644 index 0000000..bdeb837 --- /dev/null +++ b/DRL-Interviews/drl-interview.assets/equation-1584541764589.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DRL-Interviews/drl-interview.assets/equation.svg b/DRL-Interviews/drl-interview.assets/equation.svg new file mode 100644 index 0000000..74da3c5 --- /dev/null +++ b/DRL-Interviews/drl-interview.assets/equation.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DRL-Interviews/drl-interview.md b/DRL-Interviews/drl-interview.md index 617b2ad..1ffe471 100644 --- a/DRL-Interviews/drl-interview.md +++ b/DRL-Interviews/drl-interview.md @@ -6,22 +6,15 @@ > 2. 强化学习和监督学习、无监督学习的区别是什么? > 监督学习一般有标签信息,而且是单步决策问题,比如分类问题。监督学习的样本一般是独立 ->同分布的。无监督学习没有任何标签信息,一般对应的是聚类问题。强化学习介于监督和无监督学 ->习之间,每一步决策之后会有一个标量的反馈信号,即回报。通过最大化回报以获得一个最优策略。 ->因此强化学习一般是多步决策,并且样本之间有强的相关性。 +>同分布的。无监督学习没有任何标签信息,一般对应的是聚类问题。强化学习介于监督和无监督学习之间,每一步决策之后会有一个标量的反馈信号,即回报。通过最大化回报以获得一个最优策略。因此强化学习一般是多步决策,并且样本之间有强的相关性。 > > 3. 强化学习适合解决什么样子的问题? -> 强化学习适合于解决模型未知,且当前决策会影响环境状态的(序列)决策问题。Bandit问题可以 ->看成是一种特殊的强化学习问题,序列长度为1,单步决策后就完事了,所以动作不影响状态。当然也有影响 ->的bandit问题,叫做contextual bandit问题。 +> 强化学习适合于解决模型未知,且当前决策会影响环境状态的(序列)决策问题。Bandit问题可以看成是一种特殊的强化学习问题,序列长度为1,单步决策后就完事了,所以动作不影响状态。当然也有影响的bandit问题,叫做contextual bandit问题。 > > 4. 强化学习的损失函数(loss function)是什么?和深度学习的损失函数有何关系? -> 累积回报。依赖于不同的问题设定,累积回报具有不同的形式。比如对于有限长度的MDP问题直接用 ->回报和作为优化目标。对于无限长的问题,为了保证求和是有意义的,需要使用折扣累积回报或者平均 ->回报。深度学习的损失函数一般是多个独立同分布样本预测值和标签值的误差,需要最小化。强化学习 ->的损失函数是轨迹上的累积和,需要最大化。 +> 累积回报。依赖于不同的问题设定,累积回报具有不同的形式。比如对于有限长度的MDP问题直接用回报和作为优化目标。对于无限长的问题,为了保证求和是有意义的,需要使用折扣累积回报或者平均回报。深度学习的损失函数一般是多个独立同分布样本预测值和标签值的误差,需要最小化。强化学习 的损失函数是轨迹上的累积和,需要最大化。 > > 5. POMDP是什么?马尔科夫过程是什么?马尔科夫决策过程是什么?里面的“马尔科夫”体现了什么性质? @@ -113,10 +106,7 @@ > MC的方差大,以为TD使用了自举,实现一种类似于平滑的效果,所以估计的值函数方差小。 > 17. 简述on-policy和off-policy的区别 -> on-policy:行为策略和要优化的策略是一个策略,更新了策略后,就用该策略的最新版本采样数据, ->。off-policy:使用任意的一个行为策略来收集收据, ->利用收集的数据更新目标策略。 -> +> on-policy:行为策略和要优化的策略是一个策略,更新了策略后,就用该策略的最新版本采样数据。off-policy:使用任意的一个行为策略来收集收据,利用收集的数据更新目标策略。 > 18. 简述Q-Learning,写出其Q(s,a)更新公式。它是on-policy还是off-policy,为什么? > Q学习是通过计算最优动作值函数来求策略的一种算法,更新公式为: @@ -210,7 +200,7 @@ > 基线只要不是动作a的函数就可以,常用的选择可以是状态值函数v(s) -32. 画出DDPG框架结构图? +32. 画出DDPG框架结构图?![ddpg total arch](./drl-interview.assets/20171108090350229.jfif) 33. Actor-Critic两者的区别是什么? @@ -225,29 +215,153 @@ 36. 是否了解过D4PG算法?简述其过程 +> **Distributed Distributional DDPG (D4PG)** 分布的分布式DDPG, 主要改进: +> +> 1. **分布式 critic:** 不再只估计Q值的期望值,而是去估计期望Q值的分布, 即将期望Q值作为一个随机变量来进行估计。 +> 2. **N步累计回报:** 当计算TD误差时,D4PG计算的是N步的TD目标值而不仅仅只有一步,这样就可以考虑未来更多步骤的回报。 +> 3. **多个分布式并行演员:**D4PG使用K个独立的演员并行收集训练样本并存储到同一个回访缓冲中。 +> 4. **优先经验回放**(**Prioritized Experience Replay**,[**PER**](https://arxiv.org/abs/1511.05952)):最后一个改进是使用一个非均匀的概率 $\pi$ 从一个大小为 RR 的回放缓冲中进行采样。 +> +> 详见:[Lil'Log](https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html#d4pg) + 37. 简述A3C算法?A3C是on-policy还是off-policy,为什么? -38. A3C算法是如何异步更新的?是否能够阐述GA3C和A3C的区别? -39. 简述A3C的优势函数? -40. 什么是重要性采样? -41. 为什么TRPO能保证新策略的回报函数单调不减? -42. TRPO是如何通过优化方法使每个局部点找到让损失函数非增的最优步长来解决学习率的问题; -43. 如何理解利用平均KL散度代替最大KL散度? -44. 简述PPO算法?与TRPO算法有何关系? -45. 简述DPPO和PPO的关系? -46. 强化学习如何用在推荐系统中? -47. 推荐场景中奖赏函数如何设计? -48. 场景中状态是什么,当前状态怎么转移到下一状态? -49. 自动驾驶和机器人的场景如何建模成强化学习问题?MDP各元素对应真实场景中的哪些变量? -50. 强化学习需要大量数据,如何生成或采集到这些数据? -51. 是否用某种DRL算法玩过Torcs游戏?具体怎么解决? -52. 是否了解过奖励函数的设置(reward shaping)? +> **异步优势演员-评论家方法**: 评论家学习值函数,同时有多个演员并行训练并且不时与全局参数同步。A3C旨在用于并行训练。 +> +> on-policy. + + +37. A3C算法是如何异步更新的?是否能够阐述GA3C和A3C的区别? + +> 下面是算法大纲: +> +> 1. 定义全局参数 $\theta$ 和 $w$ 以及特定线程参数 $θ′$ 和 $w′$。 +> +> 2. 初始化时间步 $t=1$。 +> +> 3. 当 $T<=T_{max}$: +> +> 1. 重置梯度:$dθ=0$ 并且 $dw=0$。 +> +> 2. 将特定于线程的参数与全局参数同步:$θ′=θ$ 以及 $w′=w$。 +> +> 3. 令 $t_{start} =t$ 并且随机采样一个初始状态 $s_t$。 +> +> 4. 当 ($s_t!=$ 终止状态)并$t−t_{start}<=t_{max}$: +> +> 1. 根据当前线程的策略选择当前执行的动作 $a_t∼π_{θ′}(a_t|s_t)$,执行动作后接收回报$r_t$然后转移到下一个状态st+1。 +> 2. 更新 t 以及 T:t=t+1 并且 T=T+1。 +> +> 5. 初始化保存累积回报估计值的变量:r={0Vw′(st) 如果 st 是终止状态 否则r={0 如果 st 是终止状态Vw′(st) 否则 +> +> 6. 对于 i=t−1,…,tstarti=t−1,…,tstart: +> +> 1. r←γr+rir←γr+ri;这里 rr 是 GiGi 的蒙特卡洛估计。 +> +> 2. 累积关于参数 θ′θ′ 的梯度:dθ←dθ+∇θ′logπθ′(ai|si)(r−Vw′(si))dθ←dθ+∇θ′log⁡πθ′(ai|si)(r−Vw′(si)); +> +> 累积关于参数 w′w′ 的梯度:dw←dw+2(r−Vw′(si))∇w′(r−Vw′(si))dw←dw+2(r−Vw′(si))∇w′(r−Vw′(si))。 +> +> 7. 分别使用 dθdθ 以及 dwdw异步更新 θθ 以及 ww。 + + +37. 简述A3C的优势函数? + +> A(s,a)=Q(s,a)-V(s) +> +> 是为了解决value-based方法具有高变异性。它代表着与该状态下采取的平均行动相比所取得的进步 +> +> 如果 A(s,a)>0: 梯度被推向了该方向 +> +> 如果 A(s,a)<0: (我们的action比该state下的平均值还差) 梯度被推向了反方向 +> +> 但是这样就需要两套 value function +> +> 所以可以使用TD error 做估计:$A(s,a)=r+\gamma V(s')-V(s)$ + + +37. 什么是重要性采样? + +> 期望:$E|f|=\int_{x} p(x) f(x) d x=\frac{1}{N} \sum_{i=1}^{N} f\left(x_{i}\right)$ 按照 p(x)的分布来产生随机数进行采样 +> +> 在采样分布未知的情况下,引入新的已知分布q(x),将期望修正为 +> +> $E|f|=\int_{x} q(x)\left(\frac{p(x)}{q(x)} f(x)\right) d x$ +> +> 这样就可以针对q(x)来对 p(x)/q(x)*f(x)进行采样了 +> +> $E|f|=\frac{1}{N} \sum_{i=1}^{N} \frac{p\left(x_{i}^{\prime}\right)}{q\left(x_{i}^{\prime}\right)} f\left(x_{i}^{\prime}\right)$ +> +> 即为重要性采样。 + + +37. 为什么TRPO能保证新策略的回报函数单调不减? + +> 在每次迭代时对策略更新的幅度强制施加KL散度约束来避免更新一步就使得策略发生剧烈变化. +> +> 将新策略所对应的回报函数分解成旧的策略所对应的回报函数+其他项 +> +> $\eta(\tilde{\pi})=\eta(\pi)+E_{s_{0}, a_{0}, \cdots \tilde{\pi}}\left[\sum_{t=0}^{\infty} \gamma^{t} A_{\pi}\left(s_{t}, a_{t}\right)\right]$ +> +> 如果这个其他项大于等于0,那么就可以保证。 + + +37. TRPO是如何通过优化方法使每个局部点找到让损失函数非增的最优步长来解决学习率的问题; + +38. 如何理解利用平均KL散度代替最大KL散度? + +39. 简述PPO算法?与TRPO算法有何关系? + + > 思想与TRPO相同,都是为了避免过大的策略更新, PPO把约束转换到loss函数中 + + ![[公式]](./drl-interview.assets/equation.svg) + + ![[公式]](./drl-interview.assets/equation-1584541764589.svg) + + +37. 简述DPPO和PPO的关系? + +> Deepmind在OpenAI的PPO基础上做的多线程版 + + +37. 强化学习如何用在推荐系统中? +> 可以把用户过去的点击购买的商品作为 State, 把推荐的商品作为 Action + + +37. 推荐场景中奖赏函数如何设计? + +> 点击率和下单率 +> +> ![img](./drl-interview.assets/eea4714c.png) + + +37. 场景中状态是什么,当前状态怎么转移到下一状态? +38. 自动驾驶和机器人的场景如何建模成强化学习问题?MDP各元素对应真实场景中的哪些变量? + +> 这就因项目而异了吧 + + +37. 强化学习需要大量数据,如何生成或采集到这些数据? + +> Simulator是个好东西,mujoco对真实环境模拟 + + +37. 是否用某种DRL算法玩过Torcs游戏?具体怎么解决? + + + + +37. 是否了解过奖励函数的设置(reward shaping)? + +> [强化学习奖励函数塑形简介(The reward shaping of RL)](https://zhuanlan.zhihu.com/p/56425081) ### 贡献致谢列表 @[huiwenzhang](https://github.com/huiwenzhang) +@[skylark0924](https://github.com/skylark0924) + #### 参考及引用链接: