https://www.zhihu.com/question/65064314/answer/1868894159
我是半路出家自学的机器学习和强化学习,以下仅分享我能接触到的强化学习/RL的知识(可能学院派的看到的会不一样)
基础部分:
《Reinforcement Learning:An Introduction》--Sutton老爷子的杰作,网上有英文电子版和已出版的中文版;
另附上当时我自己的学习笔记,应该可以帮助到你:
【机器学习笔记】强化学习概述 - 知乎 (zhihu.com)
进阶的课程:
【官方授权】【中英双语】2019 UC 伯克利 CS285 深度强化学习_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
资源、代码:
善用google(scholoar), axiv网站--搜的时候尽量用英文;
所有你能看到有实例代码的论文网站:Browse the State-of-the-Art in Machine Learning | Papers With Code(找到“Playing Game”这一栏就是强化学习的部分)
研究方向选择:
先附上当时我归纳的一个思维导图每一个分支都可以是一个研究方向。
具体的,要我说的话,可以有以下几点:
1.理论部分的研究: 我们知道,rl学习方法本身是基于动态规划的2大分支,一个是值迭代(Value Iteration),另一个是策略迭代(Policy Iteration)---二者都是可理论保证收敛至最优的。但是加入深度学习后(简称DRL,即深度强化学习),情况就有些扑朔迷离了,值迭代的DQN, ALphaZero的蒙特卡洛树用的策略迭代,以及DRL特有的策略梯度(Policy Gradient),如A2C、A3CPPOsoft Actor Critic----这些“深度”的方法如何保证它能收敛至最优呢? 初代的AlphaGo用的是策略梯度来学习模型的,可从第二代ALphaGo Zero开始就换成了策略迭代,这二者理论上学习效率上有什么区别呢? 这些都可以是你的研究方向!
2.RL学习效率的研究:如何又快又好地学习到某个环境的策略是RL实践层面的根本目标。基于此,又可以从方法上分成以下几个方面:
2.1 model free vs model based: model free易于理解,且不需要知道环境的model,但学习效率太差,而model based 则反之。给定一个陌生的环境,如何又快又好地学习到model成为了提升学习效率的根本目标。这方面环境model该如何学习,又是个大坑,如alphazero的最新一代Muzero是直接在用蒙特卡洛树规划时就顺便把环境模型给学出来的,参考:When to Trust Your Model: Model-Based Policy Optimization
2.2 .explore vs exploitation: 探索与利用一直就是个学习机制的核心问题。什么时候该探索,学到什么时候该利用?在RL语境中,就是给定每个state,到底该选择最优action还是随机的action,这个随机又有多随机呢? 而这里的”时候“即可能需要考虑当前的state,又需要考虑到agent策略目前学习的进度。 针对每个state,DQN是用的e-greedy这种固定概率的机制,而象Soft Actor Critic这类则基于策略梯度的则直接从策略网络的aciton分布抽样来采样每个state的action来作为其探索利用的机制。另外GO-EXPLORE的作者们则认为应该针对某些state进行完全的利用,而其他的一些state可以用action分布来采样。那对于探索和利用,到底怎样的一种分配制度才是最优的呢,这又是个研究方向。
2.3 sparse reward issue: 现实中,有些环境我们只知道最终state怎么样是好的,怎样是坏的,但对于中途的state到底是好是坏没有准确的概念,如各种棋类游戏,赛车等。 那怎么定义这些中途的reward呢? 全部定位为0,则agent会学不到知识,因为一直没有反馈。 可通过分层强化学习HER或者一些其他方法(如上述的GO-explore,alphaGo之类的蒙特卡洛树规划, rudder)来做。
3.可解释性:这个严格来说不算是DRL特有的,但既然用到了深度学习,这也可以是个研究方向,毕竟如果你用DRL学了个自动驾驶的agent,1.自己肯定不敢坐,2.万一在某个state出了问题,貌似也不知如何”针对性“调整。 参考:Evolutionary learning of interpretable decision trees | Papers With Code。
4.非RL的学习方法:若只是希望找到一个最优策略,未必需要用到RL,如可以用. Evolutionary Algorithms (EAs) 或利用遗传算法的NEAT。
5.网络模型的改进:RL要求state是具有马尔可夫性的,但实际情况并非如此。如谷歌的DQN中为了缓解这个问题将相邻的4帧画面作为一个state,但仍有局限性,那如果把带有记忆的RNN LSTM TRANFORMER等网络模型加入会如何呢?Adaptive Transformers in RL ;
6.IT架构层面的优化:DRL难免是要同时用到CPU和GPU的,GPU用来训练agent模型,而cpu则用来产生训练用数据,那如何每时每刻都榨干CPU和GPU的性能则是这个领域需要考虑的问题。参考: 一条咸鱼的强化学习之路8之并行AC框架(A3C & G-A3C & PAAC) - 知乎 (zhihu.com)
Accelerated Methods for Deep Reinforcement Learning
7. action相关: 若是某些state的某些action是无效的,该怎么排除这些action呢?A Closer Look at Invalid Action Masking in Policy Gradient Algorithms; 若是有些环境输出既需要离散的action又需要连续的action怎么处理呢(如自动驾驶中既需要选择是踩油门或者刹车,同时有需要决定踩多深)?Discrete and Continuous Action Representation for Practical RL in Video Games
8.multi-agent RL: 这领域是个大坑。因为所有单agent有的问题它都有,并需要额外考虑多agent交互的问题。(这个领域我不熟,做实验的话一般也只有大公司玩得起)
最后一点,作为科班的研究方向,有个很实际的问题就是你研究的方向得是你老板喜欢的(至少是允许的),若是实验性质的研究还得保证你能找的到合适的gpu服务器去跑,我个人最推荐的方法是租个云服务器(如 极客云服务器,华为云,腾讯云等),若是理论性质的得保证你及你的导师有较强的数学理论基础。