当前位置: 首页 > wzjs >正文

公司网站做地图地址快速设计网站

公司网站做地图地址,快速设计网站,wordpress文章无法显示,怎么制作h5RL基础 Q价值函数和状态价值函数 Action-Value function: Q ( s , a ) Q(s, a) Q(s,a)是agent在状态s下执行某一个动作(如向上走),所获得的及时奖励和未来折扣的累计奖励 State-Value function: V ( s ) V(s) V(s)是…

RL基础

Q价值函数和状态价值函数

Action-Value function: Q ( s , a ) Q(s, a) Q(s,a)是agent在状态s下执行某一个动作(如向上走),所获得的及时奖励和未来折扣的累计奖励

State-Value function: V ( s ) V(s) V(s)是agent在状态s下执行每个动作(上、下、左、右),所获得的加权奖励值(期望奖励值),主要用来评估状态s的好坏,与动作无关

Q ( s , a ) Q(s, a) Q(s,a) V ( s ) V(s) V(s)之间的关系:
V π ( s t ) = E A [ Q π ( s t , A ) ] = ∑ a π ( a ∣ s t ) ⋅ Q π ( s t , a ) . V_\pi(s_t)=\mathbb{E}_A\left[Q_\pi(s_t,A)\right]=\sum_a\pi(a|s_t)\cdot Q_\pi(s_t,a). Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a).

V π ( s t ) = E A [ Q π ( s t , A ) ] = ∫ π ( a ∣ s t ) ⋅ Q π ( s t , a ) d a V_\pi(s_t)=\mathbb{E}_A\left[Q_\pi(s_t,A)\right]=\int\pi(a|s_t)\cdot Q_\pi(s_t,a)da Vπ(st)=EA[Qπ(st,A)]=π(ast)Qπ(st,a)da

Q-Learning

