我是靠谱客的博主 满意小刺猬,最近开发中收集的这篇文章主要介绍【学习笔记】强化学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定义

  • 强化学习主要由智能体agent和环境environment两部分组成。agent代表有行为能力的物体。环境指agent执行动作所处的场景。
  • 外部环境提供的信息很少,且没有带标签的监督信息,agent需不断试错来尝试不同的动作,根据采取的策略在交互过程中获得的奖励或惩罚信号,自主发现和选择最大回报的动作。
  • 强化学习的目的是寻找一个最优策略,使智能体在运行过程中所获得的累积奖励达到最大。
  • 强化学习可用四元组 < S , A , P , R > <S,A,P,R> <S,A,P,R>表示。时刻 t t t,agent 所状态 s t ∈ S s_t in S stS,根据策略选择的动作 a t ∈ A a_t in A atA,完成动作后环境给agent的强化信号 r t ∈ R r_t in R rtR,环境状态根据状态转移函数 P P P变为 s t + 1 s_{t+1} st+1

分类

根据是否需要对真实环境建模

  1. 有模型学习:根据环境中的经验,构建虚拟世界
  2. 免模型学习:直接与真实环境进行交互,需等待真实环境反馈

按决策方式分类

  1. 基于策略选代:agent会制定一套动作策略,根据策略进行操作,强化学习算法直接对策略进行优化,使制定的策略能获得最大的奖励。(Policy Gradients)
  2. 基于价值迭代:agent不需要制定显式的策略而是维护一个价值表格或价值函数,通过该表格或函数来选取价值最大的动作。适用于不连续、离散、行为集合规模小的场景。(Q-Learning、Sarsa)

状态转移概率未知

  1. 蒙特卡洛强化学习:需经历完整的状态序列后再更新状态的真实价值。
  2. 时序差分强化学习:以采样的方式得到不完整序列,估计某状态在该状态停列完整后可能得到的收益,并通过不断的采样持续更新价值。

Q-Learning

Q-Learning是非常经典的时序差分强化学习算法,也是基于价值迭代的强化学习算法。在Q-Learning中,我们需要定义策略的动作代价函数(Q函数),以表示不同状态下不同动作的价值。
记策略 π pi π的动作价值函数为 Q π ( s t , a t ) Q^{pi}left(s_{t}, a_{t}right) Qπ(st,at),它表示在状态 s t s_t st下,执行动作 a t a_t at会带来的累积奖励 G t G_t Gt的期望,具体公式为
Q π ( s t , a t ) = E [ G t ∣ s t , a t ] = E [ r t + γ r t + 1 + γ 2 r t + 2 + ⋯ ∣ s t , a t ] = E [ r t + γ ( r t + 1 + γ r t + 2 + ⋯   ) ∣ s t , a t ] = E [ r t + γ Q π ( s t + 1 , a t + 1 ) ∣ s t , a t ] begin{aligned} Q^{pi}left(s_{t}, a_{t}right) &=mathbb{E}left[G_{t} mid s_{t}, a_{t}right] \ &=mathbb{E}left[r_{t}+gamma r_{t+1}+gamma^{2} r_{t+2}+cdots mid s_{t}, a_{t}right] \ &=mathbb{E}left[r_{t}+gammaleft(r_{t+1}+gamma r_{t+2}+cdotsright) mid s_{t}, a_{t}right] \ &=mathbb{E}left[r_{t}+gamma Q^{pi}left(s_{t+1}, a_{t+1}right) mid s_{t}, a_{t}right] end{aligned} Qπ(st,at)=E[Gtst,at]=E[rt+γrt+1+γ2rt+2+st,at]=E[rt+γ(rt+1+γrt+2+)st,at]=E[rt+γQπ(st+1,at+1)st,at]
累积奖励 G t G_t Gt的计算不仅考虑当下 t t t时刻的动作 a t a_t at的奖励 r t r_t rt,还会累积计算对之后决策带来的影响。
由于需要知道某一状态的所有可能出现的后续状态以及对应的奖励值,还要进行全宽度的回溯来更新状态的价值,这种方法无法在状态转移函数未知或者大规模问题中使用。

