[深度学习]数学基础之线性代数

本文深入探讨了矩阵压缩技术,从特殊矩阵的对角化到一般矩阵的SVD分解,详细解析了矩阵压缩的过程。同时,文章介绍了从逆矩阵到最小二乘法,再到伪逆矩阵和最小范数的求解方法,以及PCA原理和推导,揭示了数据压缩和降维的奥秘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[数学基础]线性代数

学习内容源于深度之眼公众号的花书训练营课程

1. 从特殊矩阵的对角化到矩阵压缩

假设 BBB 是一个方阵,如果存在一个单位正交矩阵 PPP 使得 A=PBP−1A = PBP^{-1}A=PBP1 ,其中 AAA 是一个对角阵,则称 AAABBB 的对角化。单位正交矩阵 PPP 有这么一个性质:PPT=PTP=IPP^{T}=P^{T}P=IPPT=PTP=I ,再结合逆矩阵的性质可知 PT=P−1P^T=P^{-1}PT=P1 ,从而有
B=P−1AP=PTAP B=P^{-1}AP=P^TAP B=P1AP=PTAP
然而并不是所有的方阵都可以进行对角化的,根据定理可知,对称矩阵一定可以对角化,其中如果是对称正定矩阵则对角阵 AAA 的元素 λi\lambda_iλi 均为正数。

我们令单位正交矩阵 PT=[u1,u2,⋯ ,un]P^T = [\boldsymbol{ u_1,u_2,\cdots,u_n}]PT=[u1,u2,,un] ,其中 ui\boldsymbol{u_i}ui 是一个 nnn 维的列向量,则 BBB 可以这样表示
B=[u1,u2,⋯ ,un][λ1λ2⋱λn][u1Tu2T⋮unT]=[λ1u1,λ2u2,⋯ ,λnun][u1Tu2T⋮unT]=λ1u1u1T+λ2u2u2T+⋯+λnununT \begin{aligned} B &= [\boldsymbol{ u_1,u_2,\cdots,u_n}] \begin{bmatrix} \lambda_1& & & \\ &\lambda_2 & &\\ & & \ddots & \\ & & & \lambda_n \end{bmatrix} \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T\\ \vdots \\ \boldsymbol{u_n}^T \end{bmatrix} \\ & = [\lambda_1\boldsymbol{u_1},\lambda_2\boldsymbol{u_2},\cdots,\lambda_n\boldsymbol{u_n}] \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T\\ \vdots \\ \boldsymbol{u_n}^T \end{bmatrix} \\ & = \lambda_1\boldsymbol{u_1}\boldsymbol{u_1}^T + \lambda_2\boldsymbol{u_2}\boldsymbol{u_2}^T + \cdots + \lambda_n\boldsymbol{u_n}\boldsymbol{u_n}^T \end{aligned} B=[u1,u2,,un]λ1λ2λnu1Tu2TunT=[λ1u1,λ2u2,,λnun]u1Tu2TunT=λ1u1u1T+λ2u2u2T++λnununT
其中,uiuiT\boldsymbol{u_i}\boldsymbol{u_i}^TuiuiT 是一个 n×nn \times nn×n 的矩阵。因此矩阵 BBB 可以看作是 nnn 个特别矩阵的加权和。根据存储条件或者误差限可以适当的进行近似替代,将对角阵 AAA 的元素 λi\lambda_iλi 进行降序排列,取前几项的和去近似矩阵 BBBλi\lambda_iλi 在这里就是信息占比权重,比如,取前 kkkλ\lambdaλ 做矩阵 BBB 的近似:
B^=λ1u1u1T+λ2u2u2T+⋯+λnukukT \hat{B} = \lambda_1\boldsymbol{u_1}\boldsymbol{u_1}^T + \lambda_2\boldsymbol{u_2}\boldsymbol{u_2}^T + \cdots + \lambda_n\boldsymbol{u_k}\boldsymbol{u_k}^T B^=λ1u1u1T+λ2u2u2T++λnukukT
此时矩阵 B^\hat{B}B^ 包含了 BBB 的信息的 η=∑i=1kλi∑i=1nλi\eta = \frac{\displaystyle \sum_{i=1}^k\lambda_i}{\displaystyle \sum_{i=1}^n\lambda_i}η=i=1nλii=1kλi 。这个过程就是矩阵压缩的技术。

