【统计强化学习】马尔科夫决策过程

本文介绍了强化学习中的马尔科夫决策过程(MDP)的基本概念,包括状态空间、动作空间、转移函数、奖励函数和折扣因子。讨论了智能体与环境的交互方式,以及确定性和随机性策略。详细阐述了价值函数和动作值函数,特别是贝尔曼方程及其最优形式,以及策略迭代中的贝尔曼最优算子。这些理论构成了强化学习策略优化的基础。
摘要由CSDN通过智能技术生成

本系列文章主要参考UIUC姜楠老师开设的cs542


本章将介绍强化学习涉及到的相关基础概念。

马尔科夫决策过程

  • 状态空间 S \mathcal{S} S。只考虑有限状态空间;
  • 动作空间 A \mathcal{A} A。只考虑有限动作空间;
  • 转移函数 P : S × A → Δ ( S ) P : \mathcal{S} \times \mathcal{A} \rightarrow \Delta(\mathcal{S}) P:S×AΔ(S)。其中 Δ ( S ) \Delta(\mathcal{S}) Δ(S) 是指状态空间上的概率分布;
  • 奖励函数 R : S × A → [ 0 , R max ] R : \mathcal{S} \times \mathcal{A} \rightarrow [0, R_{\text{max}}] R:S×A[0,Rmax]。只考虑非负且有界的奖励函数。其中,有界并非很强的假设,而非负可通过将奖励函数平移来获取;
  • 折扣因子 γ ∈ [ 0 , 1 ) \gamma \in [0,1) γ[0,1)

与环境交互

对于给定的的 MDP M = ( S , A , P , R , γ ) M=(\mathcal{S}, \mathcal{A}, P, R, \gamma) M=(S,A,P,R,γ),智能体与环境交互的过程按照如下规则:智能体从初始状态 s 1 s_1 s1 出发;在每个时间步 t = 1 , 2 , . . . t=1,2,... t=1,2,...,智能体执行一个动作 a t ∈ A a_t \in \mathcal{A} atA,获得即时奖励 r t = R ( s t , a t ) r_t=R(s_t,a_t) rt=R(st,at),并到达下一个状态 s t + 1 ∼ P ( s t , a t ) s_{t+1} \sim P(s_t,a_t) st+1P(st,at)。其交互过程:
τ = ( s 1 , a 1 , r 1 , s 2 , . . . , s H + 1 ) \tau = (s_1, a_1, r_1, s_2, ..., s_{H+1}) τ=(s1,a1,r1,s2,...,sH+1)

被称为长度为 H H H 的轨迹。由于有时初始状态分布对于问题分析非常重要,所以这里将初始状态的分布 μ ∈ Δ ( S ) \mu \in \Delta(\mathcal{S}) μΔ(S) 同样作为 MDP 的组成部分之一,即 M = ( S , A , P , R , γ , μ ) M=(\mathcal{S}, \mathcal{A}, P, R, \gamma, \mu) M=(S,A,P,R,γ,μ)

策略和价值函数

强化学习中的确定性策略是指从策略 π : S → A \pi : \mathcal{S} \rightarrow \mathcal{A} π:SA 中选择一个动作 a t = π ( s t ) a_t = \pi (s_t) at=π(st);而随机性策略是指从策略 π : S → Δ ( A ) \pi : \mathcal{S} \rightarrow \Delta(\mathcal{A}) π:SΔ(A) 中采样一个动作 a t ∼ π ( s t ) a_t \sim \pi(s_t) atπ(st)。而智能体的目标则是选择一个策略 π \pi π 来最大化折扣积累奖励的期望,即价值:
E [ ∑ t = 1 ∞ γ t − 1 r t ∣ π , s 1 ] \mathbb{E} \left[ \sum_{t=1}^\infty \gamma^{t-1}r_t | \pi, s_1 \right] E[t=1γt1rtπ,s1]

由于奖励函数是非负且有界的,所以可以得到优化目标的上界为:
0 ≤ ∑ t = 1 ∞ γ t − 1 r t ≤ ∑ t = 1 ∞ γ t − 1 R max = R max 1 − γ 0 \le \sum_{t=1}^\infty \gamma^{t-1}r_t \le \sum_{t=1}^\infty \gamma^{t-1} R_{\text{max}} = \frac{R_{\text{max}}}{1 - \gamma} 0t=1γt1rtt=1γt1Rmax=1γRmax

