第16章 强化学习

第16章 强化学习

16.1 任务与奖赏

强化学习任务通常用马尔可夫决策过程(Markov Decision Process,MDP)来描述:及其处于缓解E中,状态空间为X,其中每个状态 x ∈ X x \in X xX是机器感知到缓解的描述,机器能采取的动作构成了动作空间A,若某个动作 a ∈ A a \in A aA作用在当前状态 x x x上,则潜在的转移函数 P P P将使得环境从当前状态按某种概率转移到另一种状态。

在转移到另一个状态的同时,环境会根据潜在的奖赏(reward)函数 R R R反馈给机器一个奖赏。

强化学习任务对应了四元组 E = ⟨ X , A , P , R ⟩ E = \left\langle X,A,P,R \right\rangle E=X,A,P,R,其中 P : X × A × X → R P:X \times A \times X \rightarrow R P:X×A×XR指定了状态转移概率; R : X × A × X → R R:X \times A \times X\mathbb{\rightarrow R} R:X×A×XR指定了奖赏。

机器通过在环境中不断地尝试而学得一个策略 π \pi π,根据这个策略,在状态 x x x下就能得知要执行的动作 a = π ( x ) a = \pi\left( x \right) a=π(x)。策略的两种表示方法:一种是将策略表示为函数 π : X → A \pi:X \rightarrow A π:XA,确定性策略常用这种表示;另一种是概率表示 π : X × A → R \pi:X \times A\mathbb{\rightarrow R} π:X×AR,随机性策略常用这种表示, π ( x , a ) \pi\left( x,a \right) π(x,a)为状态 x x x下选择动作 a a a的概率,这里必须有 ∑ a π ( x , a ) = 1 \sum_{a}^{}{\pi\left( x,a \right) = 1} aπ(x,a)=1

16.2 K-摇臂赌博机

16.2.1 探索与利用

欲最大化单步奖赏考虑:1、需要知道每个动作带来的奖赏;2、执行奖赏最大的动作

K-摇臂赌博机(K-armed bandit):单步强化学习任务对应的理论模型

仅探索法:将所有的尝试机会平均分配给每个摇臂,最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计。

仅利用法:按下目前最优的摇臂,若有多个摇臂同时为最优,则从中随机选取一个。

16.2.2 ϵ \mathbf{\epsilon} ϵ-贪心

ϵ \epsilon ϵ-贪心法基于概率来对探索和利用进行折中:每次尝试时,以 ϵ \epsilon ϵ的概率进行探索,以 1 − ϵ 1- \epsilon 1ϵ的概率进行利用。

Q ( k ) Q\left( k \right) Q(k)记录摇臂 k k k的平均奖赏。若摇臂 k k k被尝试 n n n次,得到的奖赏为 v 1 , v 2 , … , v n v_{1},v_{2},\ldots,v_{n} v1,v2,,vn,平均奖赏为

Q ( k ) = 1 n ∑ i = 1 n v i Q\left( k \right) = \frac{1}{n}\sum_{i = 1}^{n}v_{i} Q(k)=n1i=1nvi
在这里插入图片描述

16.2.3 Softmax

Softmax算法基于当前已知的摇臂平均奖赏来对探索和利用进行折中。若个摇臂的平均奖赏相当,则选取各摇臂的概率也相当;若某些摇臂的平均奖赏明显高于其他摇臂,则它们被选取的概率也明显高。

Softmax算法中的摇臂概的分配是基于Boltzmann分布

P ( k ) = e Q ( k ) τ ∑ i = 1 K e Q ( i ) τ P\left( k \right) = \frac{e^{\frac{Q\left( k \right)}{\tau}}}{\sum_{i = 1}^{K}e^{\frac{Q\left( i \right)}{\tau}}} P(k)=i=1KeτQ(i)eτQ(k)

其中 Q ( i ) Q\left( i \right) Q(i)记录当前摇臂的平均奖赏
在这里插入图片描述

16.3 有模型学习

16.3.1 策略评估

