好好学习!天天SOTA!
开始机器学习中的另一领域:强化学习的入门练习啦!
7天的打卡学习,收获满满,理论知识及上手实践同步进行,让我从零实践强化学习的魅力。我总结了如下知识点及实操Tips:
1、什么是强化学习:
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
核心思想:智能体 agent 在环境 environment 中学习,根据环境的状态 state(或观测到的observation),执行动作 action ,并根据环境的反馈 reward(奖励)来指导更好的动作。
2、强化学习与监督学习的区别:
- 强化学习、监督学习、非监督学习是机器学习里的三个不同的领域,都跟深度学习有交集。
- 监督学习寻找输入到输出之间的映射,比如分类和回归问题。
- 非监督学习主要寻找数据之间的隐藏关系,比如聚类问题。
- 强化学习则需要在与环境的交互中学习和寻找最佳决策方案。
- 监督学习处理认知问题,强化学习处理决策问题。
3、强化学习相关算法:
- 强化学习有两种学习方案:基于价值(value-based)、基于策略(policy-based)
- 环境分类:离散控制场景(输出动作可数)、连续控制场景(输出动作值不可数)
- 经典算法:Q-learning、Sarsa、DQN、Policy Gradient、A3C、DDPG、PPO
4、强化学习的训练环境及框架:
- 强化学习经典环境库GYM将环境交互接口规范化为:重置环境reset()、交互step()、渲染render()
- 强化学习框架库PARL,将强化学习框架抽象为Model、Algorithm、Agent三层,使得强化学习算法的实现和调试更方便和灵活。
- PARL强化学习框架开源地址:https://github.com/PaddlePaddle/PARL
使用PARL实现DDPG算法代码:
Agent把产生的数据传给algorithm,algorithm根据model的模型结构计算出Loss,使用SGD或者其他优化器不断的优化,PARL这种架构可以很方便的应用在各类深度强化学习问题中。
(1)Model
Model用来定义前向(Forward)网络,用户可以自由的定制自己的网络结构:
class Model(parl.Model):
def __init__(self, act_dim):
self.actor_model = ActorModel(act_dim)
self.critic_model = CriticModel()
def policy(self, obs):
return self.actor_model.policy(obs)
def value(self, obs, act):
return self.critic_model.value(obs, act)
def get_actor_params(self):
return self.actor_model.parameters()
class ActorModel(parl.Model):
def __init__(self, act_dim):
hid_size = 100
self.fc1 = layers.fc(size=hid_size, act='relu')
self.fc2 = layers.fc(size=act_dim, act='tanh')
def policy(self, obs):
hid = self.fc1(obs)
means = self.fc2(hid)
return means
class CriticModel(parl.Model):
def __init__