2. 从特殊矩阵的分解到一般矩阵的SVD分解

矩阵对角化的条件还是蛮苛刻的,必须满足两个条件:方阵以及对称。可见一般情况下一个矩阵 Am×nA_{m\times n}Am×n 是不能进行对角化的。那么有没有其他的分解方法呢?

对于任意一个矩阵 Am×nA_{m \times n}Am×n ,我们可以推导出 (ATA)n×n(A^TA)_{n\times n}(ATA)n×n 是一个对称半正定矩阵。

对称性:

(ATA)T=AT(AT)T=ATA(A^TA)^T=A^T(A^T)^T=A^TA(ATA)T=AT(AT)T=ATA

半正定性:

∀x∈Rn,xT(ATA)x=(xTAT)(Ax)=(Ax)T(Ax)≥0\forall {\boldsymbol x} \in \R^n,{\boldsymbol x}^T(A^TA){\boldsymbol x} = ({\boldsymbol x}^TA^T)(A{\boldsymbol x})=(A{\boldsymbol x})^T(A\boldsymbol x)\ge0xRn,xT(ATA)x=(xTAT)(Ax)=(Ax)T(Ax)0

同理,可知 (AAT)m×m(AA^T)_{m\times m}(AAT)m×m 也是一个对称半正定矩阵。因此两者都可以对角化:
ATA=UTD1UAAT=VTD2V \begin{aligned} A^TA = U^TD_1U\\ AA^T = V^TD_2V \end{aligned} ATA=UTD1UAAT=VTD2V
其中,U∈Rn×n,V∈Rm×mU \in \R^{n\times n},V \in \R^{m\times m}URn×n,VRm×m 都是单位正交矩阵,D1∈Rn×n,D2∈Rm×mD_1\in \R^{n\times n},D_2 \in \R^{m\times m}D1Rn×n,D2Rm×m 都是对角矩阵,而且 D1,D2D_1,D_2D1,D2 对角线上的非零元素是一样的。不妨设 D1,D2D_1,D_2D1,D2 对角线上的非零元素为前 kkk 个,分别为 λ1,λ2,⋯ ,λk\lambda_1,\lambda_2,\cdots,\lambda_kλ1,λ2,,λk

