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