强化学习算法总结 2

强化学习算法总结 2

4.动态规划

待解决问题分解成若干个子问题,先求解子问题,然后得到目标问题的解

需要知道整个状态转移函数和价值函数,状态空间离散且有限

  • 策略迭代:
    • 策略评估:贝尔曼期望方程来得到一个策略的 V ( s ) V(s) V(s)
    • 策略提升:
  • 价值迭代

4.1 策略迭代算法

  • 策略评估

V ( S ) = ∑ a π ( a ∣ s ) Q ( s , a ) = ∑ a π ( a ∣ s ) ( r ( a , s ) + γ ∑ s P ( s ′ ∣ s , a ) V π ( S ′ ) ) V(S) = \sum_a \pi(a|s)Q(s,a) = \sum_a \pi(a|s)(r(a,s)+ \gamma\sum_s P(s'|s,a)V^\pi(S')) V(S)=aπ(as)Q(s,a)=aπ(as)(r(a,s)+γsP(ss,a)Vπ(S))

知道状态转移函数和未来状态价值就可以估计当前的状态:我们只需要求解 V ( s ) V(s) V(s)

这里就是利用贝尔曼方程,来不断地更新 V ( s ) V(s) V(s),
V ( S ) k + 1 = ∑ a π ( a ∣ s ) Q ( s , a ) = ∑ a π ( a ∣ s ) ( r ( a , s ) + γ ∑ s P ( s ′ ∣ s , a ) V k ( S ′ ) ) V(S)^{k+1} = \sum_a \pi(a|s)Q(s,a) = \sum_a \pi(a|s)(r(a,s)+ \gamma\sum_s P(s'|s,a)V^k(S')) V(S)k+1=aπ(as)Q(s,a)=aπ(as)(r(a,s)+γsP(ss,a)Vk(S))

  • 策略提升

    只要当前状态下的策略的得到的状态动作函数比 V ( S ) V(S) V(S)高一些
    π ′ ( s ) = a r g m a x a Q π ( s , a ) \pi'(s) = argmax_aQ^\pi(s,a) π(s)=argmaxaQπ(s,a)

  • 策略迭代

π 0 策略评估 V π 0 ( S )策略提升 π 1 \pi^0 策略评估 V\pi_0(S)策略提升 \pi^1 π0策略评估Vπ0S)策略提升π1

  • 代码
    • 策略评估

w h i l e   max ⁡   > θ   d o :   m a x = 0   f o r   s   i n   r a n g e ( S ) :   v = V ( s ) (所有 Q ( s , a )求和 )   V ( S ) = ( b e l l m a n f u c t i o n )   m a x = m a x ( m a x , V ( s ) − v ) while \ \max \ >\theta \ do: \\ \ max = 0 \\ \ for \ s \ in \ range(S):\\ \ v = V(s)(所有Q(s,a)求和)\\ \ V(S) = (bellman fuction)\\ \ max = max(max,V(s) - v) while max >θ do: max=0 for s in range(S): v=V(s)(所有Q(s,a)求和) V(S)=(bellmanfuction) max=max(max,V(s)v)

​ * 策略提升

f o r   s   i n   S : π ( s ) = a r g m a x ( Q ( s , a ) ) for\ s\ in\ S:\\ \pi (s) = argmax(Q(s,a)) for s in Sπ(s)=argmax(Q(s,a))

4.2 价值迭代算法

V k + 1 ( s ) = m a x a { r ( s , a ) + γ ∑ s P V k } V^{k+1}(s) = max_a\{ r(s,a)+\gamma\sum_sPV^k\} Vk+1(s)=maxa{r(s,a)+γsPVk}

可以理解为只执行一轮的策略迭代算法

5 时序差分算法

在数据分布未知的情况下来对模型进行更新,通过智能体与环境的交互进行学习。无模型的强化学习。

  • 在线强化学习:使用当前策略下采样得到的数据进行学习
  • 离线强化学习:使用经验回访池

5.1 时序差分

V ( S t ) = V ( s t ) + α [ G t − V ( s t ) ] V(S_t) = V(s_t) +\alpha[G_t - V(s_t)] V(St)=V(st)+α[GtV(st)]

G t G_t Gt表示整个序列采集结束之后,得到的回报。而很多时候我们是没有办法
V ( s t ) + = α [ r t + γ V ( s t + 1 ) − V ( s t ) ] V(s_t) += \alpha[r_t + \gamma V(s_{t+1}) -V(s_t) ] V(st)+=α[rt+γV(st+1)V(st)]
用时序差分法估计到了状态价值函数 V ( s ) V(s) V(s)

5.2 SARSA

Q ( s , a ) + = α [ r ( s , a ) + γ Q ( s , a ) − Q ( s , a ) ] Q(s,a) += \alpha[r(s,a) + \gamma Q(s,a) - Q(s,a)] Q(s,a)+=α[r(s,a)+γQ(s,a)Q(s,a)]

