最小二乘问题

最小二乘问题

\quad 对我自己而言,最小二乘问题是最神秘的问题。套公式用很多年,但一直没有真正的理解其中深刻的含义。其中可能是因为线性代数到这里就相对抽象,而且矩阵的正交性质可能掌握也不是特别牢固。
今天就把整个线性空间的正交性质,以及如何用正交性推导出最小二乘优化问题整理出来,以备后面温习,如有错误之处,还请帮忙指出。

下面先补充一点理论知识
概念 1. 向量的正交。
\quad 首先我们先从二维(三维)空间去验证推导,因为二维和三维空间是容易从几何角度去分析,人更容易直观的理解。然后通过二维三维的特性,向高纬度推广同样适用。

标量积定义
\quad R n R^n Rn中的标量积,两个 R n R^n Rn向量x,y。x,y的标量积(点积)
x . y = x T y = x 1 y 1 + x 2 y 2 + . . . + x n y n x.y=x^Ty=x_1y_1+x_2y_2+...+x_ny_n x.y=xTy=x1y1+x2y2+...+xnyn

向量x的模长
∣ ∣ x ∣ ∣ = x T x = x 1 2 + x 2 2 + . . . + x n 2 ||x||=x^Tx=\sqrt{x_1^2+x_2^2+...+x_n^2} ∣∣x∣∣=xTx=x12+x22+...+xn2

向量y的模长
∣ ∣ y ∣ ∣ = x T x = y 1 2 + y 2 2 + . . . + y n 2 ||y||=x^Tx=\sqrt{y_1^2+y_2^2+...+y_n^2} ∣∣y∣∣=xTx=y12+y22+...+yn2

定义 令x和y均为R2或R3的向量,x和y间的距离定义为数值||x-y||
(注:主要是用低纬度直观验证,高纬度可以直接推广)

在这里插入图片描述
例:若 x = ( 3 , 4 ) T x=(3,4)^T x=(3,4)T y = ( − 1 , 7 ) T y=(-1,7)^T y=(1,7)T,则x和y之间距离为
∣ ∣ y − x ∣ ∣ = ( − 1 − 3 ) 2 + ( 7 − 4 ) 2 = 5 ||y-x||=\sqrt{(-1-3)^2+(7-4)^2}=5 ∣∣yx∣∣=(13)2+(74)2 =5

定理 若x为 R 2 R^2 R2 R 3 R^3 R3中的两个非零向量,且 θ \theta θ为他们的夹角,则
x T y = ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ c o s θ x^Ty=||x|| ||y||cos\theta xTy=∣∣x∣∣∣∣y∣∣cosθ

下面我们用余弦定理来证明。
如上图向量x,向量y,及向量y-x,三个向量构成了三角形,由余弦定理可得:
∣ ∣ y − x ∣ ∣ 2 = ∣ ∣ x ∣ ∣ 2 + ∣ ∣ y ∣ ∣ 2 − 2 c o s θ ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ ||y-x||^2=||x||^2+||y||^2-2cos\theta||x|| ||y|| ∣∣yx2=∣∣x2+∣∣y22cosθ∣∣x∣∣∣∣y∣∣

∣ ∣ y − x ∣ ∣ 2 = ( y − x ) T ( y − x ) = ( y T − x T ) ( y − x ) = y T y − y T x − x T y + x T x = ∣ ∣ y ∣ ∣ 2 − 2 x T y + ∣ ∣ y ∣ ∣ 2 ||y-x||^2=(y-x)^T(y-x)=(y^T-x^T)(y-x)=y^Ty-y^Tx-x^Ty+x^Tx=||y||^2-2x^Ty+||y||^2 ∣∣yx2=(yx)T(yx)=(yTxT)(yx)=yTyyTxxTy+xTx=∣∣y22xTy+∣∣y2

推导出 x T y = c o s θ ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ x^Ty=cos\theta||x||||y|| xTy=cosθ∣∣x∣∣∣∣y∣∣

c o s θ = x T y ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ cos\theta={x^Ty\over ||x||||y||} cosθ=∣∣x∣∣∣∣y∣∣xTy

