再励学习面试真题
前言
本人于 17 年 4 月对再励学习产生了兴趣,8 月将其定为自己未
来学习的核心。在 10 月~12 月的求职中,一直将增强学习作为自己
简历的要点。这两个月的面试中,被问到了大量强化学习问题。就像
郭老师《深入浅出强化学习:原理入门》是第一本 reinforcement
learning 中文教材一样,我也想以此文填补再励学习面经的空白。
首先说一下本人是如何与再励学习结缘的:周志华教授《机器学
习》有一章专门讲强化学习,16 年秋天看书时没看明白也没在意。
然而 16 年 12 月李航老师(《统计学习方法》作者)在滴滴学院回答
提问时说,他觉得强化学习这种方法很好。这是其第一次引起我的重
视。17 年 3 月在与一个北大学弟聊天时,他说他在看强化学习。硕
士二年级下学期结束实习后比较闲,想学些新东西,于是从“五一”
开始断断续续看 Silver 的录像。《程序员》杂志时不时也有强化学
习文章。17 年夏天看了《不一样的技术创新:阿里巴巴 2016“双十
一”背后的技术》和《科技之巅 2:<麻省理工科技评论>2017 年 10
大全球突破性技术深度剖析》这两本书,决定就把宝押在强化学习上!
1 绪论
1.1 这是一篇什么文章?
本文按郭老师教材的章节顺序,尽量回忆起再励学习的面试真
题。这些问题主要来自于快手、猎户星空、京东商城、景驰科技、四
维图新、禾多科技、滴滴出行、魔门塔科技、新浪微博等公司的校招
面试,在此对所有这些带给我启发的面试官表示感谢。因为都是口头
提问,面试真题不可能像事先精心设计好的书面试卷一样严谨、逻辑
性强。有些题很容易搜到答案;有些题则是正在研究的开放性设计方
案;有的问题更是还没有比较好的解决办法。本文中,常考知识点都
用红色标记。
对于系统学过强化学习的朋友(特别是看郭老师教材的),本文
可以检验学习效果。对再励学习求职者和面试官,则是非常好的题库。
以后再编纂增强学习书,欢迎引用本文内容。同时,本文收录的开放
性设计题亦可作为 reinforcement learning 研究者的参考方向。
因为本文是想填补再励学习面经的空白,为了保持特色和针对
性,其他机器学习、深度学习、算法设计、数据结构、数学、C++、
操作系统原理、Linux 使用、分布式计算等已经被充分总结过的问题
就不再赘述了。
1.2 强化学习可以解决什么问题
1.2.1 我面试过的公司里:
1)推荐系统
阿里巴巴、京东商城商业提升事业部等大电商和部分新媒体公司
都在把再励学习用在推荐系统、计算广告和搜索引擎中。
2)游戏 AI
因为本人平时不玩游戏,了解很少,有公司尝试做德州扑克。
3)机器人控制
有做机械臂控制的。
跟书上写的不一样——自动驾驶公司几乎都不用再励学习!自动
驾驶公司的研发重点多在车道线识别等计算机视觉感知问题上,决策
方面主流用的还是基于规则的有限状态机。
1.2.2 北京学术界:
境内计算机学科研究再励学习的很少(我只看过 PKU、ISCAS、
ICT CAS、THU 计算机系,可能有遗漏),用上的也多将其作为对话
系统、自动驾驶、序列预测的工具。
CASIA 所将其作为核心课题:模式识别和复杂系统两大国重都有
组在研究星际争霸;自动驾驶在复杂实验室有研究;空天中心搞机器
人避障。
1.3 强化学习如何解决问题
1)举出强化学习与有监督学习的异同点。有监督学习靠样本标
签训练模型,强化学习靠的是什么?
2)强化学习解决的是什么样的问题?
我答:“序列决策问题。”
面试官又问:“多臂老虎机只是一步,没有序列呀?”
第一篇 强化学习基础
2 马尔科夫决策过程
2.1 MDP 理论
1)强化学习的损失函数(loss function)是什么?
2)POMDP 是什么?马尔科夫决策过程是什么?里面的“马尔科
夫”体现了什么性质?马尔科夫过程是什么?(因为是口头交互式提
问,确实是先难后易。)
3)写出贝尔曼方程。
4)最优值函数和最优策略为什么等价?
5)如果不满足马尔科夫性怎么办?当前时刻的状态和它之前很
多很多个状态都有关。
recurrent state。
3 基于模型的动态规划方法
求解马尔科夫决策过程都有哪些方法?有模型用什么方法?动
态规划是怎么回事?
第二篇 基于值函数的强化学习方法
4 基于蒙特卡洛的强化学习方法
简述蒙特卡罗估计值函数的算法。
5 基于时间差分的强化学习方法
1)简述时间差分算法。
2)蒙特卡洛和时间差分的对比:MC 和 TD 分别是无偏估计吗,
为什么?MC、TD 谁的方差大,为什么?
3)简述 Q-Learning,写出其 Q(s,a)更新公式。它是 on-policy
还是 off-policy,为什么?
4)写出用第 n 步的值函数更新当前值函数的公式(1-step,
2-step,n-step 的意思)。当 n 的取值变大时,期望和方差分别变
大、变小?
5)TD(λ)方法:当λ=0 时实际上与哪种方法等价,λ=1 呢?
6 基于值函数逼近的强化学习方法
6.1 基于值函数逼近的理论讲解
写出蒙特卡洛、TD 和 TD(λ)这三种方法更新值函数的公式。
6.2 DQN 及其变种
6.2.1 DQN 方法
这是本人这么多次面试中被问到次数最多的再励学习问题。
1)详述 DQN。DQN 的两个关键 trick 分别是什么?
2)不打破数据相关性,神经网络的训练效果为什么就不好?
3)画出 DQN 玩 Flappy Bird 的流程图。在这个游戏中,状态是
什么,状态是怎么转移的?奖赏函数如何设计,有没有奖赏延迟问
题?
6.2.2 Double DQN
1)DQN 都有哪些变种?引入状态奖励的是哪种?
2)简述 double DQN。
第三篇 基于直接策略搜索的强化学习方法
7 基于策略梯度的强化学习方法
7.1 理论讲解
策略梯度方法中基线 b 如何确定?
8 基于置信域策略优化的强化学习方法
8.1 理论基础
为什么 TRPO 能保证新策略的回报函数单调不减?
9 基于确定性策略搜索的强化学习方法
9.1 理论基础
1)画出 DDPG 框架。
2)actor-critic 框架中的 critic 起了什么作用?
3)DDPG 是 on-policy 还是 off-policy,为什么?
4)简述 A3C 算法。
5)A3C 是 on-policy 还是 off-policy,为什么?
第五篇 强化学习的商业落地
15 推荐系统
1)强化学习如何用在推荐系统中?
我主要复述《不一样的技术创新:阿里巴巴 2016“双十一”背
后的技术》第七章。阿里后来新写了《强化学习在电商环境下的若干
应用与研究》。新发现京东写的《Deep Reinforcement Learning for
List-wise Recommendations》。
2)推荐场景中奖赏函数如何设计?
3)场景中状态是什么,当前状态怎么转移到下一状态?
4)研究课题:绝大部分强化学习用的都是智能体与环境交互得
来的数据。但是智能体在一开始表现很差,线上训练试错成本过高,
如何用强化学习前的静态历史数据训练模型呢?
16 自动驾驶和机器人决策
1)自动驾驶和机器人的场景如何建模成强化学习问题?MDP 各
元素对应真实场景中的哪些变量?
2)用什么算法实现决策?
我复述的是 DDPG 玩 TORCS 的例子。
3)强化学习需要大量数据,如何生成或采集到这些数据?(本
题亦可作研究课题。)
17 深度学习
研究课题:传统的注意力机制是 soft attention,每时刻的特
征通过 attention 值进行加权,实现端到端的训练。但由于需要把每
个时刻的 attention 都算一遍,soft attention 速度慢。于是“取
attention 值最大的时刻对应的特征”的新方法 hard attention 应
运而生。除了计算量大大降低,hard attention 还有解码方便的优
点。可因为是 hard,没法像 soft 一样将误差梯度反向传导回去。如
何用再励学习的方法训练 hard attention 模型参数?(本人只知道
注意力机制,此题复述得非常费劲,可能有错误。)
18 序列预测
已知且仅知全国所有城市距今千年来的每天(包括今天)最高最
低气温,阴晴雨雪和风力风向,要预测明天北京的最高气温,请详述
如何构造样本点和几大类特征会使得预测会很准确。
(此题非再励学习方法更实用。但北大有教授想用强化学习做序
列预测,于是就写在这里了。)
后记
本文虽然提出了问题,但很多问题本人在面试时回答得并不好。
非常欢迎大家一起讨论这些问题的答案!
虽然 DeepMind 时不时就能刷屏,但再励学习直到 18 年初仍然没
有推广开。我 17 年主攻增强学习属于打出很大提前量的“左侧买入”,