换句话讲,即任意轨迹的折扣积累奖励的范围为 [ 0 , R max 1 − γ ] [0, \frac{R_{\text{max}}}{1 - \gamma}] [0,1γRmax]

最后,策略 π \pi π 下的值函数 V M π : S → R V_M^\pi : \mathcal{S} \rightarrow \mathbb{R} VMπ:SR 表示为:
V M π ( s ) = E [ ∑ t = 1 ∞ γ t − 1 r t ∣ π , s 1 = s ] V_M^\pi(s) = \mathbb{E} \left[ \sum_{t=1}^\infty \gamma^{t-1}r_t | \pi, s_1 = s \right] VMπ(s)=E[t=1γt1rtπ,s1=s]

而策略 π \pi π 下的动作值函数 Q M π : S × A → R Q_M^\pi : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} QMπ:S×AR 表示为:
Q M π ( s , a ) = E [ ∑ t = 1 ∞ γ t − 1 r t ∣ π , s 1 = s , a 1 = a ] Q_M^\pi(s, a) = \mathbb{E} \left[ \sum_{t=1}^\infty \gamma^{t-1}r_t | \pi, s_1 = s, a_1 = a \right] QMπ(s,a)=E[t=1γt1rtπ,s1=s,a1=a]

贝尔曼方程

在策略评估的过程中,对于 ∀ s ∈ S , a ∈ A \forall s \in \mathcal{S}, a \in \mathcal{A} sS,aA,有:
V π ( s ) = Q π ( s , π ( s ) ) ,  for deterministic policy V π ( s ) = E a ∼ π ( s ) [ Q π ( s , a ) ] ,  for stochastic policy Q π ( s , a ) = R ( s , a ) + γ E s ′ ∼ P ( s , a ) [ V π ( s ′ ) ] V^\pi(s) = Q^\pi(s,\pi(s)), \text{ for deterministic policy} \\ V^\pi(s) = \mathbb{E}_{a \sim \pi(s)}[Q^\pi(s,a)], \text{ for stochastic policy} \\ Q^\pi(s,a) = R(s,a) + \gamma \mathbb{E}_{s' \sim P(s,a)}[V^\pi(s')] Vπ(s)=Qπ(s,π(s)), for deterministic policyVπ(s)=Eaπ(s)[Qπ(s,a)], for stochastic policyQπ(s,a)=R(s,a)+γEsP(s,a)[Vπ(s)]

由于只考虑有限状态空间,所以为了理论推导方便,这里将相关的量表示成矩阵-向量形式。即, V π V^\pi Vπ 可表示成向量 R ∣ S ∣ \mathbb{R}^{|\mathcal{S}|} RS R R R Q π Q^\pi Qπ 都可表示成向量 R ∣ S × A ∣ \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} RS×A