则矩阵 Am×nA_{m\times n}Am×n 的SVD分解为以下形式:
Am×n=Vm×mT[λ112λ212⋱λk120⋱]m×nUn×n A_{m\times n} = V^T_{m\times m} \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & & \\ & \lambda_2^{\frac{1}{2}} & & \\ & & \ddots & \\ & & & \lambda_k^{\frac{1}{2}} \\ & & & & 0 \\ & & & & & \ddots \end{bmatrix}_{m\times n} U_{n\times n} Am×n=Vm×mTλ121λ221λk210m×nUn×n
VT=[v1,v2,⋯ ,vm],vi∈Rm.UT=[u1,u2,⋯ ,un],ui∈RnV^T = [\boldsymbol {v_1,v_2,\cdots,v_m}],{\boldsymbol v_i}\in \R^m.U^T =[\boldsymbol {u_1,u_2,\cdots,u_n}],{\boldsymbol u_i} \in \R^nVT=[v1,v2,,vm],viRm.UT=[u1,u2,,un],uiRn ,有
Am×n=[v1,v2,⋯ ,vm][λ112λ212⋱λk120⋱][u1Tu2T⋮unT]=[λ112v1,λ212v2,⋯ ,λk12vk,0,⋯ ,0][u1Tu2T⋮unT]=λ112v1u1T+λ212v2u2T+⋯+λk12vkukT \begin{aligned} A_{m\times n} &= [\boldsymbol {v_1,v_2,\cdots,v_m}] \begin{bmatrix} \lambda_1^{\frac{1}{2}} & & & \\ & \lambda_2^{\frac{1}{2}} & & \\ & & \ddots & \\ & & & \lambda_k^{\frac{1}{2}} \\ & & & & 0 \\ & & & & & \ddots \end{bmatrix} \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T \\ \vdots \\ \boldsymbol{u_n}^T \\ \end{bmatrix}\\ &= [\lambda_1^{\frac{1}{2}} {\boldsymbol v_1},\lambda_2^{\frac{1}{2}} {\boldsymbol v_2},\cdots,\lambda_k^{\frac{1}{2}} {\boldsymbol v_k},0,\cdots,0] \begin{bmatrix} \boldsymbol{u_1}^T \\ \boldsymbol{u_2}^T \\ \vdots \\ \boldsymbol{u_n}^T \\ \end{bmatrix}\\ &= \lambda_1^{\frac{1}{2}} {\boldsymbol v_1} \boldsymbol{u_1}^T + \lambda_2^{\frac{1}{2}} {\boldsymbol v_2} \boldsymbol{u_2}^T + \cdots +\lambda_k^{\frac{1}{2}} {\boldsymbol v_k} \boldsymbol{u_k}^T \end{aligned} Am×n=[v1,v2,,vm]λ121λ221λk210u1Tu2TunT=[λ121v1,λ221v2,,λk21vk,0,,0]u1Tu2TunT=λ121v1u1T+λ221v2u2T++λk21vkukT
对于矩阵 Am×nA_{m\times n}Am×n 的存储需要 (m+n+1)×k(m+n+1)\times k(m+n+1)×k 个参数。如若想要在一定的存储条件和误差限范围内进行存前 ppp 项近似,则误差为
Error=1−∑i=1pλi∑i=1min(m,n)λi Error= 1 -\frac{\displaystyle \sum_{i=1}^p\lambda_i}{\displaystyle \sum_{i=1}^{min(m,n)}\lambda_i} Error=1i=1min(m,n)λii=1pλi

3. 从逆矩阵到最小二乘法再到伪逆矩阵和最小范数

背景来源:

已知向量 x1,x2,⋯ ,xN,xi∈Rn{\boldsymbol x_1},{\boldsymbol x_2},\cdots,{\boldsymbol x_N},{\boldsymbol x_i} \in\R^nx1,x2,,xN,xiRny1,y2,⋯ ,yN,yi∈R1{\boldsymbol y_1},{\boldsymbol y_2},\cdots,{\boldsymbol y_N},{\boldsymbol y_i} \in \R^1y1,y2,,yN,yiR1 ,有线性方程组
[y1y2⋮yN]=[x11x12⋯x1nx21x22⋯x2n⋮⋮⋱⋮xN1xN2⋯xNn][a1a2⋮an] \begin{aligned} \begin{bmatrix} {\boldsymbol y_1} \\ {\boldsymbol y_2} \\ \vdots \\ {\boldsymbol y_N} \end{bmatrix}= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1n} \\ x_{21} & x_{22} & \cdots &x_{2n} \\ \vdots & \vdots & \ddots &\vdots \\ x_{N1} & x_{N2} & \cdots &x_{Nn} \\ \end{bmatrix} \begin{bmatrix} {a_1} \\ {a_2} \\ \vdots \\ {a_n} \end{bmatrix} \end{aligned} y1y2yN=x11x21xN1x12x22xN2x1nx2nxNna1a2an
待求 a=[a1,a2,⋯ ,an]T{\boldsymbol a} = [a_1,a_2,\cdots,a_n]^Ta=[a1,a2,,an]T 。用矩阵形式表示为
XN×nan×1=yN×1 X_{N \times n} {\boldsymbol a}_{n\times1} = {\boldsymbol y}_{N\times1} XN×nan×1=yN×1
如果上式中 N=nN=nN=n 并且 XXX 可逆,则有唯一解
a=X−1y {\boldsymbol a} = X^{-1}{\boldsymbol y} a=X1y
但是上述求解的条件也是很苛刻,因为可逆这个条件使得矩阵 XXX 必须是方阵,即需要数据的个数和数据的维度相等,并且还得满足其正定性。

