强化学习的学习之路(八)_2021-01-08:强化学习的学习资源及学习建议

作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学习的基础知识,后面也会更新强化学习的论文阅读专栏。本来是想每一篇多更新一点内容的,后面发现大家上CSDN主要是来提问的,就把很多拆分开来了(而且这样每天任务量也小一点哈哈哈哈偷懒大法)。但是我还是希望知识点能成系统,所以我在目录里面都好按章节系统地写的,而且在github上写成了书籍的形式,如果大家觉得有帮助,希望从头看的话欢迎关注我的github啊,谢谢大家!另外我还会分享深度学习-基础知识专栏以及深度学习-论文阅读专栏,很早以前就和小伙伴们花了很多精力写的,如果有对深度学习感兴趣的小伙伴也欢迎大家关注啊。大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!不要高估一年的努力,也不要低估十年的积累,与君共勉!

强化学习的一些资源

这里主要给大家分享一些课程,书籍还有代码库。

课程
  • CS 285 at UC Berkeley :这个课程是2020年底Sergey Levine大神在UC Berkeley教的课程,我觉得讲的特别详细,而且里面加了很多一些最新的研究成果。

  • David Silver’s course :这个课程是David Sliver在2015年出的课程,非常的经典,相信很多入门强化学习的同学都是看的这个课程,里面的很多东西课程刚开始听会比较难懂,可能得多听几遍。

  • Berkeley’s Deep RL Bootcamp:这个课我其实没看过,但是看了一下lectures,是一群大佬讲的这个课程,质量应该也很好。

  • Stanford CS234: Reinforcement Learning :这个课暂时没看过,不过看评价感觉挺好的。

  • Stanford CS330: Multi-Task and Meta-Learning, 2019 :Finn关于多任务学习和元学习的课程,强推。

  • 李宏毅老师的机器学习课程:李宏毅老师的机器学习课程里面有一些也涉及到了强化学习的内容,李宏毅老师是用中文讲的课程,而且总是能把一个比较复杂的问题以一种很简单的方式讲出来。

  • 港中文周博磊老师的课程:我觉得大家如果看英文课比较吃力的话建议大家可以先看周博磊老师的课程先入个门,这个课程的内容相对比较简单,比较好入门。

    课程的话暂时就只想到这么多,上面的这些课程我听了的大部分都记了笔记,大部分是直接记在课件上的,大家如果有想要的也可以留言告诉我

书籍
代码库
强化学习的学习建议