x的单位向量 u = x T ∣ ∣ x ∣ ∣ u={x^T \over ||x||} u=∣∣x∣∣xT 及y的单位向量 v = y T ∣ ∣ y ∣ ∣ v={y^T \over ||y||} v=∣∣y∣∣yT

下面我们就根据两个向量的夹角引出:二维和三维向量正交的定义。
定义:若 x T y = 0 x^Ty=0 xTy=0,则 R 2 R^2 R2 R 3 R^3 R3中的向量x和y称为正交的(orthogonal)。

\quad 以上是通过 R 2 R^2 R2 R 3 R^3 R3空间去定义了向量的夹角,是因为 R 2 R^2 R2 R 3 R^3 R3可以很好的描述了物理的尺度空间,通过物理空间我们可以直观的理解向量向量夹角向量正交的概念,然后通过向高纬度推广,定义相同。 得到高纬度向量夹角关系:
c o s θ = x T y ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ cos\theta={x^Ty \over ||x||||y||} cosθ=∣∣x∣∣∣∣y∣∣xTy
其投影关系及单位向量定义和 R 2 R^2 R2 R 3 R^3 R3也相同。

(个人理解,向量及其夹角正交等概念是通过物理空间验证,然后向高纬空间推广,抽象出代数上有意义的向量夹角,在二维及三维空间。向量夹角 θ \theta θ是通过三角形的余弦定理推导出来,理论基础是来自现实空间,高纬度空间(4维及以上)本身无法描绘角度概念,及高维向量也是无法用图形表示,亦无法想象出模型。所以说用代数很好的表达了抽象层的理论)

正交子空间
举例子,令A为mxn矩阵,并令x ∈ \in N(A),N(A)是A的零空间,由于Ax=0(可以这样表示{ x ∈ R n ∣ A x = 0 x \in R^n|Ax=0 xRnAx=0}),我们有 a i 1 x 1 + a i 1 x 2 + . . . + a i n x n = 0 a_{i1}x_1+a_{i1}x_2+...+a_{in}x_n=0 ai1x1+ai1x2+...+ainxn=0,其中i=1,2,…,m.
由于x和 A T A^T AT的每个列向量都正交,所以x和 A T A^T AT的列向量的任意线性组合也正交。(类似于这种形式{ y ∈ R n ∣ y = A T x ∣ x ∈ R m y \in R^n|y=A^Tx|x \in R^m yRny=ATxxRm}),任意满足{ x ∈ R n ∣ A x = 0 x \in R^n|Ax=0 xRnAx=0})及{ y ∈ R n ∣ y = A T x ∣ x ∈ R m y \in R^n|y=A^Tx|x \in R^m yRny=ATxxRm},得到 x T y = 0 x^Ty=0 xTy=0,我们称这两个 R n R^n Rn子空间为正交。

定义:设X和Y为 R n R^n Rn的子空间,若对每一 x ∈ X x \in X xX y ∈ Y y \in Y yY都有 x T y = 0 x^Ty=0 xTy=0,则称X和Y为正交的,记 X ⊥ Y X \bot Y XY.

正交补
定义:令Y为 R n R^n Rn上的子空间, R n R^n Rn中所有与Y中的每一向量正交的向量集合记为 Y ⊥ Y^\bot Y,因此 Y ⊥ = { x T y = 0 , 对每一个 y ∈ Y } Y^\bot =\{x^Ty=0,对每一个y\in Y \} Y={xTy=0,对每一个yY},集合 Y ⊥ Y^\bot Y称为Y的正交补(orthogonal complement)。

以上是把向量的夹角,正交,及正交子空间介绍了,主要是为了引出正交补的概念,正交补对与最小二乘的推导至关重要。

定理:(基本子空间定理)若A为mxn的矩阵,则 N ( A ) = R ( A T ) ⊥ N(A)=R(A^T)^\bot N(A)=R(AT),且 N ( A T ) = R ( A ) N(A^T)=R(A) N(AT)=R(A).
下面我们证明一下这个定理,加深一下印象,这个定理对于后续推导至关重要。

