深度强化学习DRL的学习笔记(随缘更新)

本文主要学习资料为B站视频、相关GitHub代码以及有心人的学习笔记,相关链接如下:

  1. 【王树森】深度强化学习(DRL)
  2. 王树森深度强化学习GitHub仓库
  3. 李宏毅深度强化学习(国语)课程(2018)
  4. jessie_weiqing的李宏毅DRL学习笔记

一、专业术语

Agent: 一个嵌入在环境中的能够通过Action改变环境State的系统。例如:在游戏中的马里奥。

State(S): State可以看作是Agent过去的所有Action对环境影响的集合。未来的State取决于当前的State。State空间(S)包含从过去(已知)到未来(可能)所有的State。
如果当前为时间节点为t,则从现在到过去的State均为已观测值,用小写字母表示: s 1 , ⋯   , s t s_1,\cdots,s_{t} s1,,st;未来的State因为尚未发生,因此为随机变量,用大写字母表示: S t + 1 , S t + 2 , ⋯ S_{t+1},S_{t+2},\cdots St+1,St+2,

Action(A): Action是Agent的动作。Action空间(A)包含Agent所有可能的Action,Action的构成可以是离散集,如{上,下,左,右},也可以是连续集,如[1,100]。
如果当前为时间节点为t,则从现在到过去的Action均为已观测值,用小写字母表示: a 1 , ⋯   , a t a_1,\cdots,a_{t} a1,,at;未来的Action因为尚未发生,因此为随机变量,用大写字母表示: A t + 1 , A t + 2 , ⋯ A_{t+1},A_{t+2},\cdots At+1,At+2,

Reward(R): Reward是Agent在特定环境下做出Action的奖励值。强化学习的目标就是让获得的Reward尽量高。
如果当前为时间节点为t,则从现在到过去的Reward均为已观测值,用小写字母表示: r 1 , ⋯   , r t r_1,\cdots,r_{t} r1,,rt;未来的Reward取决于未来的State和Action,因此为随机变量,用大写字母表示: R t + 1 , R t + 2 , ⋯ R_{t+1},R_{t+2},\cdots Rt+1,Rt+2,

Policy function(π): 是一个条件概率函数: π ( a ∣ s ) = P ( A = a ∣ S = s ) π(a|s)=P(A=a|S=s) π(as)=P(A=aS=s)表示当观察到State为s时,做出Action为a的概率。
注:强化学习学习的就是Policy。AI可以通过Policy函数来控制Agent的Action。Policy最好是随机的。

State transition(p): 在特定环境中,通过Action(A=a)将State(S=s)转化为State(S’)。状态转移函数是一个条件概率密度函数: p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s'|s,a)=P(S'=s'|S=s,A=a) p(ss,a)=P(S=sS=s,A=a)。状态转移可以是确定的也可以是随机的,通常为随机的。状态转移的随机性来源于环境。

Environment与Agent的交互:在t时,环境会告诉Agent处于一个State( S = s t S=s_t S=st),Agent做出相应的Action( A = a t A=a_t A=at),环境根据Action给Agent相应的Reward( R = r t R=r_t R=rt),同时环境会更新State( S = s t + 1 S=s_{t+1} S=st+1),以此类推。

随机性的来源
1.Action有随机性。通过Policy对Action进行随机抽样。
2.State transition有随机性。环境通过状态转移函数得到转移到下一状态的概率并进行随机抽取。

Trajectory: 轨迹,表示每一步的(State,Action,Reward)。

以下为重要概念:

Return(U): aka cumulative future reward. 表示未来的累计奖励: U t = R t + R t + 1 + R t + 2 + R t + 3 + ⋯ U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+\cdots Ut=Rt+Rt+1+Rt+2+Rt+3+由于未来的奖励的重要性低于当前的奖励,因此强化学习中一般会使用Discounted return(aka cumulative discounted future reward)。定义discounted rate(γ∈[0,1],超参数),若未来的奖励与现在同等重要则γ=1。Discounted return表示为: U t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + ⋯ U_t=R_t+γR_{t+1}+γ^2R_{t+2}+γ^3R_{t+3}+\cdots Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+

