|
发表于 2023-5-8 13:14:15
|
显示全部楼层
强化学习博一在读, 调参时刷到问题, 怒答! 若有错误或不合适的内容请指出. 先说结论, 强化学习是一种在只有很弱的前提下求解控制问题的相对优雅的解法. 但是在实际问题中, 我们往往可以通过引入更强的前提来达到更好的效果.
1. "抛开前提谈结论, 都是耍流氓"
首先我们要知道强化学习是在一个什么样的前提下去求解问题的. 最基础的强化学习中, 我们有一个环境 (MDP =), 我们要学一个控制策略从而最大化累积期望奖励对吧:
假如奖励函数已知且可导, 转移函数已知且可导, 这个问题完全可以用最用Optimal Control去求解, 比如经典的Synthesis and Stabilization of Complex Behaviors through Online Trajectory Optimization, 下图是他们的控制算法, 看起来不那么弱智吧. 而且该控制算法是通过Dynamic Programming直接求解上面的目标函数得到的, 并非通过试错得到的:
那我们再严厉一点,和都未知, 但是给你一个simulator, 那我还是可以通过一些Search-based的方法去求解, 例如MCTS.
那你再严厉一点, 现在连simulator都不给你了:
小机器人: "那我试错吧.." (小声)
你: "哈, 弱智!"
(不觉得小机器人有一点可怜吗) 再举一个老生常谈的例子: 自动驾驶. LeCun在他今年的Talk () 里举过这个例子:
- 一个普通的年轻人平均经过大约10小时的训练就可以正常驾驶汽车了, 为什么现在的智能体用了百倍甚至千倍于此的时间还是学不到一个好的策略呢?
- 答: "因为没有先验知识".
LeCun实际上对这个问题的回答是"World Model", 即一个可以感知并且预测当前世界发展的模型, 但我觉得更general的说法是因为我们没有利用足够多的先验知识. 因为当一个成年人坐在驾驶室里的时候, 他已经是一个具备多种先验知识的个体了, 比如他可以做到 Object Detection; Object Segmentation; Transition Prediction; Natural Language Processing.... 但如果你让一个只有0岁记忆的大人坐上驾驶室呢, 我不觉得他会学得比RL快多少.
但是在解决实际任务时, 我们往往并不需要给模型如此严苛的前提, 毕竟我们的目的只是解决任务而已, 所以如何更高效地引入先验知识就成了一个重点! 包括但不限于Model-based RL (通过引入dynamics model); 预训练大模型 (例如DeepmindA Generalist Agent, 虽然严格意义上GATO并不算RL agent, 但它确实是一个很好的起点) ...
2. 强化学习是真的人工智能吗?
那肯定不是啊! 我不知道"人工智能"具体要怎么定义, 但你如果和我说用现有算法能训一个终结者出来, 我肯定是不信的.
2.1. 强化学习"跌落神坛"
我18年刚入门强化学习的时候就看到了一篇经典的文章: "一篇深度强化学习的劝退文" (Deep Reinforcement Learning Doesn't Work Yet), 虽然最后还是凭着对游戏的热爱坚持了下来(不是). 后面感觉每年都会有一段时间看到各种 "强化学习跌落神坛", "强化学习退坑指南"...等文章. 每次看到之后我都会很好奇: 跌落神坛? 强化学习啥时候上去过啊?
我觉得可能"Alpha字辈"的那一系列模型, 在某段时间给了刚入门的新人(包括我)一些迷之自信, 比如现在每次提到围棋就会提到的AlphaGo (以及可爱的柯洁同学), 比如下图AlphaStar战胜人类职业队的一个gif; 再比如可以自己学规则的MuZero... 似乎AGI (通用人工智能) 已经指日可待了.
但是如果实际去看一看对应的论文, 你就会发现, 它们其实只是一些非常精细的工程作品, 离一般意义上的AGI还差得远呢. (不信, 你用强化学习模型给我刷个碗看看, 我倒要看看你的奖励函数怎么定义, 哼!)
所以, 在认清了这一点之后, 你会发现不管是深度神经网络, 还是强化学习算法, 它们刚刚出世的时候都因为一些非常惊艳的"作品"使得人们对它们给予了过高的期望, 然后近几年这些算法的局限性开始显现, 所以大家纷纷开始吐槽, 抱怨, 跳坑... 但是实际上, 如果你从一开始就不要把它捧上"神坛", 又何来这么多失望呢?
如果想要入门强化学习, 我还是强烈推荐Sutton的Reinforcement Learning: An Introduction, 以及如果英文OK的话还是看英文的吧, 中文的翻译总让我觉得怪怪的. 这本书是从tabular的算法开始讲起, 不像某些教程上来就policy gradient, actor critic..., Sutton的书能让你更加清晰地意识到RL算法的来源以及其局限性. (我刚入门的时候没有人带, 杂七杂八地看了各种教程, 之后有时间的话整理一个踩坑贴, 瘫).
2.2. 退坑强化学习: 快跑?
关于强化学习劝退, 我看大部分的理由都是RL落地难, 所以公司很难获益, 所以岗位很少... 这些我也没有啥发言权 (没有实习过www), 但这里推荐一个回答!
强化学习领域目前遇到的瓶颈是什么?以及强化学习的实现确实有很多trick, 之前我也是苦心研究RL里数学问题 (主要是因为笨), 后面发现在很多简单任务上实现RL baseline的时候就是不work, 折腾了很久才发现人家实现的时候是有很多不体现在数学公式里的trick的. 所以奉劝各位想要学习RL的同学, 一定要多动手! 不然可能会变成理论大师, 一写代码智能体就各种撞墙. 这里提供几个比较经典的代码库~
https://github.com/thu-ml/tianshou(4.9k stars) 我们实验室的代码库, 涵盖了大部分主流model-free算法, 目前也在添加model-based的一些算法. (出于私心放在最前面)
GitHub - openai/spinningup: An educational resource to help anyone learn deep reinforcement learning.(7.1k stars) openai给researcher提供的model-free算法样例代码库, 算法的实现都以demonstration为主, 所以性能并不是state-of-the-art的. 好处是一个算法只有一个文件夹, 代码耦合性低而且配有对应的说明文档, 介绍了算法的核心推导.
https://github.com/vwxyzjn/cleanrl(1.1k stars) 这个库相对小众, 但是它真的实现了one-file RL! 即一个RL 算法只有一个文件, 而且包含很多能提升算法性能的实现细节, 适合需要理解RL算法实现的朋友.
<hr/>然后分享两篇我读完之后很有收获的RL调参的文章:
深度强化学习调参技巧:以D3QN、TD3、PPO、SAC算法为例
【ICLR2022顶会论文分享】PPO算法的37个Implementation细节 (中文翻译)
<hr/>最后, RL虽然作为一个并不完美的算法领域, 但是结合工程能力, 还是能做出很多让人眼前一亮的任务的~ 附上一个最近看到的用RL做的挑战赛:
[华为诺亚、腾讯AI Lab]NeurIPS MineRL竞赛夺冠方案 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|