策略 π \pi π 下的状态转移函数同样可以表示成 ∣ S ∣ × ∣ S ∣ |\mathcal{S}| \times |\mathcal{S}| S×S 维的矩阵,其中从状态 s s s 到状态 s ′ s' s 的转移概率为 [ P π ] s , s ′ = E [ P ( s ′ ∣ s , a ) ] [P^\pi]_{s,s'} = \mathbb{E}[P(s'|s,a)] [Pπ]s,s=E[P(ss,a)]。此时,给定 MDP M M M 和策略 π \pi π,该矩阵的第 s s s 行表示从状态 s s s 到下一个状态的转移概率分布,可表示为向量 [ P ( s , π ) ] ⊤ [P(s,\pi)]^\top [P(s,π)]

最后,策略 π \pi π 下的奖励也可以表示成 ∣ S ∣ × 1 |\mathcal{S}| \times 1 S×1 维的向量,表示从各个状态 s s s 出发按照策略 π \pi π 执行时获取的第一步的奖励,即 [ R π ] s = E a ∼ π ( s ) [ R ( s , a ) ] [R^\pi]_s = \mathbb{E}_{a \sim \pi(s)}[R(s,a)] [Rπ]s=Eaπ(s)[R(s,a)]

在完成上述准备工作后,贝尔曼方程为:
[ V π ] s = Q π ( s , π ( s ) ) = [ R π ] s + γ E a ∼ π ( s ) E s ′ ∼ P ( s , a ) V π ( s ′ ) = [ R π ] s + γ E s ′ ∼ P ( s , a ) V π ( s ′ ) = [ R π ] s + γ ⟨ P ( s , π ) , V π ⟩ \begin{aligned} \\ [V^\pi]_s &= Q^\pi(s,\pi(s)) \\ &= [R^\pi]_s + \gamma \mathbb{E}_{a \sim \pi(s)} \mathbb{E}_{s' \sim P(s,a)}{V^\pi(s')} \\ &= [R^\pi]_s + \gamma \mathbb{E}_{s' \sim P(s,a)}{V^\pi(s')} \\ &= [R^\pi]_s + \gamma \langle P(s,\pi), V^\pi \rangle \end{aligned} [Vπ]s=Qπ(s,π(s))=[Rπ]s+γEaπ(s)EsP(s,a)Vπ(s)=[Rπ]s+γEsP(s,a)Vπ(s)=[Rπ]s+γP(s,π),Vπ

其中, ⟨ ⋅ , ⋅ ⟩ \langle \cdot , \cdot \rangle , 表示内积。由于上面的等式对于所有状态 s ∈ S s \in \mathcal{S} sS 都成立,有:
V π = R π + γ P π V π ⇒ ( I ∣ S ∣ − γ P π ) V π = R π V^\pi = R^\pi + \gamma P^\pi V^\pi \Rightarrow (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi) V^\pi = R^\pi Vπ=Rπ+γPπVπ(ISγPπ)Vπ=Rπ

其中, I ∣ S ∣ \bold{I}_{|\mathcal{S}|} IS 表示单位矩阵。另外,可证明 ( I ∣ S ∣ − γ P π ) (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi) (ISγPπ) 是可逆的,对任意非零向量 x ∈ R ∣ S ∣ x \in \mathbb{R}^{|\mathcal{S}|} xRS
∥ ( I ∣ S ∣ − γ P π ) x ∥ ∞ = ∥ x − γ P π x ∥ ∞ ≥ ∥ x ∥ ∞ − γ ∥ P π x ∥ ∞ ≥ ∥ x ∥ ∞ − γ ∥ x ∥ ∞ = ( 1 − γ ) ∥ x ∥ ∞ > 0 \begin{aligned} \\ \parallel (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi) x \parallel_{\infty} &= \parallel x - \gamma P^\pi x \parallel_{\infty} \\ &\ge \parallel x \parallel_{\infty} - \gamma \parallel P^\pi x \parallel_{\infty} \\ &\ge \parallel x \parallel_{\infty} - \gamma \parallel x \parallel_{\infty} \\ &= (1 - \gamma) \parallel x \parallel_{\infty} \\ &> 0 \end{aligned} (ISγPπ)x=xγPπxxγPπxxγx=(1γ)x>0

所以对于任意非零的向量,矩阵向量乘都不等于零,则矩阵为非奇异矩阵,即为可逆矩阵。所以有:
V π = ( I ∣ S ∣ − γ P π ) − 1 R π V^\pi = (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi)^{-1} R^\pi Vπ=(ISγPπ)1Rπ

