• 强化学习总结


    强化学习

    通过价值选行为: DEEP Q NETWORK 价值
    直接选行为: POLICY GRADIEND 概率
    想象环境并学习: MODEL BASED RL

    以上都可以用于不理解环境与理解环境两种模式,区别在于, model-free依靠一步一步对环境的反馈学习, model-base预先模拟所有可能。(model-base更强)

    基于概率的可以用于连续动作,使用概率分布,而基于价值的则不行。policy + dq =
    actor-critic。

    单步更新, policy-gradient

    tkinter编写虚拟环境

    DQ:
    Q(s1,a2)现实 = R + r*maxQ(s2) R奖励=0
    Q(s1,a2)估计 = Q(s1,a2)

    Q(s1,a2) = Q(s1,a2) + a[R + r*maxQ(s2)-Q(s1,a2) ]

    Q(s1)=R2 + r^2*R3 + r^3*R4...

    Qtable例子:
    state: 距离最终结果多少步
    action: 每一步可以执行的操作,左|右

    Sarsa:

    Q(s1,a2)现实 = R + r*Q(s2,a2) R奖励=0
    Q(s1,a2)估计 = Q(s1,a2)

    Q(s1,a2) = Q(s1,a2) + a[R + r*Q(s2,a2)-Q(s1,a2) ]

    DQ与Sarsa的区别在于DQ使用maxQ最快获得目标, Sarsa更加保守,是一种自己玩的在线式学习。

    Sarsa(lammda):

    Sarsa(0)单步更新, Sarsa(n)回合更新,因此对奖励距离进行衰减,回望所有步,距离奖励越近越重要,lammda越大。

    DQN
    将s输入神经网络生成a1 a2的Q值,
    神经网络输出 Q估计 Q(s2)
    Q现实 = R + r*maxQ(s2)
    两者之差用于更新神经网络

    记忆库 与固定参数, 将Q估计使用最新参数, 将Q现实使用旧参数。

    两个网络,一个存储最新参数,另一个存储老参数, 老的更新最新的, 新的变为老的。

    Double DQN
    Q现实 = R + r*maxQ(s2) maxQ会将最大误差考虑进Qtarge, 是模型过拟合。

    DDQN采用两个叠加网络:
    Q现实 = R + r*Q(s2, maxQ(s2))

    这里分数是连续的,但动作是11个,因此需要将动作离散化。


    另一种优化方法,抽取重要记忆,而不是随机抽取。

    TDerror = Q现实 - Q估计
    误差值越大,代表越重要,越需要学习。

    为避免每次重新排序,使用sumTree存储数据,得分高的储存在树根,得分低的储存在分支。

    duelingDQN:
    计算每个state的值value,计算在state基础上计算每个action的值。

    Policy gradient:
    不是基于值输出动作,而是通过奖惩机制增大下次选中的概率。

    QLearing是基于离散点的动作,后者是基于连续动作,一个回合中的。

    π(s,a)vt vt为奖励值。在网络中使用softmax计算概率,使用one-hot记录动作,因为tf只有min_loss,而这里是要求概率最大的动作,所以用max_loss。

    actor critic:
    policy or critic是回合更新,dq or actor是单步更新, 两者结合虽然能提升性能, 但是在连续状态上的更新增加了两个神经网络的相关性。

    actor网络负责预测动作, critic网络负责打分。

    因此有了DDPG:
    Deep: 与DQN相似, 一个记忆库, 两个更新频率不同的网络。

    Policy gradient:
    动作估计网络: 预测下一步动作
    动作现实网络: 打分, 并传给 value based的估计网络。

    Value based:
    状态估计网络: 为动作现实网络打分
    状态现实网络: 为动作估计网络打分

    A3c:
    并发学习,通过多线程汇总减少网络相关性。

  • 相关阅读:
    1130 host '***' is not allowed to connect to this MySQL server
    签名时出错,未能对....ext签名。SignTool Error: No certificates...
    C# 进制转换(二进制、十六进制、十进制互转)
    在安装32位Oracle客户端组建的情况下以64位模式运行
    Vue中引入jQuery
    sql server数据库分离时,数据库右侧显示(单个用户)
    解决Typora图片显示问题
    Ruby日文手册翻译1
    Boost Graph Library 库小结1
    归并排序
  • 原文地址:https://www.cnblogs.com/ruili07/p/10832097.html
Copyright © 2020-2023  润新知