证: 首先我们认为 N ( A ) ∈ R ( A T ) ⊥ N(A) \in R(A^T)^\bot N(A)R(AT),假设有一个向量 x ∈ R ( A T ) ⊥ x\in R(A^T)^\bot xR(AT),所以向量x和 R ( A T ) R(A^T) R(AT)的任一向量线性组合正交,x和 A T A^T AT的每一个向量也正交,则 ( A T ) T x = A x = 0 (A^T)^Tx=Ax=0 (AT)Tx=Ax=0,推导出x必为A的零解空间,所以 x ∈ R ( A T ) ⊥ = N ( A ) x\in R(A^T)^\bot =N(A) xR(AT)=N(A)。(注:此定理比较重要)

定理:若S为 R n R^n Rn的一个子空间,则 d i m S + d i m S ⊥ = n dimS+dimS^\bot=n dimS+dimS=n,此外,若 { x 1 , x 2 , . . . , x r } \{x_1,x_2,...,x_r \} {x1,x2,...,xr}为S的一组基,且 { x r + 1 , x r + 2 , . . . , x n } \{ x_r+1,x_r+2,...,x_n\} {xr+1,xr+2,...,xn} S ⊥ S^\bot S的一组基,则 { x 1 , x 2 , . . . , x r , x r + 1 , . . . , x n } \{ x_1,x_2,...,x_r,x_{r+1},...,x_n\} {x1,x2,...,xr,xr+1,...,xn}为R^n的一组基。(此定理为了引出直和的概念)

直和定义: 若U和V为一向量空间W的子空间,且每一个 w ∈ W w\in W wW可以唯一的写为一个u和一个v的和 w = u + v , u ∈ U , v ∈ V w=u+v,u\in U,v\in V w=u+vuUvV,则我们称W为U和V的直和,并记作 W = U ⊕ V W=U \oplus V W=UV

//
以上是准备的理论基础,下面我们开始正题,最小二乘问题的推导,及求解。

  作为我心中最神秘的算法,就是有这种冲动,把它剖析的干净利落,不留疑点。
首先我们来看一个式子,A是mxn的矩阵,x是 R n R^n Rn的任一向量
A x = b Ax=b Ax=b
  看起来这个可以是线性空间,这也可以是多项式求解,线性代数的来源就是求解多项式问题,如下:
[ a 11 a 12 . . . a 1 n a 21 a 22 . . . a 2 n . . . . . . . . . . . . a m 1 a m 2 . . . a m n ] [ x 1 x 2 . . . x n ] = [ b 1 b 2 . . . b n ] \begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} &... & a_{2n} \\... & ... &... & ... \\ a_{m1} & a_{m2} &... & a_{mn} \\ \end{bmatrix}\begin{bmatrix} x1\\x2\\...\\x^n\\ \end{bmatrix}= \begin{bmatrix} b1\\b2\\...\\b_n\\ \end{bmatrix} a11a21...am1a12a22...am2............a1na2n...amn x1x2...xn = b1b2...bn
  其中 a i j a_{ij} aij的值是已知的输入值,我们要求的未知值是x,b值是我们线性变换求得的结果。
一切好像都没有问题,求出x的值只需要求解方程组即可。

  而求方程组我们自然就想到用高斯消元法。虽然繁琐了一点,就按部就班的去解方程吧。
仔细想想这里好像有点不对。试想如果m=n,且A是线性无关(就是矩阵秩r=m=n),仅有此时我们有平凡解(唯一解)。但大部分情况矩阵A是作为我们的观测输入数据,而且这个数据行向量数量(m)一般大于数据的列数(列向量维数n),及矩阵A的行数通常大于列数,m>n。

所以说,x一般情况没有平凡解(唯一解)。那么就引出一个问题,x向量既然没有平凡解,那什么解最接近真实的解呢。

   这里我们先假设 x ^ \hat{x} x^就是戴帽子的向量吧,姑且认为它是这个合适的解,至于怎么合适,什么条件合适,我们先来假设条件。
A x ^ = b ^ A\hat{x}=\hat{b} Ax^=b^
  上面戴帽子的 b ^ \hat{b} b^ 也就是合适的输出向量, 这个戴帽子的 b ^ \hat{b} b^并不等于我们的观测输出b,它们之间有差距,而这个差距我们记作 r ( x ^ ) r(\hat{x}) r(x^),称它为残差(residual)
