最近参加了百度的的PARL深度强化学习课程,算是对强化学习有了一定了解,因为之前并没有学习过强化学习相关的知识,粗略入门,体验了PARL框架,确实对新手比较友好。
入门学习了比较基础的算法,如SARSA,Q-Learning,DQN,PG,DDPG。
能在AI studio上直接跑模型,直接感受模型的效果,对入门学习比较有帮助。
强化学习主要了解3个概念,agent,model,algorithm
下面是代码实例,以DQN为例
model
class Model(parl.Model):
def __init__(self, act_dim):
hid1_size = 128
hid2_size = 128
# 3层全连接网络
self.fc1 = layers.fc(size=hid1_size, act='relu')
self.fc2 = layers.fc(size=hid2_size, act='relu')
self.fc3 = layers.fc(size=act_dim, act=None)
def value(self, obs):
# 定义网络
# 输入state,输出所有action对应的Q,[Q(s,a1), Q(s,a2), Q(s,a3)...]
h1 = self.fc1(obs)
h2 = self.fc2(h1)
Q = self.fc3(h2)
return Q
algorithm
# from parl.algorithms import DQN # 也可以直接从parl库中导入DQN算法
class DQN(parl.Algorithm):
def __init__(self, model, act_dim=None, gamma=None, lr=None):
""" DQN algorithm
Args:
model (parl.Model): 定义Q函数的前向网络结构
act_dim (int): action空间的维度,即有几个action
gamm