Q-learning使用下一个状态的最优动作来更新Q值
Q ( s t , a t ) ← Q ( s t , a t ) + α [ R ( s t , a t ) + γ max ⁡ a t + 1 Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha [R(s_t, a_t) + \gamma \max_{a_{t + 1}} Q(s_{t + 1}, a_{t + 1}) - Q(s_t, a_t)] Q(st,at)Q(st,at)+α[R(st,at)+γat+1maxQ(st+1,at+1)Q(st,at)]

Sarsa

Sarsa使用下一个状态的实际动作来更新Q值
Q ( s t , a t ) ← Q ( s t , a t ) + α [ R ( s t , a t ) + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha [R(s_t, a_t) + \gamma Q(s_{t + 1}, a_{t + 1}) - Q(s_t, a_t)] Q(st,at)Q(st,at)+α[R(st,at)+γQ(st+1,at+1)Q(st,at)]

Policy Gradient

策略函数是在给定状态下,给出在该状态下执行各个动作的概率分布。我们的目标是要寻找一个最优策略并最大化这个策略在环境中的期望回报

策略学习的目标函数: J ( θ ) = E s 0 [ V π θ ( s 0 ) ] J(\theta)=\mathbb{E}_{s_0}[V^{\pi_\theta}(s_0)] J(θ)=Es0[Vπθ(s0)],其中 s 0 s_0 s0是初始状态,然后对目标函数求梯度:

∇ θ J ( θ ) ∝ E π θ [ Q π θ ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] \nabla_\theta J(\theta)\propto \mathbb{E}_{\pi_\theta}[Q^{\pi_\theta}(s,a)\nabla_\theta\log\pi_\theta(a|s)] θJ(θ)Eπθ[Qπθ(s,a)θlogπθ(as)]

这里不进行具体证明,直观理解一下策略梯度这个公式,可以发现在每一个状态下,梯度的修改是让策略更多地去采样到带来较高Q值的动作,更少地去采样到带来较低Q值的动作。

REINFORCE

REINFORCE算法使用蒙特卡洛算法估计 Q π θ ( s , a ) Q^{\pi_\theta}(s, a) Qπθ(s,a)

即: Q π θ ( s t , a t ) ≈ ∑ t ′ = t T γ t ′ − t r t ′ Q^{\pi_\theta}(s_t, a_t) \approx \sum_{t^{\prime}=t}^T\gamma^{t^{\prime}-t}r_{t^{\prime}} Qπθ(st,at)t=tTγttrt

def update(self, transition_dict):reward_list = transition_dict['rewards']  # 一个回合中每个时间步的奖励值state_list = transition_dict['states']   # 一个回合中每个时间步的状态action_list = transition_dict['actions']   # 一个回合中每个时间步的执行动作G = 0self.optimizer.zero_grad()for i in reversed(range(len(reward_list))):  # 从最后一步算起,主要是应为t时间步的累计奖励依赖第t+1时间步的累计奖励值reward = reward_list[i]state = torch.tensor([state_list[i]],dtype=torch.float).to(self.device)action = torch.tensor([action_list[i]]).view(-1, 1).to(self.device)# 对应公式中的$log\pi_\theta(a|s)$log_prob = torch.log(self.policy_net(state).gather(1, action))G = self.gamma * G + reward# G表示当前时间步的累计奖励loss = -log_prob * G  # 每一步的损失函数loss.backward()  # 反向传播计算梯度self.optimizer.step()  # 梯度下降

Actor-Critic

策略梯度更加一般的形式:
∇ θ J ( θ ) ∝ E π θ [ Q π θ ( s , a ) ∇ θ log ⁡ π θ ( a ∣ s ) ] = E [ ∑ t = 0 T ψ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_\theta J(\theta) \propto \mathbb{E}_{\pi_\theta}[Q^{\pi_\theta}(s,a)\nabla_\theta\log\pi_\theta(a|s)] \\ = \mathbb{E}\left[\sum_{t = 0}^{T} \psi_t \nabla_{\theta} \log \pi_{\theta}(a_t \vert s_t)\right] θJ(θ)Eπθ[Qπθ(s,a)θlogπθ(as)]=E[t=0Tψtθlogπθ(atst)]
其中 ψ t \psi_t ψt可以取的值如下:

  1. ∑ t ′ = 0 T γ t ′ r t ′ \sum_{t' = 0}^{T} \gamma^{t'} r_{t'} t=0Tγtrt A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 轨迹的总回报
  2. ∑ t ′ = t T γ t ′ − t r t ′ \sum_{t' = t}^{T} \gamma^{t' - t} r_{t'} t=tTγttrt A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 动作 a t a_t at之后的回报
  3. ∑ t ′ = t T γ t ′ − t r t ′ − b ( s t ) \sum_{t' = t}^{T} \gamma^{t' - t} r_{t'} - b(s_t) t=tTγttrtb(st) A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 基准线版本的改进
  4. Q π θ ( s t , a t ) Q^{\pi_{\theta}}(s_t, a_t) Qπθ(st,at) A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 动作价值函数
  5. A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 优势函数
  6. A π θ ( s t , a t ) A^{\pi_{\theta}}(s_t, a_t) Aπθ(st,at) ---------- 时序差分残差

标号2对应到REINFORCE算法采样蒙特卡洛采样的算法,这种方法对策略梯度的估计是无偏的,但是方差比较大

标号3引入baseline,可以降低REINFORCE算法方差过大的问题

标号4对应Actor-Critic算法,使用动态价值函数Q,代替蒙特卡洛采样得到的回报

标号5对Actor-Critic算法进一步改进,把状态价值函数V作为baseline,用Q函数减去V函数,得到A函数,即优势函数A,即: A = Q π θ ( s t , a t ) − V π θ ( s t ) A=Q^{\pi_{\theta}}(s_t, a_t) - V^{\pi_{\theta}}(s_t) A=Qπθ(st,at)Vπθ(st)

标号6对标号5算法进一步改进,利用了 Q = r + γ V Q=r + \gamma V Q=r+γV,即 r t + γ V π θ ( s t + 1 ) − V π θ ( s t ) r_t + \gamma V^{\pi_{\theta}}(s_{t + 1}) - V^{\pi_{\theta}}(s_t) rt+γVπθ(st+1)Vπθ(st)

这里介绍基于时序差分残差来指导策略梯度更新的Actor-Critic算法,已知Actor采用策略梯度更新的原则,下面重点介绍Critic的梯度更新原则

将Critic网络表示为 V w V_w Vw,参数为 w w w,直接采用时序差分残差的学习方式,Critic价值网络的损失是:

L ( ω ) = 1 2 ( r + γ V ω ( s t + 1 ) − V ω ( s t ) ) 2 \mathcal{L}(\omega)=\frac{1}{2}(r+\gamma V_\omega(s_{t+1})-V_\omega(s_t))^2 L(ω)=21(r+γVω(st+1)Vω(st))2

对应的梯度是: ∇ ω L ( ω ) = − ( r + γ V ω ( s t + 1 ) − V ω ( s t ) ) ∇ ω V ω ( s t ) \nabla_\omega\mathcal{L}(\omega)=-(r+\gamma V_\omega(s_{t+1})-V_\omega(s_t))\nabla_\omega V_\omega(s_t) ωL(ω)=(r+γVω(st+1)Vω(st))ωVω(st)

总结Actor - Critic算法的具体流程如下:

  • 初始化策略网络参数 θ \theta θ,价值网络参数 ω \omega ω
  • for序列 e = 1 → E e = 1 \to E e=1E do:
    • 用当前策略 π θ \pi_{\theta} πθ采样轨迹 { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , … } \{s_1, a_1, r_1, s_2, a_2, r_2, \ldots\} {s1,a1,r1,s2,a2,r2,}
    • 为每一步数据计算: δ t = r t + γ V ω ( s t + 1 ) − V ω ( s t ) \delta_t = r_t+\gamma V_{\omega}(s_{t + 1})-V_{\omega}(s_t) δt=rt+γVω(st+1)Vω(st)
    • 更新价值参数 w = w + α ω ∑ t δ t ∇ ω V ω ( s t ) w = w+\alpha_{\omega}\sum_t\delta_t\nabla_{\omega}V_{\omega}(s_t) w=w+αωtδtωVω(st)
    • 更新策略参数 θ = θ + α θ ∑ t δ t ∇ θ log ⁡ π θ ( a t ∣ s t ) \theta=\theta+\alpha_{\theta}\sum_t\delta_t\nabla_{\theta}\log\pi_{\theta}(a_t|s_t) θ=θ+αθtδtθlogπθ(atst)
  • end for

AlphaGo、AlphaGo Zero原理

  • AlphaGo的策略网络架构

    • 在这里插入图片描述
  • 使用行为克隆的方法来初始化策略网络,即从人类数百万棋盘中进行策略网络的初始化学习,初始化后的策略网络能够超过业余选手的水平。该方法的局限性是:agent无法学习到奖励值;agent只能模仿专家行为,对于未见过的棋盘的泛化性效果不好

  • 对经过初始化的策略网络进行强化学习训练

    • 构建两个策略网络,其中一个作为对手,从当前策略网络的先前迭代版本中进行获取
    • 策略网络的梯度更新参考策略梯度的计算公式
  • 状态值网络的训练:用来评估当前局面下的胜率

    • 采样多个回合的数据,然后计算每个时间步的预期累计折扣奖励
    • 状态值网络使用神经网络模型,将状态s输入到神经网络中,计算模型预估的预期累计奖励
    • 使用MSE作为损失函数
  • 推理时,使用蒙特卡洛搜索向前看,从当前节点出发进行搜索,在模拟过程中的每个状态下,计算棋面 S t S_t St下的最佳动作 a t a_t at

    • 计算每个动作的得分, s c o r e ( a ) = Q ( a ) + η ⋅ π ( a ∣ s t ; θ ) 1 + N ( a ) \mathrm{score}(a) = Q(a) + \eta \cdot \frac{\pi(a \mid s_t; \boldsymbol{\theta})}{1 + N(a)} score(a)=Q(a)+η1+N(a)π(ast;θ),其中 π ( a ∣ s t ; θ ) \pi(a \mid s_t; \boldsymbol{\theta}) π(ast;θ)是策略网络输出的动作概率值, Q ( a ) Q(a) Q(a)是通过MCTS计算的action value, N a N_a Na是在当前时刻动作a已经被选择的次数
    • 具体的,player做出一个action A,该action A并非实际执行的action,而是模拟思考的action;此时opponent也做出一个action
    • 使用训练好的状态值网络计算预期奖励V,持续执行下去,对每个新的状态计算预期奖励,将所有状态的预期奖励平均,作为 Q ( a ) Q(a) Q(a)的值
  • AlphaGo Zero

    • AlphaGo Zero相比AlphaGo效果更强
    • AlphaGo Zero未使用行为克隆
    • 使用了MCTS来训练策略网络
    • 在这里插入图片描述

点击查看我的更多AI学习笔记github

http://www.dtcms.com/wzjs/830025.html

相关文章:

  • 电商网站的功能有哪些王也高清壁纸第三季
  • 常州网站建设外包公司怎么开网站做网红
  • 网站ar怎么做wordpress留白
  • 龙华网站建设推广平台做网站要哪些人员
  • 适合中考做的微机题网站做一个购物网页
  • 网站开发要什么软件seo排名优化推荐
  • 动漫网站建设的目的com域名为什么那么贵
  • 网站排名掉了北京外贸推广
  • 完成网站的建设工作总结wordpress同步微信素材
  • 如何利用wordpress编辑网站网站制作哪些
  • 站长一般几个网站南京响应式网站设计
  • 优化网站排名推广滨海新区商城网站建设
  • 火星建站和八亿建站有做装修效果图赚钱的网站吗
  • 哪些公司做外贸网站项目计划书目录
  • 南昌市住房和城乡建设网站深圳建设网站费用
  • 淳安千岛湖建设集团网站查询关键词密度网站的网址有哪些
  • 怎么做淘宝网站赚钱技巧新站如何让百度快速收录
  • 网站制作结构南通 外贸建站
  • php网站开发哪个好赣州网站建设信息
  • 海外求购信息网网站优化定做
  • 建设网站有什么作用是什么广告字在线制作
  • 青岛硅谷网站建设磐石网站建设
  • 域名怎么用到自己做的网站3d动画特效制作软件
  • 网络经营许可证2022最好的百度seo
  • 网站如何做交换链接老闵行在哪里
  • 沈阳市建设工程质量监督局网站惠州做棋牌网站建设找哪家效益快
  • 服装行业网站模板正规的网站建设工作室
  • wordpress 做音乐网站零成本游戏网站开发
  • 山东省春季高考网站建设试题WordPress百度怎么不收录
  • 外贸大型门户网站制作制作网站报价单