一般情况下 N≠nN \neq nN=n ,因此公式(5)(5)(5) 难以直接求精确解,但是我们可以求取它的近似解,使得近似解尽可能地接近精确解。即
min⁡a∣∣Xa−y∣∣2 \min_a ||X {\boldsymbol a} - {\boldsymbol y}||^2 aminXay2

J=∣∣Xa−y∣∣2=(Xa−y)T(Xa−y)=(aTXT−yT)(Xa−y)=aTXTXa−aTXTy−yTXa+yTy=aTXTXa−2yTXa+yTy \begin{aligned} J &=||X {\boldsymbol a} - {\boldsymbol y}||^2 \\ &= (X {\boldsymbol a} - {\boldsymbol y})^T(X {\boldsymbol a} - {\boldsymbol y})\\ &= ({\boldsymbol a}^TX^T-{\boldsymbol y^T})(X {\boldsymbol a} - {\boldsymbol y})\\ &= {\boldsymbol a}^TX^TX{\boldsymbol a} - {\boldsymbol a}^TX^T {\boldsymbol y} - {\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} \\ & = {\boldsymbol a}^TX^TX{\boldsymbol a} - 2{\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} \end{aligned} J=Xay2=(Xay)T(Xay)=(aTXTyT)(Xay)=aTXTXaaTXTyyTXa+yTy=aTXTXa2yTXa+yTy
其极小值需要满足一个必要条件
∂J∂a=02XTXa−2XTy=0XTXa=XTy \begin{aligned} \frac{\partial J}{\partial {\boldsymbol a}} &= 0 \\ 2 X^TX{\boldsymbol a} -2X^T{\boldsymbol y} &= 0 \\ X^TX{\boldsymbol a} &= X^T{\boldsymbol y} \\ \end{aligned} aJ2XTXa2XTyXTXa=0=0=XTy
这个时候有一个问题出现了, XTXX^TXXTX 可逆吗?尽管我们知道 XTXX^TXXTX 是一个对称半正定矩阵,但他并不能保证一定是可逆的,因此需要分情况讨论。

  1. N>nN>nN>n

    此时 (XTX)(X^TX)(XTX) 是一个 n×n{n \times n}n×n 的矩阵,一般情况下它是可逆的,因此有
    a=(XTX)−1XTy {\boldsymbol a} = (X^TX)^{-1}X^T{\boldsymbol y} a=(XTX)1XTy
    其中 (XTX)−1XT(X^TX)^{-1}X^T(XTX)1XT 被称为 XXX 的伪逆。这个时候公式(8)(8)(8) 就被称为最小二乘法。

  2. N<nN< nN<n

    此时 (XTX)(X^TX)(XTX) 是一个 n×n{n \times n}n×n 的矩阵,由于 R(XTX)≤R(X)≤NR(X^TX)\le R(X) \le NR(XTX)R(X)N 进而 R(XTX)≠nR(X^TX)\neq nR(XTX)=n 因此它是不可逆的。

    当遇见第2种情况时,我们该怎么办呢?这里给大家提供一种正则化的方法,即令
    J=∣∣Xa−y∣∣2+λ∣∣a∣∣2=(Xa−y)T(Xa−y)+λaTa=(aTXT−yT)(Xa−y)+λaTa=aTXTXa−aTXTy−yTXa+yTy+λaTa=aTXTXa−2yTXa+yTy+λaTa \begin{aligned} J &=||X {\boldsymbol a} - {\boldsymbol y}||^2 + \lambda|| {\boldsymbol a}||^2\\ &= (X {\boldsymbol a} - {\boldsymbol y})^T(X {\boldsymbol a} - {\boldsymbol y}) + \lambda {\boldsymbol a}^T {\boldsymbol a}\\ &= ({\boldsymbol a}^TX^T-{\boldsymbol y^T})(X {\boldsymbol a} - {\boldsymbol y}) + \lambda {\boldsymbol a}^T {\boldsymbol a} \\ &= {\boldsymbol a}^TX^TX{\boldsymbol a} - {\boldsymbol a}^TX^T {\boldsymbol y} - {\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} + \lambda {\boldsymbol a}^T {\boldsymbol a} \\ & = {\boldsymbol a}^TX^TX{\boldsymbol a} - 2{\boldsymbol y}^T X {\boldsymbol a} + {\boldsymbol y}^T{\boldsymbol y} + \lambda {\boldsymbol a}^T {\boldsymbol a} \end{aligned} J=Xay2+λa2=(Xay)T(Xay)+λaTa=(aTXTyT)(Xay)+λaTa=aTXTXaaTXTyyTXa+yTy+λaTa=aTXTXa2yTXa+yTy+λaTa
    此时再令
    ∂J∂a=02XTXa−2XTy+λa=0XTXa+λa=XTy(XTX+λI)a=XTy \begin{aligned} \frac{\partial J}{\partial {\boldsymbol a}} &= 0 \\ 2 X^TX{\boldsymbol a} -2X^T{\boldsymbol y} + \lambda {\boldsymbol a}&= 0 \\ X^TX{\boldsymbol a} + \lambda {\boldsymbol a} &= X^T{\boldsymbol y} \\ (X^TX+\lambda I){\boldsymbol a} &= X^T {\boldsymbol y}\\ \end{aligned} aJ2XTXa2XTy+λaXTXa+λa(XTX+λI)a=0=0=XTy=XTy
    在上面的式子里,(XTX+λI)(X^TX+\lambda I)(XTX+λI) 一定是可逆的。

    ∀y∈Rn,y≠0\forall {\boldsymbol y} \in \R^n,{\boldsymbol y}\neq {\boldsymbol 0}yRn,y=0 ,有
    yT(XTX+λI)y=yTXTXy+λyTy=(Xy)T(Xy)+λyTy=∣∣Xy∣∣2+λ∣∣y∣∣2>0 \begin{aligned} {\boldsymbol y}^T(X^TX+\lambda I){\boldsymbol y} &={\boldsymbol y}^TX^TX{\boldsymbol y} + \lambda {\boldsymbol y}^T{\boldsymbol y}\\ &=(X{\boldsymbol y})^T(X{\boldsymbol y}) + \lambda {\boldsymbol y}^T{\boldsymbol y} \\ &= ||X{\boldsymbol y}||^2+\lambda ||{\boldsymbol y}||^2 > 0 \end{aligned} yT(XTX+λI)y=yTXTXy+λyTy=(Xy)T(Xy)+λyTy=Xy2+λy2>0
    因此(XTX+λI)(X^TX+\lambda I)(XTX+λI) 是对称正定的,所以可逆。

    因此有
    a=(XTX+λI)−1XTy {\boldsymbol a} = (X^TX+\lambda I)^{-1} X^T {\boldsymbol y} a=(XTX+λI)1XTy
    这种求解方法称之为最小范数法,也是机器学习中的岭回归。

