百度7天强化学习课程学习心得

一、强化学习初印象

让机器像人一样学习:对已知环境进行规划、对未知环境进行探索/试错。

案例

Multi-Agent Hide and Seek,OpenAI 的 AI 多角色捉迷藏游戏。   地址:http://openai.com/blog/emergent-tool-use

参考资料:

  • 《Reinforcement Learning: An Introduction》 
  •   伯克利 2018 Deep RL 课程:http://rail.eecs.berkeley.edu/deeprlcourse/

强化学习经典算法复现:DQN,DDPG,PPO,A3C

强化学习理论课:2015 David Silver 经典强化学习公开课,UC Berkeley CS285,斯坦福 CS234

动手实践:Sarsa、Q-learning、DQN、Policy Gradient、DDPG

经典论文

  • DQN “Playing atari with deep reinforcement learning” https://arxiv.org/pdf/1312.5602.pdf
  • A3C “Asynchronous methods for deep reinforcement learning” http://www.jmlr.org/proceedings/papers/v48/mniha16.pdf
  • DDPG “Continuous control with deep reinforcement learning” https://arxiv.org/pdf/1509.02971
  • PPO “Proximal policy optimization algorithms” https://arxiv.org/pdf/1707.06347

前沿研究方向:Model-based RL、Hierarchical RL、Multi Agent RL、Meta Learning

二、强化学习基本概念