下面的很多建议我都是从Stable Baselines 上面的tips总结的,然后加上了自己一些粗浅的看法。

  • Read about RL and Stable Baselines :多看一些强化学习算法的Baseline代码,比如我上面提供的代码库。

  • Do quantitative experiments and hyperparameter tuning if needed. This factor, among others, explains that results in RL may vary from one run to another (i.e., when only the seed of the pseudo-random generator changes). For this reason, you should always do several runs to have quantitative results. : 因为强化学习算法跑出来的结果有时候会差特别多,所以应该多跑几组实验得到量化的结果。

  • Good results in RL are generally dependent on finding appropriate hyperparameters. Recent algorithms (PPO, SAC, TD3) normally require little hyperparameter tuning, however, don’t expect the default ones to work on any environment. 虽然最近的一些算法比如PPO、SAC、TD3不太需要调参,但是不要期待一个默认的超参数设置可以在所有环境下都能用,所有强化学习中的一些好的结果都需要一些超参数的调节。

  • When applying RL to a custom problem, you should always normalize the input to the agent (e.g. using VecNormalize for PPO2/A2C) and look at common preprocessing done on other environments (e.g. for Atari, frame-stack, …). Please refer to Tips and Tricks when creating a custom environment paragraph below for more advice related to custom environments. 应该根据智能体的不同,对输入进行规范化。

  • Evaluate the performance using a separate test environment :有时候训练的时候会加入一些epsilon贪婪等来提升探索,但是在测试的时候应该用一个分开的环境直接对模型进行测试。

  • As a general advice, to obtain better performances, you should augment the budget of the agent (number of training timesteps). 为了更好的效果,训练的久一点。

  • In order to achieve the desired behavior, expert knowledge is often required to design an adequate reward function. This reward engineering (or RewArt as coined by Freek Stulp), necessitates several iterations. As a good example of reward shaping, you can take a look at Deep Mimic paper which combines imitation learning and reinforcement learning to do acrobatic moves. 加入一些专家经验去设计比较好的奖励。

  • Reproducibility:Completely reproducible results are not guaranteed across Tensorflow releases or different platforms. Furthermore, results need not be reproducible between CPU and GPU executions, even when using identical seeds.In order to make computations deterministic on CPU, on your specific problem on one specific platform, you need to pass a seed argument at the creation of a model and set n_cpu_tf_sess=1 (number of cpu for Tensorflow session). If you pass an environment to the model using set_env(), then you also need to seed the environment first.设置随机种子增强结果的复现性。

  • 没有哪个算法会适合所有的任务,那么平时怎么选择算法呢? 首先第一个标准就是看看问题的动作空间是离散的还是连续的,比如像DQN只适合离散动作,SAC只适合连续的动作;还有就是你要不要并行化你的训练:具体怎么选看下面:

    • Discrete Actions - Single Process: DQN with extensions (double DQN, prioritized replay, …) and ACER are the recommended algorithms. DQN is usually slower to train (regarding wall clock time) but is the most sample efficient (because of its replay buffer).离散动作、不并行化:DQN及其扩展,ACER等。DQN训练很慢,但是因为有replay buffer的存在样本利用率比较高。

      • Discrete Actions - Multiprocessed: You should give a try to PPO2, A2C and its successors (ACKTR, ACER). If you can multiprocess the training using MPI, then you should checkout PPO1 and TRPO. 离散动作、并行化:PPO2、A2C及其对其改进(ACKER、ACER)等

      • Continuous Actions - Single Process: Current State Of The Art (SOTA) algorithms are SAC and TD3. Please use the hyperparameters in the RL zoo for best results. 连续动作、不并行化:SAC、TD3。

      • Continuous Actions - Multiprocessed: Take a look at PPO2, TRPO or A2C. Again, don’t forget to take the hyperparameters from the RL zoo for continuous actions problems (cf Bullet envs). If you can use MPI, then you can choose between PPO1, TRPO and DDPG. 连续动作、并行化: SAC、TD3。

  • 在创建一个自定义的环境的时候也有一些tricks:

    • always normalize your observation space when you can, i.e., when you know the boundaries 规范化你的状态空间。
    • normalize your action space and make it symmetric when continuous (cf potential issue below). A good practice is to rescale your actions to lie in [-1, 1]. This does not limit you as you can easily rescale the action inside the environment 规范化你的动作空间,比如把你的动作缩放到[-1, 1]之间。
    • start with shaped reward (i.e. informative reward) and simplified version of your problem 使用一些shaped reward,开始的时候使用问题的简单形式。
    • debug with random actions to check that your environment works and follows the gym interface: 用随机动作去测试你的环境是否正常工作。
  • 实现强化学习算法的一些trick:

    • Read the original paper several times 多看几遍原始论文。

    • Read existing implementations (if available) 看算法的现有的实现。

    • Try to have some “sign of life” on toy problems 先在简单的问题试起来。

    • Validate the implementation by making it run on harder and harder envs (you can compare results against the RL zoo). You usually need to run hyperparameter optimization for that step. You need to be particularly careful on the shape of the different objects you are manipulating (a broadcast mistake will fail silently cf issue #75) and when to stop the gradient propagation 通过在越来越难的环境中运行来验证实现(可以将结果与RL zoo进行比较)

      下面列举了哪些环境是比较简单的,哪些环境是比较难的。

    A personal pick (by @araffin) for environments with gradual difficulty in RL with continuous actions:

    • Pendulum (easy to solve)
    • HalfCheetahBullet (medium difficulty with local minima and shaped reward)
    • BipedalWalkerHardcore (if it works on that one, then you can have a cookie)

    in RL with discrete actions:

    • CartPole-v1 (easy to be better than random agent, harder to achieve maximal performance)
    • LunarLander
    • Pong (one of the easiest Atari game)
    • other Atari games (e.g. Breakout)

上一篇:强化学习的学习之路(七)_2021-01-07:强化学习中的Gym

下一篇:强化学习的学习之路(九)_2021-01-09:强化学习中的MDP

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源说明】 基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip 基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip 基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip 基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip 基于Python深度强化学习的智能小车目标追踪源码(比赛项目).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
资源说明】 基于强化学习、蒙特卡洛树搜索的UCT算法智能围棋博弈系统源码(解决围棋死活问题)+项目说明.zip - Tsumego是在开源项目CleverGo基础上改进的一款专适用于围棋死活问题求解的智能围棋博弈系统,核心是强化学习算法(蒙特卡洛树搜索和UCT)。 - 可视化界面和围棋规则编码主要参考了GymGo&CleverGo,并在其基础上对代码逻辑进行了简化。但原项目基于的是正常围棋博弈的玩法规则,而非死活题。因此本项目额外增加了一些围棋死活问题下的规则函数,如死棋/活棋判定、游戏终局判定、死活题输赢判定、真假眼判定等等,从而更适应围棋死活题的场景。 - 此项目的核心算法是强化学习——基于蒙特卡洛树搜索地UCT算法,参考了AlphoGo的算法原理实现了基本的MCTS算法和UCT算法,同时也创造性地对算法框架、回报函数、超参数等进行了改进,从而更适用于围棋死活题求解。 - 围棋规则、围棋死活题介绍、算法实现以及优化、围棋棋盘编码、参数组合优化 等内容可参考paper文件夹中的pdf文件。 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
### 回答1: 学习机器学习、深度学习强化学习可以尝试以下建议:1. 通过学习书籍和视频教程来了解基础知识;2. 实践和实验,用实际项目来熟悉编程和技术;3. 加入社区,与更多的专家和从业者一起学习;4. 尝试使用开源工具,比如TensorFlow和PyTorch;5. 加入线上或线下的课程,以便获取更多的知识和经验。 ### 回答2: 学习机器学习、深度学习强化学习是一个需要专注和持续学习的过程。以下是一些建议: 1.打下基础知识:在开始学习机器学习相关领域之前,确保你有相关的数学和统计知识。理解线性代数、概率论和微积分等基础概念,这些都是机器学习的基石。 2.选择适当的学习资源:有很多免费和付费的学习资源可以选择,包括在线课程、教科书、博客和教学视频。选择适合自己学习风格和程度的资源建议从入门级别的课程和教材开始。 3.实践项目:建议找一些实际的项目来应用所学的知识,这样可以更好地理解概念和技术。可以从一些开源项目入手,或者自己提出一个小规模的项目。 4.参与竞赛和社区:加入机器学习和深度学习的社区,参与竞赛和项目,与其他学习者交流和合作。这样可以不断学习和提高自己,同时拓宽人脉。 5.阅读论文和研究工作:机器学习和深度学习领域发展迅速,及时了解最新的论文和研究成果是保持学习进步的关键。阅读和研究论文可以帮助你深入理解算法和技术的原理和应用。 6.坚持学习和练习:机器学习等领域的学习需要时间和耐心,保持学习的动力和持续练习是非常重要的。不断尝试新的问题和挑战,克服困难,丰富自己的经验。 总的来说,学习机器学习、深度学习强化学习需要全面的基础知识、实践项目、参与社区和持续不断的学习和练习。不断积累经验和相互交流合作将帮助你对这些领域有更深入的理解和应用能力。 ### 回答3: 学习机器学习、深度学习强化学习需要一定的数学、计算机科学和统计学知识作为基础,但同时也需要实践和理论相结合的学习方法。以下是一些学习建议: 1. 扎实的数学基础:机器学习、深度学习强化学习都依赖于数学原理,如线性代数、概率论和统计学等。建议学习者先系统地学习这些数学概念和方法,以便更好地理解和应用相关算法。 2. 学习编程和数据处理技能:掌握编程语言,如Python或R,可以帮助你实现机器学习算法和处理数据。此外,了解数据处理和数据可视化方法,对于数据预处理和结果分析非常有帮助。 3. 学习算法和模型:理解不同的机器学习、深度学习强化学习算法的原理和应用场景,包括常见的回归、分类、聚类和强化学习算法等。阅读相关的教材和论文,参与在线课程和项目实践,可以帮助加深对算法的理解和应用技巧。 4. 实践项目和竞赛:从简单的数据集开始,自己实现机器学习算法并进行调参、优化。可以利用公开的数据集,如Kaggle等竞赛平台上的项目,或者自己找到感兴趣的数据集进行实践。实践中遇到的问题和挑战,能够提高你的学习效果和解决实际问题的能力。 5. 加入学习群体和参与讨论:参加机器学习、深度学习强化学习学习群体,如学习班、研讨会和论坛等,与他人交流讨论学习心得和问题。学习群体能够提供学习资源和分享经验,也能与其他学习者互相激发和提供支持。 6. 持续学习和跟进最新研究:机器学习、深度学习强化学习领域不断发展和更新,学习者应该保持持续学习的态度,关注最新的研究和技术进展。阅读相关的论文、博客和开源项目,参与相关社区,可以帮助你不断提升和更新自己的知识。 总之,学习机器学习、深度学习强化学习需要坚持不懈的努力和实践,并且保持学习的热情和求知欲望。通过多方面的学习途径和实践项目,不断提升自己的技能和理解能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值