Action-value function( Q π Q_π Qπ): Q π ( s t , a t ) Q_π(s_t,a_t) Qπ(st,at)测量了,在给定Policy(π)与State( s t s_t st)的情况下,Action( a t a_t at)的价值。用于比较不同Action的优劣。通过求期望的运算可以将未来的随机变量消除,则可以通过给定的π与当前的状态 s t s_t st决定动作 a t a_t at的价值。 Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ) ] Q_π(s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t)] Qπ(st,at)=E[UtSt=st,At=at)]

Optimal action-value function( Q ∗ Q^* Q): 最优动作价值函数是使得 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ(st,at)最大的 Q π Q_π Qπ。主要用于判断动作的好坏。 Q ∗ ( s t , a t ) = max ⁡ π Q π ( s t , a t ) Q^*(s_t,a_t)=\max \limits_{π}Q_π(s_t,a_t) Q(st,at)=πmaxQπ(st,at)

State-value function( V π V_π Vπ): 状态价值函数测量了,在给定Policy(π)情况下,State( s t s_t st)的价值(好坏程度)。可用于判断当前局势的好坏。通过求期望的运算可以将未来的动作(随机变量A)消除,则可以通过给定的π决定当前状态 s t s_t st的价值。 V π ( s t ) = E A [ Q π ( s t , A ) ] V_π(s_t)=E_A[Q_π(s_t,A)] Vπ(st)=EA[Qπ(st,A)]注: V π V_π Vπ能够评价π的好坏,如果π越好 E S [ V π ( S ) ] E_S[V_π(S)] ES[Vπ(S)]越大。

小结:

强化学习的目的就是如何控制Agent,让Agent怎么基于当前状态s做出最优的动作a,争取最终得到最多的奖励r。强化学习通常让AI学习Policy function( π ( a ∣ s ) π(a|s) π(as))或者学习Optimal action-value function( Q ∗ ( s , a ) Q^*(s,a) Q(s,a))。前者通过输入当前状态s,算出每一个动作的概率π,进而进行抽样得到动作a;后者则可直接判断当前状态s下所有动作的好坏,进而选出最优的动作a。

二、Value-based learning 价值学习

Deep Q-Network(DQN)

目标:最大化未来的Reward
问题:根据 Q ∗ Q^* Q得到每一个动作的平均回报,选择平均汇报最高的动作a
挑战: Q ∗ Q^* Q难以直接得到,因此价值学习的目的就是获得近似的 Q ∗ Q^* Q函数
DQN:用神经网络 Q ( s , a ; w ) Q(s,a;\bm{w}) Q(s,a;w)近似 Q ∗ ( s , a ) Q^*(s,a) Q(s,a)函数。DQN的输出是对每一个动作的打分。
训练:
TD算法,无需完成全部任务也能够更新模型的参数。核心思想就是让TD error尽可能等于0。在深度强化学习中, 有如下的公式: Q ( s t , a t ; w ) ≈ r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) Q(s_t,a_t;\bm{w})≈r_t+γ \cdot Q(s_{t+1},a_{t+1};\bm{w}) Q(st,at;w)rt+γQ(st+1,at+1;w)其中,左式是从t时刻看的,右式是从t+1时刻看的。
具体步骤:

  1. 已知预测(DQN): Q ( s t , a t ; w ) Q(s_t,a_t;\bm{w}) Q(st,at;w)
  2. TD target: y t = r t + γ ⋅ Q ( s t + 1 , a t + 1 ; w ) = r t + γ ⋅ max ⁡ a Q ( s t + 1 , a ; w ) y_t=r_t+γ \cdot Q(s_{t+1},a_{t+1};\bm{w})=r_t+γ \cdot \max \limits_{a} Q(s_{t+1},a_{};\bm{w}) yt=rt+γQ(st+1,at+1;w)=rt+γamaxQ(st+1,a;w)
  3. Loss: L t = 1 2 [ Q ( s t , a t ; w ) − y t ] 2 L_t=\frac{1}{2} [Q(s_t,a_t;\bm{w})-y_t]^2 Lt=21[Q(st,at;w)yt]2
  4. 梯度下降: w t + 1 = w t − α ⋅ ∂ L t ∂ w ∣ w = w t \bm{w_{t+1}}=\bm{w_t}-α \cdot \frac{∂L_t}{∂\bm{w}} |\bm{w}=\bm{w_t} wt+1=wtαwLtw=wt

三、Policy-based learning 策略学习

