Lesson3-基于神经网络方法求解RL
3.1 背景知识——值函数近似&神经网络
RL➡Deep RL: 从少量状态到数不清的状态
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UtcBwyqA-1593164444140)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200234953.png)]](https://i-blog.csdnimg.cn/blog_migrate/572646dd785125c80c73569bd33a64a4.png#pic_center)
3.1.1 值函数近似(Q函数近似)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esYD7uT2-1593164444142)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200656893.png)]](https://i-blog.csdnimg.cn/blog_migrate/f54c1282c6710975ae42ef1c4f9b7e3d.png#pic_center)
3.1.2 神经网络——黑盒不黑
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o08RRcNN-1593164444144)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200745327.png)]](https://i-blog.csdnimg.cn/blog_migrate/dc8193ea1a0e12b736163b8c2a695b6f.png#pic_center)
神经网络可逼近任意连续函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9HWRVGX-1593164444145)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622201025914.png)]](https://i-blog.csdnimg.cn/blog_migrate/deebb6178373893d292ab0ed397b9b51.png#pic_center)
案例分析:求解四元一次方程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fhtn00BC-1593164444146)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622201615608.png)]](https://i-blog.csdnimg.cn/blog_migrate/fbcc3b8cc5dc7d83f2aa82af9726cc1b.png#pic_center)
代码如下
# 运行线性回归模型————快速求解4元一次方程
# 加载库
import paddle.fluid as fluid
import numpy as np
# 生成数据
np.random.seed(0)
outputs = np.random.randint(5, size=(10, 4))
res = []
for i in range(10):
# 假设方程式为 y=4a+6b+7c+2d
y = 4 * outputs[i][0] + 6 * outputs[i][1] + 7 * outputs[i][2] + 2 * outputs[i][3]
res.append([y])
# 定义数据
train_data = np.array(outputs).astype('float32')
y_true = np.array(res).astype('float32')
# 定义网络
x = fluid.layers.data(name="x", shape=[4], dtype='float32')
y = fluid.layers.data(name="y", shape=[1], dtype='float32')
y_predict = fluid.layers.fc(input=x, size=1, act=None)
# 定义损失函数
cost = fluid.layers.square_error_cost(input=y_predict, label=y)
avg_cost = fluid.layers.mean(cost)
# 定义优化方法
sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.05)
sgd_optimizer.minimize(avg_cost)
# 参数初始化
cpu = fluid.CPUPlace()
exe = fluid.Executor(cpu)
exe.run(fluid.default_startup_program())
##开始训练,迭代500次
for i in range(500):
outs = exe.run(
feed={
'x': train_data, 'y': y_true},
fetch_list=[y_predict.name, avg_cost.name])
if i % 50 == 0:
print('iter={:.0f},cost={}'.format(i, outs[1][0]))
# 存储训练结果
params_dirname = "result"
fluid.io

本文介绍了如何使用神经网络解决强化学习(RL)问题,特别是通过DQN算法。讨论了值函数近似和神经网络的性质,如神经网络可逼近任意连续函数,并通过案例分析进行说明。接着详细阐述了DQN的工作原理,包括经验回放和固定Q目标两大创新点。此外,还介绍了PARL框架,将其拆分为Model、Algorithm和Agent三个部分,以简化RL模型的构建和维护。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