其中, V π V^\pi Vπ ∣ S ∣ × 1 |\mathcal{S}| \times 1 S×1 维, ( I ∣ S ∣ − γ P π ) − 1 (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi)^{-1} (ISγPπ)1 ∣ S ∣ × ∣ S ∣ |\mathcal{S}| \times |\mathcal{S}| S×S 维, R π R^\pi Rπ ∣ S ∣ × 1 |\mathcal{S}| \times 1 S×1 维。当奖励函数只依据当前状态,与动作无关,即 R ( s , a ) = R ( s ) R(s,a) = R(s) R(s,a)=R(s) 时, R π R^\pi Rπ 则与策略无关。所以右式中只有第一项是与策略有关。此时,对于任意状态 s t s_t st 的值 V π ( s t ) V^\pi(s_t) Vπ(st),都为 ( I ∣ S ∣ − γ P π ) − 1 (\bold{I}_{|\mathcal{S}|} - \gamma P^\pi)^{-1} (ISγPπ)1 矩阵中的第 t t t 行的 1 × ∣ S ∣ 1 \times |\mathcal{S}| 1×S 向量与 ∣ S ∣ × 1 |\mathcal{S}| \times 1 S×1 维的 R π R^\pi Rπ 矩阵的乘积,即为各个状态上奖励的线性组合,并且该线性系数是与初始状态分布有关的(因为 P π P^\pi Pπ 是与状态转移概率分布和初始状态分布有关)。即有:
V π ( s t ) = d π , s t ( s 1 ) R s 1 π + d π , s t ( s 2 ) R s 2 π + ⋯ + d π , s t ( s ∣ S ∣ ) R s ∣ S ∣ π V^\pi(s_t) = d^{\pi,s_t}(s_1)R_{s_1}^\pi + d^{\pi,s_t}(s_2)R_{s_2}^\pi + \cdots + d^{\pi,s_t}(s_{|\mathcal{S}|})R_{s_{|\mathcal{S}|}}^\pi Vπ(st)=dπ,st(s1)Rs1π+dπ,st(s2)Rs2π++dπ,st(sS)RsSπ

其中,系数矩阵中的元素 d π , s i ( s j ) d^{\pi,s_i}(s_j) dπ,si(sj) 表示在策略 π \pi π 下从 s i s_i si 出发,后续转移到 s j s_j sj 的 discounted state occupancy 或 state occupancy,可表示为 d π , s ( s ′ ) = ∑ t = 1 ∞ γ t − 1 P [ s t = s ′ ∣ s 1 = s , π ] d^{\pi,s}(s')=\sum_{t=1}^\infty\gamma^{t-1}\mathbb{P}[s_t=s'|s_1=s,\pi] dπ,s(s)=t=1γt1P[st=ss1=s,π]。联系之前提及的轨迹折扣奖励之和上界,该轨迹的系数之和,又或者说是该系数矩阵中每一行元素之和为 1 1 − γ \frac{1}{1-\gamma} 1γ1,所以可以通过对这个系数矩阵乘 ( 1 − γ ) (1-\gamma) (1γ) 来对所有系数进行标准化,得到标准化的 discounted state occupancy,即 d π , s ( s ′ ) = ( 1 − γ ) ∑ t = 1 ∞ γ t − 1 P [ s t = s ′ ∣ s 1 = s , π ] d^{\pi,s}(s')=(1-\gamma)\sum_{t=1}^\infty\gamma^{t-1}\mathbb{P}[s_t=s'|s_1=s,\pi] dπ,s(s)=(1γ)t=1γt1P[st=ss1=s,π]

贝尔曼最优方程

可证明总是存在确定性策略能够同时最大化任意状态下的值函数 V π ( s ) V^\pi(s) Vπ(s) 以及最大化任意状态-动作对下的动作值函数 Q π ( s ) Q^\pi(s) Qπ(s)。此时将这个最优策略表示为 π M ∗ \pi_M^* πM 或简写成 π ∗ \pi^* π,同时可将最优值函数 V π ∗ V^{\pi^*} Vπ 和最优动作值函数 Q π ∗ Q^{\pi^*} Qπ 简写成 V ∗ V^* V Q ∗ Q^* Q

V ∗ V^* V Q ∗ Q^* Q 满足如下最优贝尔曼方程,对于任意状态-动作对,有:
V ∗ ( s ) = max ⁡ a ∈ A Q ∗ ( s , a ) Q ∗ ( s , a ) = R ( s , a ) + γ E s ′ ∼ P ( s , a ) [ V ∗ ( s ′ ) ] V^*(s) = \max_{a \in \mathcal{A}} Q^*(s,a) \\ Q^*(s,a) = R(s,a) + \gamma \mathbb{E}_{s' \sim P(s,a)}[V^*(s')] V(s)=aAmaxQ(s,a)Q(s,a)=R(s,a)+γEsP(s,a)[V(s)]