Policy函数π会根据输入的状态s输出每一个可能动作的概率值。Agent就可以根据概率对动作进行抽样。只要有一个好的Policy函数,就可以自动控制Agent的动作了。但Policy函数有时很难直接得到,因此仍然可以选择使用神经网络去近似Policy函数。
用神经网络 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)近似 π ( a ∣ s ) π(a|s) π(as)函数。其中, θ \bm{θ} θ为神经网络的参数,随机初始化,通过不断学习进行改进。
V π ( s t ) V_π(s_t) Vπ(st)中的 π π π替换成神经网络 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ),则 V π ( s t ) V_π(s_t) Vπ(st)可以近似写成: V π ( s ; θ ) = ∑ a π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) V_π(s;\bm{θ})=\sum_{a} π(a|s;\bm{θ}) \cdot Q_π(s,a) Vπ(s;θ)=aπ(as;θ)Qπ(s,a)该函数可用于评价状态s与策略网络的好坏。给定状态s,策略网络越好则 V π ( s ; θ ) V_π(s;\bm{θ}) Vπ(s;θ)的值越大。优化策略网络的方法为改进 θ \bm{θ} θ。因此,可以通过对状态S求期望进而消除随机变量S,得到关于 θ \bm{θ} θ的函数: J ( θ ) = E S [ V ( S ; θ ) ] J(\bm{θ})=E_S[V(S;\bm{θ})] J(θ)=ES[V(S;θ)]该函数只用于评价策略网络的好坏。

Policy gradient ascent

策略梯度上升法是改进 θ \bm{θ} θ的方法之一,其主要步骤如下:

  1. 观测到状态s
  2. 梯度上升更新: θ ← θ + β ⋅ ∂ V ( s ; θ ) ∂ θ \bm{θ} \gets \bm{θ}+β \cdot \frac{∂V(s;\bm{θ})}{∂\bm{θ}} θθ+βθV(s;θ),其中 ∂ V ( s ; θ ) ∂ θ \frac{∂V(s;\bm{θ})}{∂\bm{θ}} θV(s;θ)为策略梯度(Policy gradient)

Policy gradient 策略梯度

策略梯度的两种近似形式:

Form 1: ∂ V ( s ; θ ) ∂ θ = ∑ a ∂ π ( a ∣ s ; θ ) ∂ θ ⋅ Q π ( s , a ) \frac{∂V(s;\bm{θ})}{∂\bm{θ}}=\sum_{a} \frac{∂π(a|s;\bm{θ})}{∂\bm{θ}} \cdot Q_π(s,a) θV(s;θ)=aθπ(as;θ)Qπ(s,a)

Form 2: ∂ V ( s ; θ ) ∂ θ = E A [ ∂ l o g π ( A ∣ s , θ ) ∂ θ ⋅ Q π ( s , A ) ] \frac{∂V(s;\bm{θ})}{∂\bm{θ}}=E_A[\frac{∂ log π(A|s,\bm{θ})}{∂\bm{θ}} \cdot Q_π(s,A)] θV(s;θ)=EA[θlogπ(As,θ)Qπ(s,A)]

Form 1适合action space A为离散的;Form 2适合连续的动作。
Form 2的期望是通过蒙特卡洛近似计算出来的,具体步骤如下:

  1. 随机抽样得到一个动作 a ^ \hat{a} a^,这是根据概率函数 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)抽取的。
  2. 将需要求期望的式子记为 g ( a ^ , θ ) = ∂ l o g π ( a ^ ∣ s , θ ) ∂ θ ⋅ Q π ( s , a ^ ) g(\hat{a},\bm{θ})=\frac{∂ log π(\hat{a}|s,\bm{θ})}{∂\bm{θ}} \cdot Q_π(s,\hat{a}) g(a^,θ)=θlogπ(a^s,θ)Qπ(s,a^) ,由于 a ^ \hat{a} a^是一个确定的数,因此直接带入计算即可。
    由于 E [ g ( A , θ ) ] = ∂ V ( s ; θ ) ∂ θ E[g(A,\bm{θ})]=\frac{∂V(s;\bm{θ})}{∂\bm{θ}} E[g(A,θ)]=θV(s;θ),因此 g ( a ^ , θ ) g(\hat{a},\bm{θ}) g(a^,θ) ∂ V ( s ; θ ) ∂ θ \frac{∂V(s;\bm{θ})}{∂\bm{θ}} θV(s;θ)的无偏估计。
  3. 蒙特卡洛近似,即使用 g ( a ^ , θ ) g(\hat{a},\bm{θ}) g(a^,θ)近似 ∂ V ( s ; θ ) ∂ θ \frac{∂V(s;\bm{θ})}{∂\bm{θ}} θV(s;θ)
  4. 这个近似也可以用于离散的动作

