zoukankan      html  css  js  c++  java
  • 【DRL 】什么是Q-Learning, DQN, DDQN

    • 整理自网络资源

    • DRL: Deep Reinforcement Learning 深度增强学习

    • DQN: Deep Q-Network

    什么是DRL

    • action
    • observation:每个时间片,agent都是更剧当前的观察来确定下一步的动作
    • state:observation的集合就作为agent所在的状态state
    • reward: agent执行了action,与环境交互后,环境会变化,变化的好坏就用reward表示
    • policy:state到action的过程
    • 任务:找到一个最优的策略policy从而使得reward最好
    • 两类policy:
      • (a=pi(s)) :一一对应表示, Deterministic policy(确定性策略),输入一个状态,输出一个确定的action
      • (pi(a|s)):概率表示,Stochastic policy(随机性策略),输入一个状态,输出每个action的概率分布

    MDP Markov Decision Process

    • MDP基于一种假设:未来取决于当前
      • 下一个状态仅取决于当前的状态和动作
      • (P(s_{t+1}|s_t)=P(s_{t+1}|s_t,s_{t-1},...,s_1,s_0))

    价值函数

    return 回报:

    • (G_t=R_{t+1}+lambda R_{t+2}+...=sum_{k=0}^{infty}lambda^{k}R_{t+k+1})
    • (G_t)又称 cumulative discounted reward (累积折扣奖励)
    • 其中R为Reward
    • (lambda)为discount factor(折扣因子),一般小于1
      • 越大:看得越远,注重长期奖励
      • 越小:越短视,注重眼前奖励
    • 实际上除非整个过程结束,否则显然我们无法获取所有的reward来计算出每个状态的Return

    价值函数:

    • v(s): 表示一个状态未来的潜在价值
    • 定义上看,value function就是Return的期望
      • (v(s)=E[G_t|S_t=s])
      • (v(s)=E[R_{t+1}+lambda v(S_{S+1})|S_t=s])

    动作价值函数 Action-Value Function

    • (Q^pi(s,a))
    • 如果知道了每个动作的价值,那么就可以选择一个价值最大的动作去执行了。
    • 这里使用的reward和之前的reward不一样
      • 之前state对应的reward是多种动作对应的reward的期望值
      • 这里的是执行完这一个动作a得到的reward
      • 注意看两个函数的参数数量都不一样。
    • (Q^pi(s,a)=E[r_{t+1}+lambda r_{t+2}+lambda^2 r_{t+3}...|s,a]=E[r+lambda Q^pi (s',a')|s,a])

    最优价值函数

    • 最优价值函数和一般的动作价值函数的关系:
      • (Q^*(s,a)=max_pi Q^pi(s,a))
      • (Q^*(s,a)=E_{s'}[r+lambda max_{a'}Q^*(s',a')|s,a])
    • 最优的Q值必然为最大值

    Q-learning

    • 更新Q值得方法:
    • $Q(S_t,A_t) <- Q(S_t,A_t)+alpha (R_{t+1} + lambda max_aQ(S_{t+1},a)-Q(S_t,A_t)) $

    DQN

    价值函数近似

    • 用一个函数来表示Q(s,a)
    • (Q(s,a)=f(s,a,w))
    • w: 表示函数的参数
    • f是近似的,并不知道Q值得实际分布情况

    DQN

    • 用一个深度神经网络来表示这个f
    • 神经网络的训练是一个最优化问题,最优化一个损失函数loss function
    • 目标是让损失函数最小化。为此,我们需要有样本,巨量的有标签数据,然后通过反向传播使用梯度下降的方法来更新神经网络的参数。
    • 将目标Q值作为标签,我们的目标:使Q值趋近于目标Q值
    • 损失函数:
      • (L(w)=E[(r+lambda max_{a'}Q(s',a',w)-Q(s,a,w))^2])
      • (r+lambda max_{a'}Q(s',a',w))为target
  • 相关阅读:
    SQL中部分语法整理
    iOS获取设备唯一标识的8种方法
    动力节点Java培训告诉你Java线程的多功能用法
    Java编程中的美好
    Node.js process 模块常用属性和方法
    Android系统学习小记
    动力节点Java培训告诉你Java线程的多功能用法
    mybatis-java1234一
    一:luecne初体验
    Linux系统安装-系统分区
  • 原文地址:https://www.cnblogs.com/xuwanwei/p/13641755.html
Copyright © 2011-2022 走看看