当得到最优动作值函数 Q ∗ Q^* Q 时,就可以得到最优策略 π ∗ = π Q ∗ \pi^*=\pi_{Q^*} π=πQ
π ∗ ( s ) = arg ⁡ max ⁡ a ∈ A Q ∗ ( s , a ) , ∀ s ∈ S \pi^*(s) = \arg\max_{a \in \mathcal{A}} Q^*(s,a),\forall s \in \mathcal{S} π(s)=argaAmaxQ(s,a),sS

另外,将基于当前动作值函数得到的策略简写为 π Q \pi_Q πQ。而贝尔曼最优方程为:
[ V π ] s = [ R π ] s + γ ⟨ P ( s , π ) , V f ⟩ [V^\pi]_s = [R^\pi]_s + \gamma \langle P(s,\pi), V_f \rangle [Vπ]s=[Rπ]s+γP(s,π),Vf

其中, V f ( ⋅ ) : = max ⁡ a ∈ A f ( ⋅ , a ) V_f(\cdot):=\max_{a\in\mathcal{A}}f(\cdot,a) Vf():=maxaAf(,a) f f f 可看做是迭代过程的动作值函数。

贝尔曼算子

为了方便后续理论推导,下面将使用算子的概念:算子可以理解为由一个函数映射到另一个函数。因此策略迭代过程中对值函数的一次更新也可以抽象成一次算子操作。因此,下面介绍贝尔曼算子和贝尔曼最优算子。

定义贝尔曼算子 T M π : R ∣ S × A ∣ → R ∣ S × A ∣ \mathcal{T}^\pi_M : \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} \rightarrow \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} TMπ:RS×ARS×A,或简写为 T π \mathcal{T}^\pi Tπ。有:
T π V π : = R π + γ ⟨ P π , V π ⟩ \mathcal{T}^\pi V^\pi := R^\pi + \gamma \langle P^\pi, V^\pi \rangle TπVπ:=Rπ+γPπ,Vπ

同理,定义贝尔曼最优算子 T M ∗ : R ∣ S × A ∣ → R ∣ S × A ∣ \mathcal{T}^*_M : \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} \rightarrow \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} TM:RS×ARS×A,或简写为 T ∗ \mathcal{T}^* T。此时,对向量 f ∈ R ∣ S × A ∣ f \in \mathbb{R}^{|\mathcal{S} \times \mathcal{A}|} fRS×A,有:
T ∗ V π : = R π + γ ⟨ P π , V f ⟩ \mathcal{T}^* V^\pi := R^\pi + \gamma \langle P^\pi, V_f \rangle TVπ:=Rπ+γPπ,Vf

其中, V f ( ⋅ ) : = max ⁡ a ∈ A f ( ⋅ , a ) V_f(\cdot):=\max_{a\in\mathcal{A}}f(\cdot,a) Vf():=maxaAf(,a)

下面证明两种算子均具有唯一不动点。首先介绍压缩映射定理:称 f f f 是压缩映射,如果它把 X \mathcal{X} X 中任意两点的距离至少压缩 k k k 倍,这里 k k k 是一个小于 1 的常数,也就是说 X \mathcal{X} X 中每两点 x x x y y y 的像 f ( x ) f(x) f(x) f ( y ) f(y) f(y) 之间的距离 d ( f ( x ) , f ( y ) ) d(f(x), f(y)) d(f(x),f(y)) 不超过 x x x y y y 的距离 d ( x , y ) d(x,y) d(x,y) k k k 倍,即 d ( f ( x ) , f ( y ) ) ≤ k ⋅ d ( x , y ) d(f(x), f(y)) \le k \cdot d(x,y) d(f(x),f(y))kd(x,y),那么 f f f X \mathcal{X} X 中有唯一不动点 x x x,使得 f ( x ) = x f(x) = x f(x)=x