r ( x ^ ) = b − A x ^ r(\hat{x})=b-A\hat{x} r(x^)=bAx^
  根据以上公式结果,我们发现 r ( x ^ ) r(\hat{x}) r(x^)也是一个向量,而这个向量就是观测输出b减去我们认为最合适的输入参数 x ^ \hat{x} x^和观测矩阵A的线性变换输出 A x ^ = b ^ A\hat{x}=\hat{b} Ax^=b^

  思考既然 r ( x ^ ) r(\hat{x}) r(x^)是观测数据和最佳推导数据 A x ^ A\hat{x} Ax^的残差,那么这个残差最小的时候是不是就是b和 x ^ \hat{x} x^最接近的时候了,我想应该是的吧,残差最小是不是就是残差向量的模最小,这个是定义出来的。

  这里可以自己思考一下,毕竟这类问题是哲学问题及数学问题,超出了物理范围(什么是最近,什么是最小,二维三维世界可以直观理解为物理尺度,四维空间的距离最小又是什么呢)

重点来了
在Ax的线性空间中最接近向量b的就是 A x ^ A\hat{x} Ax^,但此时 A x ^ A\hat{x} Ax^必须满足一个条件就是 b − A x ^ ∈ ( A x ) ⊥ b-A\hat{x}\in (Ax)^\bot bAx^(Ax)
上面说了这么多关于子空间正交的定理公式,这边终于是现身了,为何说 b − A x ^ ∈ ( A x ) ⊥ b-A\hat{x}\in (Ax)^\bot bAx^(Ax)
残差向量属于Ax线性空间的正交补, x ^ \hat{x} x^就是最优解,我们来证明一下:


证: 定义一 R n R^n Rn的子空间S,S=R(A),及A的列空间,向量 p ∈ S p\in S pS , p = A x p=Ax p=Ax z ∈ S ⊥ z\in S^\bot zS,
向量 b = p + z b=p+ z b=p+z(直和定义,看上面),若y为S空间的任一元素及 y ∈ S y\in S yS y ≠ p y\neq p y=p

∣ ∣ b − y ∣ ∣ 2 = ∣ ∣ b − p + p − y ∣ ∣ 2 ||b-y||^2=||b-p+p-y||^2 ∣∣by2=∣∣bp+py2
由于 b − p = z ∈ S ⊥ b-p=z\in S^\bot bp=zS,而 p − y ∈ S p-y\in S pyS
所以 ∣ ∣ b − y ∣ ∣ 2 = ∣ ∣ b − p ∣ ∣ 2 + ∣ ∣ p − y ∣ ∣ 2 ||b-y||^2=||b-p||^2+||p-y||^2 ∣∣by2=∣∣bp2+∣∣py2
因此 ∣ ∣ b − y ∣ ∣ > ∣ ∣ b − p ∣ ∣ ||b-y||>||b-p|| ∣∣by∣∣>∣∣bp∣∣
这个结果的意思是只有 b − p ∈ S ⊥ b-p\in S^\bot bpS,|||b-p||是最小的,也就是b在S上最接近的向量是p

证明完后,现在知道了 r ( x ^ ) = b − A x ^ ∈ S ⊥ r(\hat{x})=b-A\hat{x}\in S^\bot r(x^)=bAx^S,则 A ^ x A\hat{}x A^x最接近b,
得到这样的关系 A T ( b − A x ^ ) = 0 A^T(b-A\hat{x})=0 AT(bAx^)=0
A T b − A T A x ^ = 0 A^Tb-A^TA\hat{x}=0 ATbATAx^=0

x ^ = ( A T A ) − 1 A T b \hat{x}=(A^TA)^{-1}A^Tb x^=(ATA)1ATb   最终这个方程就是求出最优解的方程

  我们最开始讲了向量的夹角定义及求出公式,然后引出向量正交的概念,继续延申至子空间正交及正交补的概念,最后通过正交和正交补证出一个向量空间可由它的子空间及其子空间的正交补直和表示(注空间中任意向量,可由其子空间唯一向量及其正交补空间唯一向量表示),直和概念继续引申出,在某向量空间中一个向量b在其子空间中投影是最接近这个向量b的,这个才是最小二乘法的最终理论支撑。