4. PCA原理和推导

在这里插入图片描述

原理

PCA实质上还是一种数据压缩的技术,如上图所示,已知 NNN 个样本点(‘+’标记),每一个样本点需要两个参数来表述,那么所有样本点共需要 2∗N2*N2N 个参数。现在我们想找一个方向如图中 u⃗\vec{u}u ,使得每一个样本点向这个方向做投影,使得 u⃗\vec{u}u 成为新的坐标轴,此时样本点在新坐标轴上的位置只需要一个参数就可以表示,那么所有投影点共需要 N+2N+2N+2 个参数来表示,从而达到了数据降维的目的。

但是这种用投影点替代真实样本点的方法,必然会带来误差,也就是A和A’之间的距离。因此我们需要找到一个投影方向,使得所有样本点与投影点之间的误差和最小,即最小重构误差。

在这里插入图片描述

做PCA前,需要将样本进行中心化操作,这样可以使得误差更小。

推导

在这里插入图片描述

首先我们需要知道一个原始点与投影点之间的误差是多少?如图所示,假定 ∣∣u⃗∣∣=1||\vec{u}||=1u=1 ,已知有一点 x⃗\vec{x}x ,在未知的 u⃗\vec{u}u 方向上的投影点为 <x⃗,u⃗>u⃗<\vec{x},\vec{u}>\vec{u}<x,u>u ,此时误差为
E=x⃗−<x⃗,u⃗>u⃗=x−(xTu)u \begin{aligned} E &= \vec{x} - <\vec{x},\vec{u}>\vec{u}\\ &= x - (x^Tu)u \end{aligned} E=x<x,u>u=x(xTu)u
其中,x,u∈Rn,且uTu=1x,u\in \R^n,且u^Tu=1x,uRn,uTu=1