算法

  1. 观察到当前状态 s t s_t st
  2. 根据 π ( ⋅ ∣ s t ; θ t ) π(\cdot|s_t;\bm{θ_t}) π(st;θt)得到概率,随机抽样得到一个动作 a t a_t at
  3. 计算动作价值函数的值,结果记作: q t ≈ Q π ( s t , a t ) q_t≈Q_π(s_t,a_t) qtQπ(st,at)
  4. 计算策略网络的梯度: d θ , t = ∂ l o g π ( a t ∣ s t , θ ) ∂ θ ∣ θ = θ t \bm{d}_{\bm{θ},t}=\frac{∂ log π(a_t|s_t,\bm{θ})}{∂\bm{θ}} |\bm{θ}=\bm{θ_t} dθ,t=θlogπ(atst,θ)θ=θt
  5. 蒙特卡洛近似策略梯度: g ( a t , θ t ) = q t ⋅ d θ , t \bm{g}(a_t,\bm{θ}_t)=q_t \cdot \bm{d}_{\bm{θ},t} g(at,θt)=qtdθ,t
  6. 更新策略网络参数: θ t + 1 ← θ t + β ⋅ g ( a t , θ t ) \bm{θ}_{t+1} \gets \bm{θ}_t+β \cdot \bm{g}(a_t,\bm{θ}_t) θt+1θt+βg(at,θt)

算法第三步,近似计算 q t q_t qt的方法有两个:

  1. Reinforce算法:记录一轮游戏的Trajectory,得到 u t u_t ut,去近似 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ(st,at),则 q t = u t q_t=u_t qt=ut
  2. 用另一个神经网络近似 Q π ( s t , a t ) Q_π(s_t,a_t) Qπ(st,at),见下一节
  3. 注:有的时候 q t q_t qt可能需要减去一个baseline,表现会更好

Proximal Policy Optimization( PPO )

On-policy: 需要学习的Agent和与环境进行交互的Agent是同一个
Off-policy: 需要学习的Agent和与环境进行交互的Agent不是同一个

四、Actor-Critic Methods

Policy network(actor):
用神经网络 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)近似 π ( a ∣ s ) π(a|s) π(as)函数。
Value network(critic):
用神经网络 q ( s , a ; w ) q(s,a;\bm{w}) q(s,a;w)近似 Q π ( s , a ) Q_π(s,a) Qπ(s,a)函数。
Actor-Critic Methods:
将两个网络结合起来,同时训练: V π ( s ) = ∑ a π ( a ∣ s ) ⋅ Q π ( s , a ) ≈ ∑ a π ( a ∣ s ; θ ) ⋅ q ( s , a ; w ) V_π(s)=\sum_{a} π(a|s) \cdot Q_π(s,a)≈\sum_{a} π(a|s;\bm{θ}) \cdot q(s,a;\bm{w}) Vπ(s)=aπ(as)Qπ(s,a)aπ(as;θ)q(s,a;w)

训练

状态价值函数近似记作: V ( s ; θ , w ) = ∑ a π ( a ∣ s ; θ ) ⋅ q ( s , a ; w ) V(s;\bm{θ},\bm{w})=\sum_{a} π(a|s;\bm{θ}) \cdot q(s,a;\bm{w}) V(s;θ,w)=aπ(as;θ)q(s,a;w)Actor-Critic Methods需要学习两个神经网络,学习 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)是为了让 V ( s ; θ , w ) V(s;\bm{θ},\bm{w}) V(s;θ,w)的值更大,为了学习 π ( a ∣ s ; θ ) π(a|s;\bm{θ}) π(as;θ)需要 q ( s , a ; w ) q(s,a;\bm{w}) q(s,a;w)作为裁判来打分;学习 q ( s , a ; w ) q(s,a;\bm{w}) q(s,a;w)是为了打分更加精准。神经网络更新步骤:

  1. 观察到当前状态 s t s_t st
  2. 根据 π ( ⋅ ∣ s t ; θ t ) π(\cdot|s_t;\bm{θ_t}) π(st;θt)得到概率,随机抽样得到一个动作 a t a_t at
  3. Agent执行动作 a t a_t at,此时可以观测到新状态 s t + 1 s_{t+1} st+1和回报 r t r_t rt
  4. 根据 r t r_t rt,用TD算法更新 w \bm{w} w(in value network)
  5. 用policy gradient算法更新 θ \bm{θ} θ(in policy network)