令函数 V π ( x ) V^{\pi}\left( x \right) Vπ(x)表示从状态 x x x出发,使用策略 π \pi π所带来的累积奖赏,函数 Q π ( x , a ) Q^{\pi}\left( x,a \right) Qπ(x,a)表示从状态 x x x出发,执行动作 a a a后再使用策略 π \pi π所带来的累积奖赏。 V ( . ) V\left( . \right) V(.)为状态值函数,Q ( . ) \left( . \right) (.)为状态-动作值函数。

由累积奖赏的定义,有状态值函数

{ V T π ( x ) = E π [   1 T ∑ i = 1 T r t ∣ x 0 = x ] , T V γ π ( x ) = E π [   ∑ i = 1 + ∞ γ t r t + 1 ∣ x 0 = x ] , γ   \left\{ \begin{matrix} V_{T}^{\pi}\left( x \right) = \mathbb{E}_{\pi}\left\lbrack \left. \ \frac{1}{T}\sum_{i = 1}^{T}r_{t} \right|x_{0} = x \right\rbrack,T \\ V_{\gamma}^{\pi}\left( x \right) = \mathbb{E}_{\pi}\left\lbrack \left. \ \sum_{i = 1}^{+ \infty}{\gamma^{t}r}_{t + 1} \right|x_{0} = x \right\rbrack,\gamma \\ \end{matrix} \right.\ {VTπ(x)=Eπ[ T1i=1Trtx0=x],TVγπ(x)=Eπ[ i=1+γtrt+1x0=x],γ 

x 0 x_{0} x0表示起始状态, a 0 a_{0} a0表示起始状态上采取的第一个动作,对于T步累积奖赏,则有状态-动作值函数

{ Q T π ( x , a ) = E π [   1 T ∑ i = 1 T r t ∣ x 0 = x , a 0 = a ] Q γ π ( x , a ) = E π [   ∑ i = 1 + ∞ γ t r t + 1 ∣ x 0 = x , a 0 = a ]   \left\{ \begin{matrix} Q_{T}^{\pi}\left( x,a \right) = \mathbb{E}_{\pi}\left\lbrack \left. \ \frac{1}{T}\sum_{i = 1}^{T}r_{t} \right|x_{0} = x,a_{0} = a \right\rbrack \\ Q_{\gamma}^{\pi}\left( x,a \right) = \mathbb{E}_{\pi}\left\lbrack \left. \ \sum_{i = 1}^{+ \infty}{\gamma^{t}r}_{t + 1} \right|x_{0} = x,a_{0} = a \right\rbrack \\ \end{matrix} \right.\ {QTπ(x,a)=Eπ[ T1i=1Trtx0=x,a0=a]Qγπ(x,a)=Eπ[ i=1+γtrt+1x0=x,a0=a] 

则T步累积奖赏有

V T π ( x ) = E π [   1 T ∑ i = 1 T r t ∣ x 0 = x ] V_{T}^{\pi}\left( x \right) = \mathbb{E}_{\pi}\left\lbrack \left. \ \frac{1}{T}\sum_{i = 1}^{T}r_{t} \right|x_{0} = x \right\rbrack VTπ(x)=Eπ[ T1i=1Trtx0=x]

= E π [   1 T r 1 + T − 1 T 1 T − 1 ∑ i = 2 T r t ∣ x 0 = x ] = \mathbb{E}_{\pi}\left\lbrack \left. \ \frac{1}{T}r_{1} + \frac{T - 1}{T}\frac{1}{T - 1}\sum_{i = 2}^{T}r_{t} \right|x_{0} = x \right\rbrack =Eπ[ T1r1+TT1T11i=2Trtx0=x]

= ∑ a ∈ A π ( x , a ) ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T − 1 T E π [   1 T − 1 ∑ i = 1 T − 1 r t ∣ x 0 = x ′ ] ) = \sum_{a \in A}^{}{\pi\left( x,a \right)\sum_{x^{'} \in X}^{}{P_{x \rightarrow x^{'}}^{a}\left( \frac{1}{T}R_{x \rightarrow x^{'}}^{a} + \frac{T - 1}{T}\mathbb{E}_{\pi}\left\lbrack \left. \ \frac{1}{T - 1}\sum_{i = 1}^{T - 1}r_{t} \right|x_{0} = x' \right\rbrack \right)}} =aAπ(x,a)xXPxxa(T1Rxxa+TT1Eπ[ T11i=1T1rtx0=x])

= ∑ a ∈ A π ( x , a ) ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T T − 1 V T − 1 π ( x ′ ) ) = \sum_{a \in A}^{}{\pi\left( x,a \right)\sum_{x^{'} \in X}^{}{P_{x \rightarrow x^{'}}^{a}\left( \frac{1}{T}R_{x \rightarrow x^{'}}^{a} + \frac{T}{T - 1}V_{T - 1}^{\pi}\left( x^{'} \right) \right)}} =aAπ(x,a)xXPxxa(T1Rxxa+T1TVT1π(x))

类似的,对于 γ \gamma γ折扣累积奖赏有

V γ π ( x ) = ∑ a ∈ A π ( x , a ) ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ π ( x ′ ) ) V_{\gamma}^{\pi}\left( x \right) = \sum_{a \in A}^{}{\pi\left( x,a \right)\sum_{x^{'} \in X}^{}{P_{x \rightarrow x^{'}}^{a}\left( R_{x \rightarrow x^{'}}^{a} + \gamma V_{\gamma}^{\pi}\left( x^{'} \right) \right)}} Vγπ(x)=aAπ(x,a)xXPxxa(Rxxa+γVγπ(x))
在这里插入图片描述
则状态-动作值函数

{ Q T π ( x , a ) = ∑ x ′ ∈ X P x → x ′ a ( 1 T R x → x ′ a + T T − 1 V T − 1 π ( x ′ ) ) Q γ π ( x , a ) = ∑ x ′ ∈ X P x → x ′ a ( R x → x ′ a + γ V γ π ( x ′ ) )   \left\{ \begin{matrix} Q_{T}^{\pi}\left( x,a \right) = \sum_{x^{'} \in X}^{}{P_{x \rightarrow x^{'}}^{a}\left( \frac{1}{T}R_{x \rightarrow x^{'}}^{a} + \frac{T}{T - 1}V_{T - 1}^{\pi}\left( x^{'} \right) \right)} \\ Q_{\gamma}^{\pi}\left( x,a \right) = \sum_{x^{'} \in X}^{}{P_{x \rightarrow x^{'}}^{a}\left( R_{x \rightarrow x^{'}}^{a} + \gamma V_{\gamma}^{\pi}\left( x^{'} \right) \right)} \\ \end{matrix} \right.\ QTπ(x,a)=xXPxxa(T1Rxxa+T1TVT1π(x))Qγπ(x,a)=xXPxxa(Rxxa+γVγπ(x)) 

16.3.2 策略改进

理想的策略响应能最大化累积奖赏
在这里插入图片描述

一个强化学习任务可能有多个最优策略,最优策略所对应的值函数 V ∗ V^{*} V称为最优值函数,即

∀ x ∈ X : V ∗ ( x ) = V π ∗ ( x ) \forall x \in X:V^{*}\left( x \right) = V^{\pi^{*}}\left( x \right) xX:V(x)=Vπ(x)

对累积奖赏进行改进
在这里插入图片描述

即改进后为
在这里插入图片描述

则最优状态-动作值函数
在这里插入图片描述
最优Bellman等式揭示了非最优策略的改进方式:将策略选择的动作改进为当前最优的动作。

16.3.3 策略迭代与值迭代

策略迭代(policy iteration):从一个初始策略出发,先进行策略评估,然后改进策略,评估改进的策略,再进一步改进策略,……不断迭代进行测量评估和改进,直到测量收敛、不再改变为止。

在这里插入图片描述
则值函数的改进为

在这里插入图片描述

在这里插入图片描述
16.4 免模型学习

免模型学习(model-free learning):若学习算法不依赖于环境建模

16.4.1 蒙特卡罗强化学习

同策略蒙特卡罗强化学习算法

算法中奖赏均值采用增量式计算,每采样出一条轨迹,就根据该轨迹涉及的所有状态-动作对来对值函数进行更新
在这里插入图片描述
函数 f f f在概率分布 p p p的期望可表达为

E [ f ] = ∫ x p ( x ) f ( x ) dx \mathbb{E}\left\lbrack f \right\rbrack = \int_{x}^{}{p\left( x \right)f\left( x \right)\text{dx}} E[f]=xp(x)f(x)dx

可通过从概率分布 p p p上的采样 { x 1 , x 2 , … , x m } \left\{ x_{1},x_{2},\ldots,x_{m} \right\} {x1,x2,,xm}来估计 f f f的期望,即

E ^ [ f ] = 1 m ∑ i = 1 m f ( x ) \hat{\mathbb{E}}\left\lbrack f \right\rbrack = \frac{1}{m}\sum_{i = 1}^{m}{f\left( x \right)} E^[f]=m1i=1mf(x)

若引入另一个分布 q q q,则函数 f f f在概率分布 p p p下的期望为

E [ f ] = ∫ x q ( x ) p ( x ) q ( x ) f ( x ) dx \mathbb{E}\left\lbrack f \right\rbrack = \int_{x}^{}{q\left( x \right)\frac{p\left( x \right)}{q\left( x \right)}f\left( x \right)\text{dx}} E[f]=xq(x)q(x)p(x)f(x)dx

上式可看作 p ( x ) q ( x ) f ( x ) \frac{p\left( x \right)}{q\left( x \right)}f\left( x \right) q(x)p(x)f(x)在分布 q q q下的期望,因此通过在 q q q上的采样 { x 1 ′ , x 2 ′ , … , x m ′ } \left\{ x_{1}^{'},x_{2}^{'},\ldots,x_{m}^{'} \right\} {x1,x2,,xm}可估计为

E ^ [ f ] = 1 m ∑ i = 1 m p ( x i ′ ) q ( x i ′ ) f ( x i ′ ) \hat{\mathbb{E}}\left\lbrack f \right\rbrack = \frac{1}{m}\sum_{i = 1}^{m}\frac{p\left( x_{i}^{'} \right)}{q\left( x_{i}^{'} \right)}f\left( x_{i}^{'} \right) E^[f]=m1i=1mq(xi)p(xi)f(xi)

对累积奖赏估计期望

Q ( x , a ) = 1 m ∑ i = 1 m R i Q\left( x,a \right) = \frac{1}{m}\sum_{i = 1}^{m}R_{i} Q(x,a)=m1i=1mRi

其中 R i R_{i} Ri表示第 i i i条轨迹上自状态 x x x至结束的累积奖赏。

若改用策略 π ′ \pi^{'} π的采样轨迹来评估策略 π \pi π,则仅需对累积奖赏加权,即

Q ( x , a ) = 1 m ∑ i = 1 m P i π P i π ′ R i Q\left( x,a \right) = \frac{1}{m}\sum_{i = 1}^{m}{\frac{P_{i}^{\pi}}{P_{i}^{\pi^{'}}}R_{i}} Q(x,a)=m1i=1mPiπPiπRi

其中 P i π P_{i}^{\pi} Piπ P i π ′ P_{i}^{\pi^{'}} Piπ分别表示两个策略产生第 i i i条轨迹的概率

对于给定的一条轨迹 ⟨ x 0 , a 0 , r 1 , … , x T − 1 , a T − 1 , r T , x T ⟩ \left\langle x_{0},a_{0},r_{1},\ldots,x_{T - 1},a_{T - 1},r_{T},x_{T} \right\rangle x0,a0,r1,,xT1,aT1,rT,xT,策略 π \pi π产生该轨迹的概率为

P π = ∏ i = 0 T − 1 π ( x i , a i ) P x i → x i + 1 a i P^{\pi} = \prod_{i = 0}^{T - 1}{\pi\left( x_{i},a_{i} \right)P_{x_{i} \rightarrow x_{i + 1}}^{a_{i}}} Pπ=i=0T1π(xi,ai)Pxixi+1ai

两个策略概率的比值

P π P π ′ = ∏ i = 0 T − 1 π ( x i , a i ) π ′ ( x i , a i ) \frac{P^{\pi}}{P^{\pi^{'}}} = \prod_{i = 0}^{T - 1}\frac{\pi\left( x_{i},a_{i} \right)}{\pi^{'}\left( x_{i},a_{i} \right)} PπPπ=i=0T1π(xi,ai)π(xi,ai)
在这里插入图片描述

16.4.2 时序差分学习

时序差分学习(Temporal Difference,TD):结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。

蒙特卡罗强化学习算法的本质:通过多次尝试后求平均作为期望累积奖赏的近似,但它在求平均时是批处理式进行的,即在一个完整的采样轨迹完成后再对所有的状态-动作对进行更新。
在这里插入图片描述
在这里插入图片描述

16.5 值函数近似

表格值函数(tabular value function):值函数能表示为一个数值,输入 i i i对应的函数值就是数值元素 i i i的值,且更改一个状态上的值不会影响其他状态上的值。

假定状态空间为n维实数空间 X = R n X = \mathbb{R}^{n} X=Rn,值函数能表达为状态的线性函数

V θ ( x ) = θ T x V_{\theta}\left( x \right) = \theta^{T}x Vθ(x)=θTx

其中 x x x为状态向量, θ \theta θ为参数向量。

值函数尽可能近似真实值函数 V π V^{\pi} Vπ,用最小二乘误差来度量

E θ = E x ∼ π [ ( V π ( x ) − V θ ( x ) ) 2 ] E_{\theta} = \mathbb{E}_{x\sim\pi}\left\lbrack \left( V^{\pi}\left( x \right) - V_{\theta}\left( x \right) \right)^{2} \right\rbrack Eθ=Exπ[(Vπ(x)Vθ(x))2]

其中 E x ∼ π \mathbb{E}_{x\sim\pi} Exπ表示由策略 π \pi π所采样而得的状态上的期望。

为了使误差最小化,采用梯度下降法,对误差求负导数

− ∂ E θ ∂ θ = E x ∼ π [ 2 ( V π ( x ) − V θ ( x ) ) ∂ V θ ( x ) ∂ θ ] = E x ∼ π [ 2 ( V π ( x ) − V θ ( x ) ) x ] - \frac{\partial E_{\theta}}{\partial\theta} = \mathbb{E}_{x\sim\pi}\left\lbrack 2\left( V^{\pi}\left( x \right) - V_{\theta}\left( x \right) \right)\frac{\partial V_{\theta}\left( x \right)}{\partial\theta} \right\rbrack = \mathbb{E}_{x\sim\pi}\left\lbrack 2\left( V^{\pi}\left( x \right) - V_{\theta}\left( x \right) \right)x \right\rbrack θEθ=Exπ[2(Vπ(x)Vθ(x))θVθ(x)]=Exπ[2(Vπ(x)Vθ(x))x]

可得到对应单样本的更新规则

θ = θ + α ( V π ( x ) − V θ ( x ) ) x \theta = \theta + \alpha\left( V^{\pi}\left( x \right) - V_{\theta}\left( x \right) \right)x θ=θ+α(Vπ(x)Vθ(x))x

基于 V π ( x ) = r + γ V π ( x ′ ) V^{\pi}\left( x \right) = r + \gamma V^{\pi}\left( x^{'} \right) Vπ(x)=r+γVπ(x)用当前估计的值函数代替真实值函数,即

θ = θ + α V θ ( r + γ V θ ( x ′ ) − V θ ( x ) ) x = θ + α ( r + γ x ′ − θ T x ) x \theta = \theta + \alpha V_{\theta}\left( r + \gamma V_{\theta}\left( x^{'} \right) - V_{\theta}\left( x \right) \right)x = \theta + \alpha\left( r + \gamma x^{'} - \theta^{T}x \right)x θ=θ+αVθ(r+γVθ(x)Vθ(x))x=θ+α(r+γxθTx)x

其中 x ′ x^{'} x是下一时刻的状态
在这里插入图片描述

16.6 模仿学习

16.6.1 直接模仿学习

直接模仿学习:直接模仿人类专家的状态-动作对可环境多步决策。

假定获得一批人类专家的决策轨迹数据 { τ 1 , τ 2 , … , τ m } \left\{ \tau_{1},\tau_{2},\ldots,\tau_{m} \right\} {τ1,τ2,,τm},每条轨迹包含状态和动作序列

τ i = ⟨ s 1 i , a 1 i , s 2 i , a 2 i , … , s n i + 1 i ⟩ \tau_{i} = \left\langle s_{1}^{i},a_{1}^{i},s_{2}^{i},a_{2}^{i},\ldots,s_{n_{i} + 1}^{i} \right\rangle τi=s1i,a1i,s2i,a2i,,sni+1i

其中 n i n_{i} ni为第 i i i条轨迹中的转移次数。

将所有轨迹上的所有状态-动作对抽取,构造出一个新的数据集合

D = { ( s 1 , a 1 ) , ( s 2 , a 2 ) , … , ( s ∑ i = 1 m n i , a ∑ i = 1 m n i ) } D = \left\{ \left( s_{1},a_{1} \right),\left( s_{2},a_{2} \right),\ldots,\left( s_{\sum_{i = 1}^{m}n_{i}},a_{\sum_{i = 1}^{m}n_{i}} \right) \right\} D={(s1,a1),(s2,a2),,(si=1mni,ai=1mni)}

然后对这个新构造出的数据集合D使用分类或回归算法即可学得策略模型。学得的这个策略模型可作为机器进行强化学习的初始策略,再通过强化学习方法基于环境反馈进行改进,从而获得更好的策略。

16.6.2 逆强化学习

寻找某种奖赏函数使得范例数据是最优的,然后即可使用这个奖赏函数来训练强化学习策略。

假设奖赏函数能表达为状态特征的线性函数,即 R ( x ) = ω T x R\left( x \right) = \omega^{T}x R(x)=ωTx。于是策略 π \pi π的累积奖赏为

ρ π = E [ ∑ t = 0 + ∞ γ t R ( x t ) ∣ π   ] = E [ ∑ t = 0 + ∞ γ t ω T x t ∣ π   ] = ω T E [ ∑ t = 0 + ∞ γ t x t ∣ π   ] \rho^{\pi} = \mathbb{E}\left\lbrack \sum_{t = 0}^{+ \infty}{\gamma^{t}R\left( x_{t} \right)\left| \pi \right.\ } \right\rbrack\mathbb{= E}\left\lbrack \sum_{t = 0}^{+ \infty}{\gamma^{t}\omega^{T}x_{t}\left| \pi \right.\ } \right\rbrack = \omega^{T}\mathbb{E}\left\lbrack \sum_{t = 0}^{+ \infty}{\gamma^{t}x_{t}\left| \pi \right.\ } \right\rbrack ρπ=E[t=0+γtR(xt)π ]=E[t=0+γtωTxtπ ]=ωTE[t=0+γtxtπ ]

即状态向量加权和的期望与系数 ω \omega ω的内积。

将状态向量的期望 E [ ∑ t = 0 + ∞ γ t x t ∣ π   ] \mathbb{E}\left\lbrack \sum_{t = 0}^{+ \infty}{\gamma^{t}x_{t}\left| \pi \right.\ } \right\rbrack E[t=0+γtxtπ ]简写为 x ‾ π {\overset{\overline{}}{x}}^{\pi} xπ,将每条范例轨迹上的状态加权求和再平均,记为 x ‾ ∗ {\overset{\overline{}}{x}}^{*} x。对于最优奖赏函数 R ( x ) = ω ∗ T x R\left( x \right) = \omega^{*T}x R(x)=ωTx和任意其他策略产生的 x ‾ π {\overset{\overline{}}{x}}^{\pi} xπ,有

ω ∗ T x ‾ ∗ − ω ∗ T x ‾ π = ω ∗ T ( x ‾ ∗ − x ‾ π ) ≥ 0 \omega^{*T}{\overset{\overline{}}{x}}^{*} - \omega^{*T}{\overset{\overline{}}{x}}^{\pi} = \omega^{*T}\left( {\overset{\overline{}}{x}}^{*} - {\overset{\overline{}}{x}}^{\pi} \right) \geq 0 ωTxωTxπ=ωT(xxπ)0

若能对所有策略计算出 ( x ‾ ∗ − x ‾ π ) \left( {\overset{\overline{}}{x}}^{*} - {\overset{\overline{}}{x}}^{\pi} \right) (xxπ),即可解出:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值