FTRL 笔记

DL基本知识(七)FTRL优化器 随笔: 寻优过程是随机选择一个样本进行梯度更新,很多情况下L1正则化也不会导致选择的最优值落在"角"上,因而稀疏性也不是这么明显。 阅读详情

  这篇笔记主要参考冯杨的五篇博客:在线最优化求解(Online Optimization)。因为对于在线学习方法,稀疏性问题需要特别关注:每次在线学习一个新 instance 的时候,优化方向并不一定是全局最优,不容易产生稀疏解,而简单截断又可能将从全局看不该稀疏掉的特征变为零。所以这里以 L1 正则为基础,比较几种在线学习算法。

0,预备

每个 instance 由特征向量和预测目标组成: (x,y) 。其中 x∈RN,y∈{0,1} 。第 t 个新样本标记为 (x(t),y(t))。

模型预测值:

p=σ(w⋅x)=11+e−w⋅x

经验损失函数采用交叉熵的形式:

ℓ0(w)=−ylogp−(1−y)log(1−p)

经验损失对权重的梯度,后面用 g 表示:

g≡∇ℓ0(w)=(p−y)x

1,L1 正则

基本的 L1 正则逻辑回归方法,在经验损失函数中直接加入 L1 正则项 ℓ(w)=ℓ0(w)+λ|w| ,然后直接优化。在某一方向上的梯度为:

∇ℓ(w)=g+λ ∇|wt|

迭代方式:

wt+1=wt−η∇ℓ=wt−ηgt−ηλ∇∣∣wt∣∣
其中 η>0 是学习率。 ∇|wi| 在 0 处非光滑,故需要使用次梯度来代替,即使用一些截断方法。