这里使用无穷范数 ∥ x ∥ ∞ = max ⁡ i x i \parallel x \parallel_\infty = \max_i x_i x=maxixi ,即值函数的最大元素来作为函数距离的度量。对贝尔曼算子,有:
∥ T π V 1 − T π V 2 ∥ ∞ = ∥ ( R π + γ ⟨ P π , V 1 ⟩ ) − ( R π + γ ⟨ P π , V 2 ⟩ ) ∥ ∞ = ∥ γ ⟨ P π , V 1 ⟩ − γ ⟨ P π , V 2 ⟩ ∥ ∞ = γ ∥ ⟨ P π , V 1 ⟩ − ⟨ P π , V 2 ⟩ ∥ ∞ = γ max ⁡ i ( ⟨ P π , V 1 − V 2 ⟩ ) i ≤ γ max ⁡ i ( V 1 − V 2 ) i = γ ∥ V 1 − V 2 ∥ ∞ \begin{aligned} \\ \parallel \mathcal{T}^\pi V_1 - \mathcal{T}^\pi V_2 \parallel_\infty &= \parallel (R^\pi + \gamma \langle P^\pi, V_1 \rangle) - (R^\pi + \gamma \langle P^\pi, V_2 \rangle) \parallel_\infty \\ &= \parallel \gamma \langle P^\pi, V_1 \rangle - \gamma \langle P^\pi, V_2 \rangle \parallel_\infty \\ &= \gamma \parallel \langle P^\pi, V_1 \rangle - \langle P^\pi, V_2 \rangle \parallel_\infty \\ &= \gamma \max_i (\langle P^\pi, V_1 - V_2 \rangle)_i \\ &\le \gamma \max_i(V_1 - V_2)_i \\ &= \gamma \parallel V_1 - V_2 \parallel_\infty \end{aligned} TπV1TπV2=(Rπ+γPπ,V1)(Rπ+γPπ,V2)=γPπ,V1γPπ,V2=γPπ,V1Pπ,V2=γimax(Pπ,V1V2)iγimax(V1V2)i=γV1V2

对贝尔曼最优算子,同理可证明:
∣ [ T ∗ f − T ∗ f ′ ] s , a ∣ = ∣ R ( s , a ) + γ ⟨ P ( s , a ) , V f ⟩ − R ( s , a ) − γ ⟨ P ( s , a ) , V f ′ ⟩ ∣ ≤ γ ∣ ⟨ P ( s , a ) , V f − V f ′ ⟩ ∣ ≤ γ ∥ V f − V f ′ ∥ ∞ ≤ γ ∥ f − f ′ ∥ ∞ \begin{aligned} \\ |[\mathcal{T}^*f-\mathcal{T}^*f']_{s,a}| &= |R(s,a) + \gamma \langle P(s,a), V_f \rangle - R(s,a) - \gamma \langle P(s,a), V_{f'} \rangle| \\ &\le \gamma |\langle P(s,a), V_f - V_{f'} \rangle| \\ &\le \gamma \parallel V_f - V_{f'} \parallel_\infty \\ &\le \gamma \parallel f - f' \parallel_\infty \end{aligned} [TfTf]s,a=R(s,a)+γP(s,a),VfR(s,a)γP(s,a),VfγP(s,a),VfVfγVfVfγff

因此对于贝尔曼算子以及贝尔曼最优算子而言都有唯一不动点,并且,不论初始值函数为何值,在经过足够多次算子运算后,都会收敛到这个不动点。另外,有 ∥ T π V 1 − T π V 2 ∥ ∞ ≤ γ ∥ V 1 − V 2 ∥ ∞ \parallel \mathcal{T}^\pi V_1 - \mathcal{T}^\pi V_2 \parallel_\infty \le \gamma \parallel V_1 - V_2 \parallel_\infty TπV1TπV2γV1V2 以及 ∥ T ∗ V 1 − T ∗ V 2 ∥ ∞ ≤ γ ∥ V 1 − V 2 ∥ ∞ \parallel \mathcal{T}^* V_1 - \mathcal{T}^* V_2 \parallel_\infty \le \gamma \parallel V_1 - V_2 \parallel_\infty TV1TV2γV1V2,这个性质被称为 γ \gamma γ-压缩。最后,对于贝尔曼最优算子,有 Q ∗ = T Q ∗ Q^*=\mathcal{T}Q^* Q=TQ,即最优动作值函数经过一次贝尔曼最优算子运算后,得到的结果仍是最优动作值函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值