1.强化学习是什么

  • 强化学习(英语:Reinforcement learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。
  • 核心思想:智能体agent在环境environment中学习,根据环境的状态state(或观测到的observation),执行动作action,并根据环境的反馈 reward(奖励)来指导更好的动作。
  • 三要素:state状态(全局)/observation观察值(局部)、action动作、reward反馈/奖励

注意:从环境中获取的状态,有时候叫state,有时候叫observation,这两个其实一个代表全局状态,一个代表局部观测值,在多智能体环境里会有差别,但我们刚开始学习遇到的环境还没有那么复杂,可以先把这两个概念划上等号。

百度7天强化学习课程学习心得_第1张图片

2.强化学习能做什么

  • 游戏(马里奥、Atari、Alpha Go、星际争霸等)
  • 机器人控制(机械臂、机器人、自动驾驶、四轴飞行器等)
  • 用户交互(推荐、广告、NLP等)
  • 交通(拥堵管理等)
  • 资源调度(物流、带宽、功率等)
  • 金融(投资组合、股票买卖等)
  • 其他

3.强化学习与监督学习的区别

  • 强化学习、监督学习、非监督学习是机器学习里的三个不同的领域,都跟深度学习有交集。
  • 监督学习寻找输入到输出之间的映射,比如分类和回归问题。
  • 非监督学习主要寻找数据之间的隐藏关系,比如聚类问题。
  • 强化学习则需要在与环境的交互中学习和寻找最佳决策方案。
  • 监督学习处理认知问题,强化学习处理决策问题。

4.强化学习的如何解决问题

  • 强化学习通过不断的试错探索,吸取经验和教训,持续不断的优化策略,从环境中拿到更好的反馈。
  • 强化学习有两种学习方案:基于价值(value-based)、基于策略(policy-based)

5.强化学习的算法和环境

  • 经典算法:Q-learningSarsaDQNPolicy GradientA3CDDPGPPO
  • 环境分类:离散控制场景(输出动作可数)、连续控制场景(输出动作值不可数)
  • 强化学习经典环境库GYM将环境交互接口规范化为:重置环境reset()、交互step()、渲染render()
  • 强化学习框架库PARL将强化学习框架抽象为ModelAlgorithmAgent三层,使得强化学习算法的实现和调试更方便和灵活。

6.强化学习的 2 种学习/优化方案

  • 基于价值 Value-based (每一步 State 给奖励)—— 最终 Agent 获得每一步最优解(确定性策略)。算法有:Sarsa、Q-learning、DQN
  • 基于策略 Policy-based (最终给出奖励)—— 最终 Agent 获得每一步的概率分布(随机性策略)。算法有:Policy gradient

百度7天强化学习课程学习心得_第2张图片

7.算法库&框架库

百度7天强化学习课程学习心得_第3张图片                               
三、GYM库(环境库)

RL环境相关的库:Gym编程实践

Gym 是个仿真平台,python 的开源库,RL 的测试平台

官网:https://gym.openai.com/

离散控制场景(动作为确定值):一般使用 atari 环境评估
连续控制场景(动作为浮动连续值):一般使用 mujoco 环境游戏评估
Gym 的核心接口是 enviroment

核心方法:

reset():重置环境的状态,回到初始环境,以便开始下一次训练。
step(action):推进一个时间步长,返回 4 个值:
observation (object):对环境的一次观察
reward (float):奖励
done (boolean):代表是否要重置环境(是否达成最终结果/游戏结束)
info (dict):用于调试的诊断信息
render():渲染,刷新环境新一帧的图形

四、PARL库(算法库)

PARL 是对 Agent 的框架抽象

适用范围

  • 入门:快速学习和对比不同常用算法
  • 科研:快速复现论文结果,迁移算法到不同环境调研
  • 工业:大规模分布式能力,单机到多机仅需2行代码,快速迭代上线

PARL 的实现基于 3 个类:

  • Model(模版+用户定制):网络结构,可修改 carpole_model.py 文件
  • Algorithm
  • Agent(模版+用户定制):与环境交互方式,数据接口可修改 carpole_agent.py

五、常用算法简介

1.Sarsa简介

Sarsa全称是state-action-reward-state'-action',目的是学习特定的 state下,特定 action的价值 Q,最终建立和优化一个Q表格,以 state为行,action为列,根据与环境交互得到的 reward来更新 Q表格,更新公式为:

Sarsa在训练中为了更好的探索环境,采用ε-greedy方式来训练,有一定概率随机选择动作输出。

2.Q-learning简介

  • Q-learning也是采用Q表格的方式存储Q值(状态动作价值),决策部分与Sarsa是一样的,采用ε-greedy方式增加探索。
  • Q-learning跟Sarsa不一样的地方是更新Q表格的方式。
    • Sarsaon-policy的更新方式,先做出动作再更新。
    • Q-learningoff-policy的更新方式,更新learn()时无需获取下一步实际做出的动作next_action,并假设下一步动作是取最大Q值的动作。
  • Q-learning的更新公式为:

3.policy gradient简介

  • 在强化学习中,有两大类方法,一种基于值(Value-based),一种基于策略(Policy-based

    • Value-based的算法的典型代表为Q-learningSARSA,将Q函数优化到最优,再根据Q函数取最优策略。
    • Policy-based的算法的典型代表为Policy Gradient,直接优化策略函数。
  • 采用神经网络拟合策略函数,需计算策略梯度用于优化策略网络。

    • 优化的目标是在策略π(s,a)的期望回报:所有的轨迹获得的回报R与对应的轨迹发生概率p的加权和,当N足够大时,可通过采样N个Episode求平均的方式近似表达。
    • 百度7天强化学习课程学习心得_第4张图片
    • 优化目标对参数θ求导后得到策略梯度:

              

4.DDPG简介

  • DDPG的提出动机其实是为了让DQN可以扩展到连续的动作空间。

  • DDPG借鉴了DQN的两个技巧:经验回放 和 固定Q网络。

  • DDPG使用策略网络直接输出确定性动作。

  • DDPG使用了Actor-Critic的架构。

课程平台网址是https://aistudio.baidu.com/aistudio/education/group/info/1335

PARL的Github: https://github.com/PaddlePaddle/PARL

六、学习心得

        之前没有学习过强化学习的课程,因此报名参与。强化学习目前也比较火,通过这次学习对强化学习有基本的认识和了解,可以使用开源的库来实现某种算法,从而解决问题。在强化学习中,比较重要的是Q表格,要理解公式,然后可以写代码,因此数学基础也很重要。

参考博客

https://www.pianshen.com/article/90581504270/

https://blog.csdn.net/qq_42067550/article/details/106816589

https://blog.csdn.net/qq_42067550/article/details/106844303

你可能感兴趣的:(深度学习)