【学习笔记】Lesson3-基于神经网络方法求解RL(强化学习7日打卡营-世界冠军带你从零实践)

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

Lesson3-基于神经网络方法求解RL

3.1 背景知识——值函数近似&神经网络

RL➡Deep RL: 从少量状态到数不清的状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UtcBwyqA-1593164444140)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200234953.png)]

3.1.1 值函数近似(Q函数近似)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esYD7uT2-1593164444142)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200656893.png)]

3.1.2 神经网络——黑盒不黑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o08RRcNN-1593164444144)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622200745327.png)]

神经网络可逼近任意连续函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9HWRVGX-1593164444145)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622201025914.png)]

案例分析:求解四元一次方程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fhtn00BC-1593164444146)(/home/kevinpang/Documents/强化学习——学习笔记/Lesson3/image-20200622201615608.png)]

代码如下

# 运行线性回归模型————快速求解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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值