下面我们开始举例子来理解其中的原理

第一个例子最简单,也是最常用的,比如在二维空间如相机的图像坐标系,相机拍一张照片,从图片里物体边缘取出很多点(这些点是通过像素边缘提取算法获得),这些点分布在物体边缘附近,那么我们如何通过这些点找出最符合物体边缘的一条直线,这个是常用的直线拟合算法,也叫线性回归(本质是最小二乘)。
在这里插入图片描述
  如上图,我们已知量是多个点的坐标, P 0 ( x 0 , y 0 ) , P 1 ( x 1 , y 1 ) , . . . , p n ( x n , y n ) P_0(x_0,y_0),P_1(x_1,y_1),...,p_n(x_n,y_n) P0(x0,y0),P1(x1,y1),...,pn(xn,yn)
最小二乘问题,首先就是要想到如何构建残差方程呢, r ( x ^ ) = b − A x ^ r(\hat{x})=b-A\hat{x} r(x^)=bAx^
直线的方程式是 y = k x + b y=kx+b y=kx+b,一元一次多项式。从这个公式的模型我们可以看出来,就是我们找到什么样的k和b,才能将输入的点坐标x组成的向量矩阵或者叫做观测矩阵,经过线性变换更接近点坐标y组成的向量。(这边的说法很绕,不容易理解)
我们把所有点坐标y值按序组成向量 b = [ y 0 y 1 . . . y n ] b=\begin{bmatrix} y_0\\y_1\\...\\y_n\\ \end{bmatrix} b= y0y1...yn ,b作为我们线性变换(b=Ax)的输出量。 x = [ k b ] x=\begin{bmatrix} k\\b \end{bmatrix} x=[kb],观测输入的矩阵就很自然的写成 A = [ x 0 1 x 1 1 . . . . . . x n 1 ] A=\begin{bmatrix} x_0 &1\\x_1 & 1\\ ...& ...\\ x_n & 1 \end{bmatrix} A= x0x1...xn11...1
这样就可以比较自然的构建 R n R^n Rn的子空间S, b = A x b=Ax b=Ax,这样的线性空间,空间中向量KaTeX parse error: Expected group after '^' at position 2: b^̲'就是所有可能的结果。那么只有向量b在线性空间S的投影才是最接近的向量,同时残差是最小,所以套用最小二乘公式
x ^ = ( A T A ) − 1 A T b \hat{x}=(A^TA)^{-1}A^Tb x^=(ATA)1ATb 就可以求得k和b的值。

所以用最小二乘求解的关键在于构建残差方程。



上面的拟合直线其实就是求取一次一元函数系数,如果是一元多次的呢,或者是多元多次的方程是否能求,当然可以,我们先来解决一元高次,然后在去解决多元高次的问题

科学家们经常收集数据,并尝试寻找变量之间的函数关系。例如,数据可能是液体的温度 T 0 , T 1 , T 2 , . . . , T n T_0,T_1,T_2,...,T_n T0,T1,T2,...,Tn,分别对应测量的时间 t 0 , t 1 , . . . , t n t_0,t_1,...,t_n t0,t1,...,tn,若温度T可以表示为一个时间函数t的函数,这个函数就可以用于预测以后的温度,如果数据有n+1个点,则可以找到一个不超过n次的多项式通过所有的点。这个多项式称为插值多项式(interpolating polynomial)。事实上,由于实验数据存在误差,不能要求函数通过所有的点。 数据越多,越准确。但很多情况高次的多项式反而不如低次多项式更真实的描述出函数关系。

举例子,以下数据求最优线性最小二乘拟合函数
x 0 3 6
y 1 4 5

在这里插入图片描述

首先我们看到这个函数是一元函数,我们设定关系是一元一次,所以函数模型 y = c 0 + c 1 x y=c_0+c_1x y=c0+c1x,及
y = A c y=Ac y=Ac

A = [ 1 0 1 3 1 6 ] A=\begin{bmatrix} 1& 0\\1& 3\\1&6\\ \end{bmatrix} A= 111036    y = [ 1 4 5 ] y=\begin{bmatrix} 1\\4\\5\\ \end{bmatrix} y= 145    c = ( A T A ) − 1 A T y c=(A^TA)^{-1}A^Ty c=(ATA)1ATy