Q-Learning算法采用类似于梯度下降法的更新方式: Q ∗ ( s t , a t ) ← Q ∗ ( s t , a t ) + α ( r t + γ max ⁡ a t + 1 Q ∗ ( s t + 1 , a t + 1 ) − Q ∗ ( s t , a t ) ) Q^{*}left(s_{t}, a_{t}right) leftarrow Q^{*}left(s_{t}, a_{t}right)+alphaleft(r_{t}+gamma max _{a_{t+1}} Q^{*}left(s_{t+1}, a_{t+1}right)-Q^{*}left(s_{t}, a_{t}right)right) Q(st,at)Q(st,at)+α(rt+γmaxat+1Q(st+1,at+1)Q(st,at))
动作选择策略可以采用贪心算法,即每次都会选择获得最大价值的动作;也可以采用 ξ xi ξ贪心策略,即以 ξ xi ξ的概率随机采取动作,以 1 − ξ 1-xi 1ξ的概率选择获得最大价值的动作。

Sarsa算法

Sarsa是现实策略学习的时序差分强化学习算法。在状态 s t s_t st下,agent根据当前策略执行动作 a t a_t at,获得奖励 r t r_t rt;在更新 Q ( s t , a t ) Qleft(s_{t}, a_{t}right) Q(st,at)时,agent仍根据该策略选择在状态 s t + 1 s_{t+1} st+1产生一个新的动作 a t + 1 a_{t+1} at+1。Sarsa和Q-Learning非常相似,它们的决策部分完全相同,只有策略更新方式不同。

DQN

DQN是指基于深度学习的Q-Learning算法,主要结合了价值函数近似与神经网络技术,并采用经历回放的方法进行网络训练。在Q-Learning中用表格存储每个状态 s s s下采取动作 a a a获得的奖励,即动作价值函数 Q ( s , a ) Q(s,a) Q(s,a)。但在状态量巨大或连续的任务中会遇到维度灾难问题。DQN建立一个网络 Q Q Q来近似计算状态或行为的价值,接收状态变量 s s s和行为变量 a a a作为输入, Q ( s , a ; θ ) ≈ Q π ( s , a ) Q(s,a;theta) approx Q_{pi}(s,a) Q(s,a;θ)Qπ(s,a)。损失函数为 E [ ( r t + γ max ⁡ a t + 1 Q ( s t + 1 , a t + 1 ; θ ) − Q ( s t , a t ; θ ) ) 2 ] Eleft[left(r_{t}+gamma max _{a_{t+1}} Qleft(s_{t+1}, a_{t+1};theta right)-Qleft(s_{t}, a_{t};thetaright)right)^2right] E[(rt+γmaxat+1Q(st+1,at+1;θ)Q(st,at;θ))2]
DQN采用经历回放的训练方法,从历史数据中随机采样;而Q-Learning则是直接采用下一个状态的数据进行学习。

应用

  1. AlplaGo:通过设计策略网络和价值网络来指导蒙特卡洛树搜索方法。第一阶段,基于有监督学习使用强化学习中的策略梯度算法优化策略网络;第二阶段,基于大量的自我对弈棋局,使用蒙特卡洛策略评估方法得到新的价值网络。
  2. 神经网络架构搜索:先定义一个控制器作为agent,将生成一个网络架构的过程视为一个动作,将每轮对搜索出的网络架构的评估结果作为动作奖励。

缺点

  1. 在一些领域很难超越在特定任务中设计的监督学习方法。
  2. 基于免模型的方法,数据利用率差,需要大量样本训练。

最后

以上就是满意小刺猬为你收集整理的【学习笔记】强化学习的全部内容,希望文章能够帮你解决【学习笔记】强化学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部