1.1 截断方式:

  1. 简单截断法:
    从上面的更新公式可以看出,L1 正则的作用是,如果 wti>0 ,将 w 在 沿梯度下降方向移动后,再减去一个常数; 如果 wti<0,则是加上一个常数。总之使其向 0 靠拢。下面就是一种简单的截断方法,使得如果经过 L1 正则修正后越过 0,则直接置为 0,从而实现有效稀疏性。

    wt+1i=T0(wti−ηgti, ηλ)T0(x,y)={0,xif |x|≤yotherwise

  2. 截断梯度法(TG)
    相比上面方法不那么粗暴,在两端接近被截断的小范围 θ 内,向横轴移动一段,使其近 0 端达到 0。当 θ=ηλ 时,与上面的简单截断法相同。

    wt+1i=T1(wti−ηgti, η λ, θ)T1(x,y,z)=⎧⎩⎨0,x−y,xif |x|≤yif |x|∈(y,z)if |x|>z

这两种截断方法在更新时都会取窗口 k ,每 k 步做一次截断。 t%k≠0 时不截断(令 λ=0 )。

2,L1-FOBOS

(2.1) 优化目标

Forward-Backward Splitting,是由 John Duchi 和 Yoram Singer 提出的。

FOBOS 中模型的更新分为如下两步,优先沿经验损失减小的方向优化,然后在尽量与上一步结果偏离不太远的情况下,最小化正则项 Ψ(w) 。这样不需要设定截断规则,就能得到类似的结果。

wt+12=wt−ηtgtwt+1=argminw{12∥w−wt+12∥2+η12 Ψ(w)}

把第一个式子代入第二个,由极小值时梯度为零易得:

wt+1=wt−ηtgt−ηt+12 ∇Ψ(wt+1)

可以看出,这里与直接的 L1 正则损失的唯一区别是,这里有两个 η ,而在前面这两个 η 是相等的。

(2.2) L1 正则下的求解

L1-FOBOS 就是在上面取 L1 正则 Ψ(w)=λ |w| 。引入记号 v=w−ηg ,以及 λ~=ηt+12λ ,则前面的优化问题重新写为分量形式:

wt+1i=argminwi{12(wi−vi)2+λ~|wi|}

假设最优解是 w∗i ,后面省去下标 i ,

  1. w∗v≥0
    证明:
    因为 w∗ 是最优解,所以有

    12(w∗−v)2+λ~|w∗|≥12v2
    当 w∗=0 时取等号。从而得到
    w∗v≥w∗2+λ~|w∗|≥0

    • 当 v≥0 时:
      则 w∗≥0 ,引入拉格朗日乘子 β>0 和约束条件 βw∗=0 ,优化目标

      12(w∗−v)2+λ~w∗−βw∗
      易得极小值时的解 w∗=v−λ~+β 。

      • w∗>0 , 此时有 β=0 , v>λ~ , w∗=v−λ~
      • w∗=0 ,则有 v−λ~+β=0 , β≥0 ,所以 v≤λ~

      综合结果

      w∗=max(0,v−λ~)

    • 当 v<0 时:
      类似上面的方法,得到

      w∗=−max(0,−v−λ~)

    • 综合以上结果,可得:

      wt+1=sgn(vi)max(0,|vi|−λ~)=⎧⎩⎨⎪⎪0,vi−λ~,vi+λ~,if |vi|≤λ~if vi>λ~if vi<−λ~

      3. L1-RDA

      RDA(Regularized Dual Averaging),由微软的 Lin Xiao 在 2010 年提出。优化目标是最小化 {12g1:t⋅w+Ψ(w)+βtth(w)} ,其中 g1:t=∑ts=1gs , Ψ(w) 是正则项, βt 是非负非自减序列, h(w) 是辅助的严格凸函数。

      L1-RDA 具体的更新策略如下:

      wt+1=argminw{12g1:t⋅w+λ|w|1+γ2t√∥w∥22}
      其中 λ>0 , γ>0 。为求解方便,令 g¯ti=12g1:ti , 写出最小化问题的分量形式:
      minwi{g¯tiwi+λ|wi|+γ2t√w2i}

      求上式梯度,并直接令梯度为零来寻找最优解 w∗i :

      g¯ti+λξ+γt√w∗i=0
      其中 ξ=∂∣∣w∗i∣∣ 是正则项在最优点的次梯度,满足:
      ξ=⎧⎩⎨⎪⎪1,−1,(−1,1)if w∗i>0if w∗i<0if w∗i=0

      分情况分析:
      1. ∣∣g¯ti∣∣<λ ,

      • w∗i=0 , 则有 ξ=−gλ∈(−1,0] , 满足条件。
      • w∗i>0 , 则 ξ=1 , g+λξ+γt√w∗i>g+λ≥0 ,条件相斥。
      • w∗i<0 ,则 ξ=−1 , g−λ+γt√w∗i<0 ,也不满足
        所以此时 w∗i=0

      2 . g¯ti>λ

      • w∗i=0 ,则有 ξ=−gλ∈(−∞,0) , 不满足
      • w∗i>0 , 则有 ξ=1 , g+λξ+γt√w∗i=−t√γg+λ≥0 ,不满足
      • w∗i<0 ,则有 ξ=−1 , w∗i=−t√γ(g−λ)<0 ,满足条件
        所以此时 w∗i=−t√γ(g¯∗i−λ)

      3 . g¯ti<−λ

      • w∗i=0 ,则有 ξ=−gλ∈(1,+∞) , 不满足
      • w∗i>0 , 则有 ξ=1 , w∗i=−t√γ(g+λ)>0 ,与假设一致
      • w∗i<0 ,则有 ξ=−1 , w∗i=−t√γ(g−λ)>0 ,与假设矛盾
        所以此时 w∗i=−t√γ(g¯ti+λ)

      综上可得更新方式:

      wt+1i={0,−t√γ(g¯ti−λ sgn(g¯ti))if ∣∣g¯ti∣∣<λif ∣∣g¯ti∣∣>λ

      总结,RDA 主要计算每一维的累积平均梯度,与 λ 相比来做截断,更新权重。更新的幅度与迭代次数 t 直接相关,但在模型的构建中,并不需要指定学习步长。

      Algorithms

      1. input λ, γ

      2. initial w∈RN , g∈RN
      3. for t=1,2,3,⋯ , do
        g←t−1tg+1t∇ℓ(w)
        refresh w by
        wi={0,if |gi|<λ −t√γ(gi−λ sgn(gi))if |gi|>λ
      4. end
      5. return w
      6. 4,FTRL

        L1-FOBOS 的优化目标分量形式可写为:

        minw{12(wi−wti−ηtgti)2+ηtλ|wi|}=minw{12(wi−wti)2+wiηtgti+ηtλ|wi|+const}=minw{12ηt(wi−wti)2+wigti+λ|wi|}

        由此重新写出更新公式:

        wt+1=argminw{gt⋅w+λ∥w∥1+12ηt∥w−wt∥22}

        而 L1-RDA 的更新策略可以写为:
        wt+1=argminw{g1:t⋅w+λ∥w∥1+12ηt∥w−0∥22}

        引入替代“更新步长“的量 σs=1ηs−1ηs−1 ,则有 σ1:t≡∑ts=1σs=1ηt 。上面两种模型,L1_FOBOS 和 L1-RDA 的更新策略重新写为:

        wt+1=wt+1=argminw{gt⋅w+λ∥w∥1+12σ1:t∥w−wt∥22}argminw{g1:t⋅w+λ∥w∥1+12σ1:t∥w−0∥22}
        其区别于相似之处非常明显。

        FTRL结合两种特点,更新策略为:

        wt+1=argminw{g1:t⋅w+λ1∥w∥1+12λ2∥w∥22+12∑s=0tσs∥w−ws∥22}

        为了求解,将上式整理为:

        wt+1==argminw{(g1:t−∑s=1tσsws)⋅w+λ1∥w∥1+12(λ2+σ1:t)∥w∥22+const}argminw{zt⋅w+λ1∥w∥1+12(λ2+σ1:t)∥w∥22}

        其中已引入 zt≡∑ts=1(gs−σsws) 。

        类似于之前的方法,首先将上式写成分量形式 minw{zti wi+λ1|wi|+12(λ2+σ1:t)w2i} ,分析即可得到结果:

        wt+1t={0,−1λ2+σ1:t(zti−λ1 sgn(zti)),if |zi|<λ1if |zi|>λ1

        建议的学习步长的取值方式为:

        σ1:ti=1ηti=β+∑ts=1(gsi)2−−−−−−−−−√α
        即不同特征的权重的更新步长也不相同。

        Algorithm

        input α , β , λ1 , λ2
        initialize w∈RN , z=0⃗ ∈RN , n=0⃗ ∈RN
        for t=1,2,3,... , do
        g=∇ℓ(w;xt,yt)
        for i=1,2,3,...,N , do
        σi=1α(ni+g2i−−−−−−√−ni−−√)
        zi←zi+(gi−σiwti)
        ni←ni+g2i
        wi={0,if |zi|≤λ1 −(β+ni√α+λ2)−1(zi−sgn(zi)λ1)otherwise
        end for
        end for

FTRL之初学笔记 理论FTRL的发展历程,见微博团队冯杨的在线最优化求解.pdf 网页版见在线最优化求解(Online Optimization)之五:FTRL原始论文:https://www.eecs.tufts.edu/~dsculley/papers/ad-click-prediction.pdf 原论文的中文总结:Google广告点击预估 [KDD2013],其他注释如:各大公司广泛使用的在线学习算法FT 阅读详情

相关推荐

推荐系统笔记8-FTRL

本来是想通过学习别人的博客,来了解FTRL,但是经典之作还是想通读一篇论文;本文介绍Google在2013年发布在KDD的《Ad Click Prediction: a View from the Trenches》; 摘要 ...

年少_当自强的博客 1027

5.Wide & Deep Learning for Recommender Systems论文详细解读和代码实现

一、总述 Wide & Deep作为一篇推荐领域的经典论文,不仅具有很高的研读价值,而且在推荐和广告领域得到了极大的推广和应用。该论文的思想归结起来就是两个词:Wide & Deep。Wide模型用来从训练数据中学得出现频率高的特征或者特征组合,也就是论文提到的模型的 memorization能力;Deep模型则用来从训练数据中学得出现频率低或者没出现过的特征组合,也就是论文提到的模型的generalization能力。这两类问题和推荐场景中的exploitation和exploration

zhaozhiwei314的博客 2230

Online LR—— FTRL 算法理解

Online LR—— FTRL 算法理解 Online Learning定义 Online Learning是一种模型训练的方法,能够根据线上反馈数据,实时快速的进行模型调整,使得模型及时反映线上的变化,提高线上预测的准确率。Online Learning的流程包括:将模型预测结果展现给用户,然后收集用户的反馈数据,再来训练模型,形成闭环的系统。 与传统训练方法的区别 传统的训练方法

ustbfym的博客 5956

白话推荐系统(一): 一文看懂Wide & Deep

​ Wide & Deep是由谷歌APP Stroe团队在2016年提出的关于CTR预测的经典模型,该模型实现简单,效果却非常好,因而在各大公司中得到了广泛应用,是推荐系统领域的经典模型!团队:Google APP Store发表时间:2016年。

qq_41915623的博客 2125

【学习笔记】l1正则化编程

这里前提要求我们weights+biases的数量不能超过600个,并且loss(对数损失函数)的loss不能超过0.35 。现在让我们来处理数据集。 这里我们是median_house_value作为targets,并且超过75%的设为1,低于75%的设为0。这里我们不再按照之前的写法,而是将所有的特征进行分箱。 import numpy as np import pandas as pd...

Canon__的博客 1823

FTRL算法理解

本文主要是对FTRL算法来源、原理、应用的总结和自己的思考。 解决的问题 1、训练数据层面:数据量大、特征规模大 2、常用的LR和FM这类模型的参数学习,传统的学习算法是batch learning算法,无法有效地处理大规模的数据集,也无法有效地处理大规模的在线数据流 3、需要高效的online learning算法来解决这种问题 在线学习算法 SGD wt+1=wt−ntgt w_{t+1} =...

weixin_42944192的博客 2042

RDA(Regularized Dual Average) 稀疏在线学习算法

转载地址:http://www.cnblogs.com/luctw/p/4757943.html 不论怎样,简单截断、TG、FOBOS都还是建立在SGD的基础之上的,属于梯度下降类型的方法,这类型方法的优点就是精度比较高,并且TG、FOBOS也都能在稀疏性上得到提升。但是有些其它类型的算法,例如RDA从另一个方面来求解Online Optimization并且更有效地提升了特征权

alva_bobo的博客 3673

点击率预测算法:FTRL

1逻辑回归 1 sigmoid函数 2 极大似然估计MLE与损失函数 3 梯度下降 4 另一种形式的损失函数及其梯度 2FOBOS与RDA 1 FOBOS基本原理 2 L1-FOBOS 3 RDA基本原理 4 L1-RDA 3FTRL 1 从L1-FOBOS和L1-RDA推导FTRL 2 FTRL权重更新的最终形式 3 学习率 4 工程实现计算过程 41 一些定义 42 FTRL算法 4FTRL的工

jediael_lu的专栏 7076

Lr

二、 逻辑回归        言归正传,因为广告大部分是按照CPC计费的,而我们手里的流量是固定的,因此对每条广告请求我们就需要保证这条广告的展示收益更大。而广告收益是可以根据点击率、广告计费价格、广告质量度均衡决定的,所以我们就需要评估广告的质量度和点击率,本文就主要研究广告点击率预估中广泛使用的逻辑回归模型。在实际广告点击率预估的应用中,样本数目和特征(逻辑回归粗暴离散化后)的数目均可以达到

周红伟讲AI 1102

FTRL的基础知识准备 part-1

前言  最近看了下在线学习FTRL的相关东东,对其背后的理论知识梳理下。   假设loss 函数为 f(x)f(x),其中ft(xt)f_t(x_t)表示第t轮数据所对应的loss。   $xt+1=argminx∑tt=1ft(x)x_{t+1}=\underset{x} {argmin} \sum_{t=1}^t f_t(x) $   主要求证一个问题,这个取参数的策略在什么情况有效?为什么有效?

yujianmin1990的专栏 4549

从Starlink看NTN:SSB波束数量少,用户体验真的会差吗?

当SpaceX的Starlink以每月新增上百颗卫星的速度扩张其星座时,一个有趣的技术现象正在引发行业讨论:为何这个全球最大的低轨卫星网络选择使用相对较少的波束数量?波束数量的选择远非简单的技术参数,而是系统设计哲学、商业策略与终端用户体验的复杂平衡。传统地面网络可以依赖密集基站实现精准覆盖,而卫星通信必须面对一个根本性挑战:如何在数百公里的高空,用有限的射频资源服务广阔的地理区域。当我们在撒哈拉沙漠测试不同波束方案时,发现了一个关键洞见:最佳波束数量不是固定的技术参数,而是随网络发展阶段变化的动态值。

weixin_32308101的博客 334

FTRL算法

概述 GBDT算法是业界比较好用筛选特征的算法,在线学习考虑效率和数据量,经常用GBDT离线筛选特征,输入到在线模型进行实时训练,如今比较好用的方法有两个:FTRL和FM,下面将深入介绍各自的原理以及应用的案例 离线特征筛选:GBDT 线上模型(1):FTRL 点击率预估(CTR)问题是计算广告中非常重要的模块,通过预估用户对广告的点击概率来对广告进行排序,进而提升广告效果和收益效率。对于...

数据喵的博客 7059

ITK-snap进行分割区域标注、三维显示及改变显示颜色

在进行医学图像器官分割时,无论我们是用传统方法还是深度学习,最后肯定要用到手动分割的区域作为金标准来验证我们方法的精度。但是手动标注器官的轮廓是十分耗时的,这里我介绍一个比较简单的标注方法,以肺分割作为例子。 我们使用ITK-snap作为分割标注工具。 当切片间距离比较小时,比如1mm,一个患者的完整HRCT序列通常在200张以上,如果让医生一一进行分割区域标注是非常耗时乏味的。因此,我们可以使用最简单的阈值法比如OSTU,加上基本的形态学操作对肺进行粗分割得到粗略的分割掩码,在此基础上再手动的对分割结果进

u010409517的博客 2万+

机器学习基础知识(五)--- FTRL一路走来,从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL

在线学习算法FTRL

china1000的专栏 4万+

智能安防摄像头埋点实践:用户行为与设备状态的闭环监控(含AI事件)

智能安防摄像头埋点闭环体系设计及应用实践 摘要: 本文系统阐述了智能安防摄像头埋点闭环体系的设计与实践。首先分析了传统埋点的不足及闭环埋点的价值,提出由用户行为埋点、设备状态埋点和AI事件埋点构成的三维埋点体系框架。详细介绍了闭环监控的四大流程:数据采集、汇聚清洗、分析建模和智能决策。通过误报优化、个性化策略等案例展示了AI事件闭环的实际应用价值,并探讨了隐私合规、性能优化等关键挑战的解决思路。最后展望了端侧AI增强、预测型埋点等未来发展趋势。该体系实现了从数据采集到业务决策的完整闭环,有效提升了AI模型性

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 1046

CSP-J 入门级第一轮认证 2025 详细解析

2025年CSP-J入门级第一轮认证模拟赛提供10套免费试题,含选择题与解析。选择题涉及计算机科学基础,如32位无符号整数最大值计算(约42.9亿,选A)、C++位运算(255&254=254,选B)、递归函数分析(calc(5)=6,选B)、哈夫曼树构造(带权路径长度186,选B)等。其他题目涵盖图论(有向图边数等于入度/出度和,选B)、组合数学(120种选法,选C)、布尔逻辑(选项C不恒等)、模运算周期性(f[2025]=6,选D)、C++字符串特性(支持string+char,选B)及引用传参

lan_in的博客 2942

20240317-2-推荐算法FTRL

FTRL(Follow the Regularized Leader) 由Google的H. Berendan McMahan 等人于2010年提出【4】,FTRL是一种在线最优化求解算法,结合L1-FOBOS和L1-RDA算法,用于解决在线学习中,权重参数不能产生较好的稀疏性的问题。由于在线学习涉及内容较多,本文从提升模型稀疏性的角度入手,简单介绍经典的TG, L1-FOBOS, L1-RDA 和 FTRL 算法的原理。

qq_24428851的博客 1736

一步一步搭建S32K14x的AutoSar项目----S32DS 代码工程的搭建

一步一步搭建S32K14X的AutoSar项目----S32DS代码工程的搭建

wo580231的博客 3490

FTRL

FTRL参考论文:Ad Click Prediction: a View from the TrenchesFTRL是一种在线学习的训练方法,是一种增量的学习方法,即可以保证训练的精度,又可以保证解的稀疏,非常适合大规模的LR在线训练。FTRL的优化目标为: wt+1=argminw(g1:tw+12∑s=1tδs∥w−ws∥22+λ1∥w∥1)\begin{equation} w_{t+1}

Skywalker 1090

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

GDB交叉编译与问题解决:从零到精通的深度指南

完成后,GDB会安装到/usr/local/gdb-aarch64/bin,可以用aarch64-linux-gnu-gdb --version检查。:得有支持目标架构的交叉编译工具链,比如gcc-arm-none-eabi(用于ARM裸机)或aarch64-linux-gnu-gcc(用于ARM Linux)。:在配置工具链时,运行aarch64-linux-gnu-gcc --version检查版本,确保工具链没问题。这种场景下用GDB调试,就像在荒野求生,但别慌,GDB依然是你的好伙伴。

大模型大数据攻城狮的专栏 1万+

【算法】在线学习算法FTRL详解

原文链接:http://www.cnblogs.com/EE-NovRain/p/3810737.html   现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据流,google先后三年时间(2010年-2013年)从理论研究到实际工程化实现的FTRL(Follow-the-regula

一寒惊鸿 4万+

Unity零基础到入门 ☀️| 轻松学会 Unity界面布局和简单实例——入门级!(^_−)☆

入门级Unity知识,一起加油呀!

努力前行,总会成为自己心中的那道光 1万+

FTRL实战之LR+FTRL(代码采用的稠密数据)

FTRL(Follow The Regularized Leader)是一种优化方法,就如同SGD(Stochastic Gradient Descent)一样。这里直接给出用FTRL优化LR(Logistic Regression)的步骤: 其中pt=σ(Xt⋅w)是LR的预测函数,求出pt的唯一目的是为了求出目标函数(在LR中采用交叉熵损失函数作为目标函数)对...

永远飞翔的鸟 2021

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

FTRL算法详解

一、算法原理 二、算法逻辑 三、个人理解 从loss function的形式来看:FTRL就是将RDA-L1的“梯度累加”思想应用在FOBOS-L1上,并施加一个L2正则项。【PS:paper上是没有加L2正则项的】 这样达到的效果是: 累积加和限定了新的迭代结果W**不要离“已迭代过的解”太远**; 因为调整后的解不会离迭代过的解太远,所以保证了每次找到让之前所有...

dl2277130327的博客 1796

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

在线学习算法FTRL-Proximal原理

1.背景 Follow The Regularized Leader Proximal,简称FTRL,由Google公司提出。由于FTRL收敛速度快、能产生稀疏解等优势,FTRL在计算广告领域的重要性日益凸显。 2.回顾SGD 可以参考文章利用SGD方法训练FM模型 地址 定义: 模型参数: 第t个样本: 自定义Loss Function 然后可以利用随机梯度下降(SGD)得到参数

雪伦的专栏 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: RBM (受限玻尔兹曼机)
下一篇: 排序比较指标
schwt
博客等级 码龄17年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值