$$
\begin{equation}
\pi(a|s)=\left{
\begin{aligned}
argmax(Q(s,a))& \ & if \ prob < \ 1- \epsilon \
random & \ & \

\end{aligned}
\right.
\end{equation}
$$

5.3 多步Sarsa

MC方法是无偏估计但是方差比较大

TD 是有偏估计,因为每一个对下一个状态的价值都是估计的
Q ( s t , a t ) + = α [ r t + γ Q ( s t + 1 ) + γ 2 Q ( s t + 2 ) + γ 3 Q ( s t + 3 ) . . . − Q ( s , a ) ] Q(s_t,a_t)+= \alpha[ r_t + \gamma Q(s_{t+1}) + \gamma^2 Q(s_{t+2})+ \gamma^3 Q(s_{t+3})... -Q(s,a) ] Q(st,at)+=α[rt+γQ(st+1)+γ2Q(st+2)+γ3Q(st+3)...Q(s,a)]
代码实现上,是前几次不执行只是进行数据的收集,第n次开始进行多步Sarsa

5.4 Q-learning

Q ( s , a ) + = α [ r ( s , a ) + γ m a x a Q ( s , a ) − Q ( s , a ) ] Q(s,a) += \alpha[r(s,a) + \gamma max_aQ(s,a) - Q(s,a)] Q(s,a)+=α[r(s,a)+γmaxaQ(s,a)Q(s,a)]

Q-learning的时序差分算法在算下一个状态的Q的时候会取最大的那个

Sarsa会先 ϵ − g r e e d y \epsilon -greedy ϵgreedy 选择s,a然后计算TD_error,然后估计Q(s’,a’)(比如放在环境中跑一下)

Q-learning next_s和a之后,会找到最大的Q(s’,a’),不依赖于 ϵ − g r e e d y \epsilon -greedy ϵgreedy 的a

  • 在线策略算法和离线策略算法

    在线策略算法:行为策略(采样数据的策略)和 目标策略(用于更新的策略)是同一个策略

    离线策略算法:行为策略和目标策略并不是同一个策略

7 DQN算法

Q网络的损失函数
w ∗ = a r g m i n w 1 2 N ∑ i = 1 N [ r i + γ m a x i Q w ( s i ′ , a ′ ) − Q w ( s i , a i ) ] w^* = argmin_w \frac{1}{2N}\sum_{i=1}^N[r_i+\gamma max_i Q_w(s'_i,a') - Q_w(s_i,a_i)] w=argminw2N1i=1N[ri+γmaxiQw(si,a)Qw(si,ai)]

  • 经验回放

    制作一个数据回放缓冲区,每次环境中得到的<s,a,r,s’>都进行存放

  • 目标网络

​ 采用TD_error作为我们的误差,但是包含着网络的输出,所以在更新网络参数的时候,目标也在不断地更新

​ 因为优化目标是让
Q → r + γ m a x Q ( s ′ + a ′ ) Q \rightarrow r+\gamma max Q(s'+a') Qr+γmaxQ(s+a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A2C(Advantage Actor-Critic)算法是一种常用的强化学习算法,旨在通过同时训练一个策略网络(Actor)和一个价值网络(Critic)来实现优化。 在A2C算法中,Actor网络用于学习动作策略,而Critic网络用于评估状态的价值。Actor网络根据当前状态选择一个动作,并生成一个策略分布。Critic网络根据当前状态估计该状态的价值。这两个网络共同工作,通过优化目标函数来提高策略和价值的准确性。 A2C算法的训练过程可以分为两个步骤:生成样本和更新参数。生成样本时,Actor网络根据当前状态生成动作,并与环境进行交互,得到下一个状态和奖励。然后,使用这些样本计算出优势函数,即当前状态的动作价值与预期价值之间的差异。 更新参数时,使用生成的样本来计算Actor和Critic网络的损失函数。Actor损失函数一般使用策略梯度方法,通过最大化优势函数来更新策略网络的参数。Critic损失函数一般使用均方误差损失,通过最小化实际价值与预期价值之间的差异来更新价值网络的参数。这两个网络的参数可以使用梯度下降法进行更新。 与A3C(Asynchronous Advantage Actor-Critic)算法不同,A2C算法是一种1-step方法,即每次更新只考虑当前的状态和动作。而A3C算法是一种n-step方法,考虑了未来多个状态和动作的影响。因此,A3C相比于A2C在更新参数的方式上有所不同,但都是基于Actor-Critic的思想。 总结来说,A2C算法是一种结合了Actor和Critic网络的强化学习算法,通过不断生成样本和更新网络参数来提高策略和价值的准确性。它是一种1-step方法,与A3C算法相比,在更新参数的方式上有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [强化学习算法:AC系列详解](https://blog.csdn.net/qq_29176963/article/details/104975905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值