Update value network q q q using TD
  1. 用价值网络分别给动作 a t a_t at a t + 1 a_{t+1} at+1打分,得到 q ( s t , a t ; w t ) q(s_t,a_t;\bm{w}_t) q(st,at;wt) q ( s t + 1 , a t + 1 ; w t ) q(s_{t+1},a_{t+1};\bm{w}_t) q(st+1,at+1;wt)
  2. 计算TD target y t = r t + γ ⋅ q ( s t + 1 , a t + 1 ; w t ) y_t=r_t+γ \cdot q(s_{t+1},a_{t+1};\bm{w}_t) yt=rt+γq(st+1,at+1;wt)
  3. 计算Loss L ( w ) = 1 2 [ q ( s t , a t ; w ) − y t ] 2 L(\bm{w})=\frac{1}{2} [q(s_t,a_t;\bm{w})-y_t]^2 L(w)=21[q(st,at;w)yt]2
  4. 梯度下降: w t + 1 = w t − α ⋅ ∂ L ( w ) ∂ w ∣ w = w t \bm{w_{t+1}}=\bm{w_t}-α \cdot \frac{∂L(\bm{w})}{∂\bm{w}} |\bm{w}=\bm{w_t} wt+1=wtαwL(w)w=wt
Update policy network π π π using policy gradient
  1. 定义 g ( a , θ ) = ∂ l o g π ( a ∣ s t , θ ) ∂ θ ⋅ q ( s t , a ; w ) \bm{g}(a,\bm{θ})=\frac{∂ log π(a|s_t,\bm{θ})}{∂\bm{θ}} \cdot q(s_t,a;\bm{w}) g(a,θ)=θlogπ(ast,θ)q(st,a;w)
  2. 根据 π ( ⋅ ∣ s t ; θ t ) π(\cdot|s_t;\bm{θ_t}) π(st;θt)得到概率,随机抽样得到一个动作 a a a,这样得到的 a a a才能使 g ( a , θ ) \bm{g}(a,\bm{θ}) g(a,θ)具有无偏性。
  3. 梯度上升: θ t + 1 ← θ t + β ⋅ g ( a , θ t ) \bm{θ}_{t+1} \gets \bm{θ}_t+β \cdot \bm{g}(a,\bm{θ}_t) θt+1θt+βg(a,θt)