我们的目的就是求取误差 JJJ 取最小值时的 u⃗\vec{u}u,即
min⁡u⃗∣∣E∣∣2=∣∣x−(xTu)u∣∣2=[x−(xTu)u]T[x−(xTu)u]=[xT−(xTu)uT][x−(xTu)u]=xTx−(xTu)2−(xTu)2+(xTu)2=xTx−(xTu)2=∣∣x∣∣2−(xTu)2 \begin{aligned} \min_{\vec{u}}||E||^2 &= ||x - (x^Tu)u||^2 \\ &= [x - (x^Tu)u]^T[x - (x^Tu)u] \\ &= [x^T - (x^Tu)u^T][x - (x^Tu)u]\\ &= x^Tx - (x^Tu)^2 - (x^Tu)^2 + (x^Tu)^2\\ &= x^Tx- (x^Tu)^2\\ &= ||x||^2 - (x^Tu)^2 \end{aligned} uminE2=x(xTu)u2=[x(xTu)u]T[x(xTu)u]=[xT(xTu)uT][x(xTu)u]=xTx(xTu)2(xTu)2+(xTu)2=xTx(xTu)2=x2(xTu)2
从而就是
max⁡u⃗(xTu)2⇒max⁡u⃗(xTu)(xTu)⇒max⁡u⃗(uTx)(xTu)⇒max⁡u⃗uT(xxT)u \max_{\vec{u}} (x^Tu)^2 \Rightarrow \max_{\vec{u}} (x^Tu)(x^Tu) \Rightarrow \max_{\vec{u}} (u^Tx) (x^Tu) \Rightarrow \max_{\vec{u} }u^T(xx^T)u umax(xTu)2umax(xTu)(xTu)umax(uTx)(xTu)umaxuT(xxT)u
以上推导是针对使得一个样本的重构误差最小,那么如果给了 NNN 个样本点,我们就需要找到一个 u⃗\vec{u}u 使得所有样本点的重构误差和最小,即
max⁡u⃗uT∑i=1N(xixiT)u \max_{\vec{u}} u^T \displaystyle \sum_{i=1}^N (x_ix_i^T)u umaxuTi=1N(xixiT)u
X=∑i=1N(xixiT)X = \displaystyle \sum_{i=1}^N (x_ix_i^T)X=i=1N(xixiT) ,此时 XXX 一般是对称正定矩阵,则有最优化公式
{max⁡u⃗uTXust.∣∣u∣∣=1 \left\{ \begin{aligned} \max_{\vec{u}} u^T Xu \\ st. ||u||=1 \end{aligned} \right. umaxuTXust.u=1
上面是一个有约束条件的最优化公式,我们使用拉格朗日乘子法进行求解,令
L(u,λ)=uTXu+λ(1−uTu) \begin{aligned} L(u,\lambda) = u^TXu + \lambda(1-u^Tu) \end{aligned} L(u,λ)=uTXu+λ(1uTu)
然后对 u,λu,\lambdau,λ 进行求导,使得
∂L∂u=0⇒Xu=λu∂L∂λ=0⇒uTu=1 \frac{\partial L}{\partial u} = 0 \Rightarrow Xu=\lambda u\\ \frac{\partial L}{\partial \lambda} = 0 \Rightarrow u^Tu=1\\ uL=0Xu=λuλL=0uTu=1
根据公式(12)(12)(12),我们只需要对 XXX 进行特征分解,找到其特征向量,然后对其特征向量做单位化即可。由于 XXX 是对称正定矩阵,因此它有 nnn 个 特征值和其对应的特征向量,这里的特征向量就是我们想要的投影主方向,其中特征值的大小是反映了该主方向的重要程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值