得到结果 c = [ 4 / 3 2 / 3 ] c=\begin{bmatrix} 4/3\\2/3\\ \end{bmatrix} c=[4/32/3]

这边顺便介绍计算最小二乘法的令外一种思路,这个不是用线性代数的思路,而是用微积分的思路,
用偏导数去找到残差的极小值。
∣ ∣ r ( c ) ∣ ∣ 2 = ∣ ∣ y − A c ∣ ∣ 2 ||r(c)||^2=||y-Ac||^2 ∣∣r(c)2=∣∣yAc2   向量 y − A c = [ 1 − ( c 0 + 0 c 1 ) 4 − ( c 0 + 3 c 1 ) 5 − ( c 0 + 6 c 1 ) ] y-Ac=\begin{bmatrix} 1-(c_0+0c_1)\\4-(c_0+3c_1)\\ 5-(c_0+6c_1)\end{bmatrix} yAc= 1(c0+0c1)4(c0+3c1)5(c0+6c1)

∣ ∣ r ( c ) ∣ ∣ 2 = [ 1 − ( c 0 + 0 c 1 ) ] 2 + [ 4 − ( c 0 + 3 c 1 ) ] 2 + [ 5 − ( c 0 + 6 c 1 ) ] 2 ||r(c)||^2=[1-(c_0+0c_1)]^2+[4-(c_0+3c_1)]^2+[ 5-(c_0+6c_1)]^2 ∣∣r(c)2=[1(c0+0c1)]2+[4(c0+3c1)]2+[5(c0+6c1)]2
然后分别求 c 0 , c 1 c_0,c_1 c0,c1的偏导数,
∂ f ∂ c 0 = − 2 ( 10 − 3 c 0 − 9 c 1 ) = 0 {\partial f \over \partial c_0}=-2(10-3c_0-9c_1)=0 c0f=2(103c09c1)=0
∂ f ∂ c 1 = − 6 ( 14 − 3 c 0 − 15 c 1 ) = 0 {\partial f \over \partial c_1}=-6(14-3c_0-15c_1)=0 c1f=6(143c015c1)=0

以上两个解得相同值 c 0 = 4 3 c_0={4\over 3} c0=34    c 1 = 2 3 c_1={2\over 3} c1=32
由此可知,不同的思路,微积分,向量,竟然可以得到同样的结果,如果用概率分布是否能达到相同效果呢,思考中。

同理,如果数据看起来像高次的多项式,例如我们取二次,残差方程可以这样构建
r ^ ( c ) = y − A c = y − [ 1 x 0 x 0 2 1 x 1 x 1 2 . . . . . . . . . 1 x n x n 2 ] [ c 0 c 1 c 2 ] \hat{r}(c)=y-Ac=y-\begin{bmatrix} 1& x_0& x_0^2\\1& x_1& x_1^2\\...&...&...\\1&x_n&x_n^2\\ \end{bmatrix}\begin{bmatrix} c_0\\c_1\\c_2\\ \end{bmatrix} r^(c)=yAc=y 11...1x0x1...xnx02x12...xn2 c0c1c2

以上我们考虑的是二维平面点的函数关系,如果是三维空间点呢每个点P(x,y,z),如何构造残差方程呢
如果是一次方程 y = c 0 + c 1 x + c 2 z y=c_0+c_1x+c_2z y=c0+c1x+c2z,在几何中这个可以表达一个平面,残差方程也容易建立。
如果是空间中的直线呢,空间直线可以是两个平面的相交,就是两个平面方程,既要满足 y = c 0 + c 1 x + c 2 z y=c_0+c_1x+c_2z y=c0+c1x+c2z,又要满足 y = c 3 + c 4 x + c 5 z y=c_3+c_4x+c_5z y=c3+c4x+c5z,这个如何构建残差方程,下面我们尝试一下
其实就是把三维分别投影到X_Z平面,再投影到Y_Z平面,这样就变成了求二维的最优问题,然后再联合求解

此处请看这篇博文三维空间圆及直线拟合

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值