算法总结

  1. 观察到当前状态 s t s_t st,根据 π ( ⋅ ∣ s t ; θ t ) π(\cdot|s_t;\bm{θ_t}) π(st;θt)得到所有可能动作的概率,进而进行随机抽样得到一个动作 a t a_t at
  2. Agent执行动作 a t a_t at,环境会告知新状态 s t + 1 s_{t+1} st+1和回报 r t r_t rt
  3. 输入新状态 s t + 1 s_{t+1} st+1,根据 π ( ⋅ ∣ s t + 1 ; θ t ) π(\cdot|s_{t+1};\bm{θ_t}) π(st+1;θt)得到所有可能动作的概率,进而进行随机抽样得到一个动作 a ~ t + 1 \tilde{a}_{t+1} a~t+1
    :此时 a ~ t + 1 \tilde{a}_{t+1} a~t+1并不一定是下一步需要执行的动作,只是下一步动作的预测。算法每一轮迭代只会做一个动作 a t a_t at,只得到一个奖励 r t r_t rt,只更新一次参数。
  4. 用价值网络分别给动作 a t a_t at a ~ t + 1 \tilde{a}_{t+1} a~t+1打分,得到 q t ( s t , a t ; w t ) q_t(s_t,a_t;\bm{w}_t) qt(st,at;wt) q t + 1 ( s t + 1 , a ~ t + 1 ; w t ) q_{t+1}(s_{t+1},\tilde{a}_{t+1};\bm{w}_t) qt+1(st+1,a~t+1;wt)
  5. 计算TD error δ t = q t − ( r t + γ ⋅ q t + 1 ) = q t − T D t a r g e t δ_t=q_t-(r_t+γ \cdot q_{t+1})=q_t-TD target δt=qt(rt+γqt+1)=qtTDtarget
  6. 对价值网络求梯度: d w , t = ∂ q ( s t , a t ; w ) ∂ w ∣ w = w t \bm{d}_{\bm{w},t}=\frac{∂ q(s_t,a_t;\bm{w})}{∂\bm{w}} |\bm{w}=\bm{w_t} dw,t=wq(st,at;w)w=wt
  7. 梯度下降更新价值网络: w t + 1 = w t − α ⋅ δ t ⋅ d w , t \bm{w_{t+1}}=\bm{w_t}-α \cdot δ_t \cdot \bm{d}_{\bm{w},t} wt+1=wtαδtdw,t
  8. 对策略网络求梯度: d θ , t = ∂ l o g π ( a t ∣ s t , θ ) ∂ θ ∣ θ = θ t \bm{d}_{\bm{θ},t}=\frac{∂ log π(a_t|s_t,\bm{θ})}{∂\bm{θ}} |\bm{θ}=\bm{θ_t} dθ,t=θlogπ(atst,θ)θ=θt
  9. 梯度上升更新策略网络: θ t + 1 = θ t + β ⋅ q t ⋅ d θ , t \bm{θ}_{t+1}=\bm{θ}_t+β \cdot q_t \cdot \bm{d}_{\bm{θ},t} θt+1=θt+βqtdθ,t
    :此时也可用TD error δ t δ_t δt代替 q t q_t qt,进行梯度上升,即: θ t + 1 = θ t + β ⋅ δ t ⋅ d θ , t \bm{θ}_{t+1}=\bm{θ}_t+β \cdot δ_t \cdot \bm{d}_{\bm{θ},t} θt+1=θt+βδtdθ,t,两者的期望是相同的,使用 δ t δ_t δt的算法称为baseline,现在普遍用的是这个。

五、AlphaGo基本原理

围棋游戏:
State:黑、白、空三种情况的矩阵。可用取值为0和1的19×19×2的tensor表示。其中一个19×19的矩阵可以表示一种颜色棋子的有无。然而实际上AlphaGo使用的是19×19×48的tensor来表示状态,其中包含了很多其他信息。
为了解释性,这里讲解的是19×19×17的tensor表示的State。
19×19为围棋棋盘的容量。这可以看做有17个棋盘大小的矩阵。其中,有1个矩阵用于表示下一步是黑子还是白子(全1为黑,全0为白);8个矩阵表示黑子的位置,分别表示当前步与前7步黑子的分布;另8个矩阵表示白子的位置,分别表示当前步与前7步白子的分布。
Action:围棋游戏的动作就是放棋子,因此动作空间 A ∈ { 1 , 2 , ⋯   , 361 } A∈\{1,2,\cdots,361\} A{1,2,,361}

AlphaGo训练

  1. behavior cloning:为了节约时间,AlphaGo先通过学习人类的策略来构建初步的策略网络。这一步运用的是一种监督学习的方法,属于模仿学习不是强化学习。模仿学习是没有Reward概念的,Agent只需要模仿人的动作就好了
  2. policy gradient:用策略梯度算法进一步训练策略网络。具体就是用两个策略网络来互相对抗。当游戏没有结束时,每一步的奖励是0,赢得游戏则奖励为+1,输掉则为-1。
  3. AlphaGo没有使用Actor-Critic Methods,而是先训练好policy network后,再用policy network去训练value network

AlphaGo与人类下棋

AlphaGo下棋时,使用了policy network与value network进行蒙特卡洛树搜索(MCTS)。MCTS步骤:

  1. Selection:观测到当前棋盘的状态,按照动作的分数选出一个动作a,这个动作只是假想的,并不一定会执行。这里的分数计算有一个很巧妙的公式
  2. Expansion:假想对手走一步,根据策略网络得到的概率去走,得到新状态
  3. Evaluation:价值网络给动作a打分v,让游戏进行到结束得到结果r,最后让 v + r 2 \frac{v+r}{2} 2v+r作为动作a的最终分数
  4. Backup:用 v + r 2 \frac{v+r}{2} 2v+r更新动作a的分数
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值