深度学习、机器学习面试问题总结

1. 准确率

分类正确的样本占总样本的比例。在样本不平衡的时候,评估结果会有很大的问题,比如负样本占数据的99%,即使分类器把全部样本都判断为负,也能获得99%的准确率

(TP + TN) / total

2. 精确率、召回率和F1

准确率是指分类正确的正样本占分类器判断为正样本的比例
在这里插入图片描述

召回率是指分类正确的正样本占真正的正样本个数的比例
在这里插入图片描述

比如在排序问题中,采用topN个返回结果的精确率和召回率,为了提高精确率可以把阈值N设置地小一点,判断的精确率会提高,但这样会漏掉一些评分没那么高的正样本,导致召回率降低。

F1是调和平均值,精准率和召回率只要有一个比较小的话,F1的值也会被拉下来,只有在Precision 和 Recall 都大的时候 才会大。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2ujvr2d-1649388315727)(image-20220329214601594.png)]

3. BN

即深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加之后,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。

BN通过规范化手段,把每层神经网络输入值的分布强行拉回到均值为0方差为1的标准正态分布。使的数据回到非线性函数对输入比较敏感的区域,使得损失函数有较大的梯度,避免梯度消失问题。同时梯度变大能加快模型收敛速度,提高训练速度。

BN 层在激活函数之前

4. GBDT梯度提升决策树

是一种迭代的决策树算法,该算法由多棵决策树组成,把所有树累加起来作为结果,当采用平方误差损失函数时,每一棵回归树学习的是当前所有树累加的模型和残差

提升树利用加法模型和前向分步算法实现学习的优化过程。当损失函数时平方损失,每一步的优化是比较简单的。但对于一般的损失函数,如绝对值损失函数,往往每一步的优化并没有那么容易,针对这个问题,就提出了梯度提升算法。关键思想是利用损失函数的负梯度在当前模型的值,作为残差的近似值,来拟合一个回归树

5. XGboost

XGboost是GBDT的一个变种,最大的区别是XGboost通过对目标函数做二阶泰勒展开,从而求出下一步要拟合的树的叶子节点权重。然后,根据损失函数求出每一次分裂节点的损失减小的大小,以此来选择合适的属性进行分裂。
在这里插入图片描述

6. 了解什么正则化方法?

错答:只知道L1、L2正则化

正解:

常见的正则化方法大致分为:L1/L2正则化、Dropout正则化、数据增强、早停方法,BN

7. 什么是激活函数,为什么要用激活函数?

在神经元中,各个输入通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 。
如果不用激励函数,每一层输出都是输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
使用激活函数会给神经元引入了非线性因素,增强表达能力,使得神经网络可以任意逼近任何非线性函数。

8. 激活函数有哪些?

  • Sigmoid
    在这里插入图片描述
    优点:
    1)处处连续,便于求导
    2)能够压缩数据,保证数据的幅度不会有问题
    缺点:
    1)容易出现梯度消失的现象:当激活函数接近饱和区时,变化太缓慢,导数接近0,根据反向传播的链式求导法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。
    2)导数计算涉及指数和除法(浮点计算)、计算量大
    3)不是0均值。对参数的更新造成影响,例如,输出均为正数,那么对w的导数总是正数,输出是负数,导数也全为负数;这样每次返回的梯度都只会沿着一个方向发生变化,使得收敛缓慢

  • Tanh(双曲正切)
    在这里插入图片描述
    解决了sigmoid不是0均值的问题,但仍然存在梯度消失的问题

  • ReLu(线性修正单元)
    ReLU=max(0, x)
    优点:
    1)对于sigmoid/tanh激活函数,极大的改善了梯度消失的问题
    2)计算速度快
    缺点:
    1)对参数初始化和学习率非常敏感,存在神经元死亡;
    2)ReLU的输出均值也大于0,偏移现象和 神经元死亡会共同影响网络的收敛性;

  • Softmax
    在这里插入图片描述

  • 其他
    Leaky Relu:负半轴不再为零,负半轴信息不会全部丢失,缓解神经元死亡的问题
    Maxout:同一层的神经元分成几组,对每组内的神经元,求最大值作为神经元的输出。maxout可以看成是relu家族的一个推广。缺点在于增加了参数量

8. 隐藏层为什么用relu不用sigmoid?

错答:sigmoid将信息压缩,损失信息

正解:

人工神经网络中为什么ReLu要好过于tanh和sigmoid function?

  1. sigmoid计算量大。采用sigmoid等函数,反向传播求误差梯度时,求导涉及除法和指数运算,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。
  2. 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失),这种现象称为饱和,从而无法完成深层网络的训练。而ReLU就不会有饱和倾向,不会有特别小的梯度出现。
  3. Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。当然现在也有一些对relu的改进,比如prelu,random relu等,在不同的数据集上会有一些训练速度上或者准确率上的改进,具体的大家可以找相关的paper看

9. 激活函数有什么性质?

  • 非线性。当激活函数是非线性的,一个两层的神经网络就可以基本上逼近所有的函数,这也是激活函数的意义所在
  • 可微性。保证优化过程中梯度是可计算的。
  • 单调性。当激活函数是单调的时候,单层网络能够保证是凸函数。
  • 输出范围有限。限的输出范围使得网络对于一些比较大的输入也会比较稳定

10. 正向传播

指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量和输出的过程,最后可以根据得到的输出y和真实值来计算损失函数。

11. 反向传输

指沿着从输出层到输⼊层的顺序,依次计算每层的参数的梯度。根据链式求导法则,第l层的参数的梯度,需要通过l+1层的梯度来求得,因此我们求导的过程是“反向”的。

12. LSTM相比RNN的优势

LSTM通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的RNN那样只有一种记忆叠加方式

RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。

LSTM遗忘门值可以选择在[0,1]之间,让LSTM来改善梯度消失的情况。可以选择接近1,让遗忘门饱和,此时远距离信息梯度不消失。也可以选择接近0,此时模型是故意阻断梯度流,遗忘之前信息

GRU

作为LSTM的一种变体,将遗忘门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

GRU门参数比LSTM少,训练速度会快,具体结构了解得不是很深入

13. 词嵌入(word2vec)

CBOW

获得中间词两边的的上下文,然后用周围的词去预测中间的词,把中间词当做y,把窗口中的其它词当做x输入,x输入是经过one-hot编码过的,然后通过一个隐层进行求和操作,最后通过激活函数softmax,可以计算出每个单词的生成概率,接下来的任务就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化,而求得的权重矩阵就是文本表示词向量的结果

Skip-gram

是通过当前词来预测窗口中上下文词出现的概率模型,把当前词当做x,把窗口中其它词当做y,依然是通过一个隐层接一个Softmax激活函数来预测其它词的概率。

14. 怎样提高网络得泛化性能

  • 使用更多数据
  • 使用更大批次
  • 调整数据分布,比如BN
  • 调整目标函数(略)
  • 调整网络结构(略)
  • 数据增强,图像的话进行选择平移等
  • 权值正则化,L1,L2
  • Dropout正则化

15 . 优化器

  • 梯度下降,随机梯度下降,批随机梯度下降
  • 动量(Momentum)方法

​ 原始 SGD 每次更新的步长只是梯度乘以学习率;现在,步长还取决于历史梯度,动量算法引入了变量 v 充当速度角色,以及相应得衰减系数

  • adaGrad

    属于自适应学习率的优化算法

    • 该算法的思想是独立地适应模型的每个参数:**具有较大偏导的参数相应有一个较大的学习率,**而具有小偏导的参数则对应一个较小的学习率
    • 具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根

    AdaGrad 存在的问题

    • 学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束
    • 需要设置一个全局的初始学习率
  • RMSProp

    • RMSProp 主要是为了解决 AdaGrad 方法中学习率过度衰减的问题—— AdaGrad 根据平方梯度的整个历史来收缩学习率,可能使得学习率在达到局部最小值之前就变得太小而难以继续训练;
    • RMSProp 使用指数衰减平均(递归定义)以丢弃遥远的历史,使其能够在找到某个“凸”结构后快速收敛;此外,RMSProp 还加入了一个超参数 ρ 用于控制衰减速率
  • Adam

    • Adam 在 RMSProp 方法的基础上更进一步:

      • 除了加入历史梯度平方的指数衰减平均r)外,
      • 还保留了历史梯度的指数衰减平均s),相当于动量

16. 正负样本不平衡的解决办法

  • 采样:采样方法是通过对训练集进行处理使其从不平衡的数据集变成平衡的数据集,在大部分情况下会对最终的结果带来提升。采样分为上采样(Oversampling)和下采样(Undersampling),上采样是把小众类复制多份,下采样是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。

  • 数据合成:数据合成方法是利用已有样本生成更多样本(无中生有),这类方法在小数据场景下有很多成功案例,比如医学图像分析等。SMOTE算法为每个小众样本合成相同数量的新样本,这带来一些潜在的问题:一方面是增加了类之间重叠的可能性,另一方面是生成一些没有提供有益信息的样本。为了解决这个问题,出现两种方法:Borderline-SMOTE与ADASYN。

  • 加权:基于加权矩阵,横向是真实分类情况,纵向是预测分类情况,C(i,j)是把真实类别为j的样本预测为i时的损失,我们需要根据实际情况来设定它的值。这种方法的难点在于设置合理的权重,实际应用中一般让各个分类间的加权损失值近似相等。当然这并不是通用法则,还是需要具体问题具体分析。

  • 一分类:对于正负样本极不平衡的场景,我们可以换一个完全不同的角度来看待问题:把它看做一分类(One Class Learning)或异常检测(Novelty Detection)问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括One-class SVM等。

17. 简要概述HMM、CRF、EM、GMM

  • HMM:隐含马尔科夫模型(hidden Markov model, HMM), 可以用于标注问题的统计学习模型,由隐藏的马尔科夫链,随机生成观测序列的过程,属于生成模型。HMM的三个基本问题为概率计算问题、学习问题、预测问题。

  • CRF:条件随机场(Conditional Random Field, CRF),给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。

  • EM:最大期望算法(Expectation-Maximizationalgorithm, EM)是用于含有隐变量(hidden variable)的概率模型参数的极大似然估计、或极大后验概率估计。EM 是一种迭代算法 每次迭代分两步:E步,求期望;M步, 求极大值。概率模型, 有时含有 观测变量(observablevariable), 也可能含有隐变量(hidden variable), 或者潜在变量(latent variable)。都是观测变量的话,给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数,含有隐变量的话,就要用EM.

  • GMM:高斯混合模型(Gaussian Mixed Model, GMM),指的是多个高斯分布函数的线性组合,理论上GMM可以拟合任意类型的分布。通常用于解决,同一集合下的数据包含多个不同分布的情况(或同一分布,但参数不一样,或不同类型分布)给定一组输入随机变量条件下,另一组输出随机变量条件下,的条件概率模型。假设输出随机变量构成马尔可夫随机场。

18. 神经网络为啥不用拟牛顿法而是用梯度下降?(为什么深度学习不用二阶的优化算法?)

(1) 计算量的问题
如果优化问题是 n 维的,那么单轮梯度下降的复杂度为O ( n ) O(n)O(n),Quasi-Newton 是O ( n 2 ) O(n^2)O(n
2
),Newton method 是O ( n 3 ) O(n^3)O(n)
3
)。在神经网络中, n 通常是个不小的数字,虽然 Newton method迭代次数远少于梯度下降,但是也无法弥补单轮复杂度上的巨大劣势

(2) 解的精度的问题
首先指出,机器学习问题不需要高精度解

忽略常数系数以及与这儿无关的项,泛化误差可以理解为

当 前 模 型 最 优 解 的 泛 化 误 差 ( 统 计 误 差 ) + 优 化 误 差 当前模型最优解的泛化误差(统计误差) + 优化误差当前模型最优解的泛化误差(统计误差)+优化误差

而第一项只与模型的选择、数据的分布、数据量的大小等相关,完全独立于优化算法。因此,当优化误差已经远低于统计误差时,继续优化带来的实际收益非常小,对整个泛化误差的影响很可能微乎其微

(3)稳定性的问题
越简单的东西往往越鲁棒,对于优化算法也是这样。

神经网络优化有三个问题:大数据(样本多), 高参数,非凸。而 Newton 和 Quasi-Newton 在凸优化情形下,如果迭代点离全局最优很近时,收敛速度快于梯度下降。非凸情形下,Newton 和 Quasi-Newton 会被鞍点吸引,故而每一步迭代可能不降反升

19. bagging、boosting

bagging

bagging是一种基本的集成学习方法,通过对数据集进行随机有放回的抽样,构造K个与原数据集相同大小的数据集,然后训练得到K个弱分类器,最后将它们组合起来得到一个强分类器。组合的方式通常采用投票的方法,即K个弱分类器得到的结果中,数量最多的那一个作为最终的结果。

优点:提高泛化能力,由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对数据波动大的情况下,可以考虑采取bagging

随机森林

随机森林相当于用bagging的方法来组合多棵决策树。通过均匀抽样的方法,得到若干个大小相同的数据集,然后分别训练得到多棵决策树。在预测的时候,一个新的样本都会经过所有的决策树,最后通过投票的方法来得到结果。

boosting

通过迭代的方法来训练基分类器,每一轮训练会给样本赋予一个权重,它不改变所给的训练数据,而不断改变训练数据权值的分布。权值分布依赖于上一轮的分类结果, 误分类样本的权值会被放大,这样会在下一轮的训练中起更大的作用。

组合的时候是对若干个基分类器的加权表决,误差小,预测效果好的预测函数权重更大。

bagging和boosting的区别

取样方式不同。Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于像神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。
或者

bagging与boosting的区别

  • 样本选择上

bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的

boosting:每一轮的训练集不变,只是训练集中每个样例 在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整

  • 样例权重

bagging:使用均匀取样,每个样例的权重相等

boosting:根据错误率不断调整样例的权值,错误率越大则权重越大

  • 预测函数

bagging:所有预测函数的权重相等

boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重

  • 并行计算

bagging:各个预测函数可以并行生成

boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果

  • 方差偏差

bagging:再取样,然后再每个样本上训练出来的模型去平均,所以降低模型的方差

boosting:每次迭代都根据上一次迭代的预测结果对样本加权,所以迭代不断进行,误差越来越小,所以bias会不断降低

20. 蒙特卡洛

在模型已知的情况下,可以利用动态规划的方法解决马尔可夫决策过程问题。但在现实的强化学习任务中,状态转移概率P、奖励函数R往往很难得知,甚至很难知道环境中一共有多少状态,若学习算法不依赖于环境建模,则称为“无模型学习”。无模型的强化学习方法包括蒙特卡洛方法和时间差分方法。

利用蒙特卡罗采样,给定状态s,按照策略π \piπ做出行为a,一直持续下去直到终止状态为止,记录这条轨迹的回报G t G_tG
t作为状态s ss下行为a aa的行为价值。填到表格相应的位置。

优点:蒙特卡洛的好处是,他不需要很多假设,例如不需要state是马尔科夫的;现实的强化学习任务中,状态转移概率P、奖励函数R往往很难得知,甚至很难知道环境中一共有多少状态

缺点:蒙特卡洛方法是利用经验平均来估计值函数,而能否得到正确的值函数,取决于经验,因此,如果不能充分访问每个状态,获得较多的经验,效果就不好。

21. 强化学习介绍

强化学习考察的是对于一个对象(智能体),从一个状态执行某种动作到下一个状态,并在这个过程中,给其一定的奖赏或者惩罚,是它尽可能往好的方面去做。

22. PPO算法、DDPG、A3C

PPO

也是一个AC的框架,在本讲1.3节中GAE通过利用广义优势函数来平衡Critic的偏差和方差;而PPO则是改进Actor部分,也就是在策略参数更新上进行改善。

从本质上来说PPO算法还是策略梯度算法。因此PPO拥有策略梯度算法的局限性。策略梯度算法的局限性在哪呢?

其局限性在:参数是沿着策略梯度的方向进行更新的。

然而,参数本身有自己的空间结构,策略梯度的方向没有考虑参数本身的空间结构,因此更新速度会慢。那么,如何加快训练呢?

DDPG

尽管PPO的算法学习效率比较高,但PPO算法所使用的策略还是随机策略。随机策略本身就存在一些难以逾越的问题,比如动作空间维数很大时,利用随机策略就需要采集很多样本才能对该策略进行评估。

DDPG或DPG是异策略的方法,行为策略为随机策略,评估策略为确定性策略。随机策略可以探索和产生多样的行为数据,确定性策略利用这些数据进行策略的改善

A3C:

众所周知,当利用神经网络逼近行为值函数的时候,神经网络往往不稳定。这是因为在监督学习中,对神经网络进行训练时,假设数据都是独立同分布的。而直接利用强化学习的数据对利用神经网络进行逼近的值函数进行训练时,数据之间存在着很强的时间相关性,这是导致神经网络训练不稳定的最主要原因。

为了打破数据之间的相关性,DQN和DDPG的方法都利用了经验回放的技巧。然而,打破数据的相关性,经验回放并非是唯一的方法。另外一种方法是异步的方法。

所谓异步的方法是指数据并非同时产生,A3C的方法便是其中表现非常优异的异步强化学习算法

23 归一化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKQ0SbsK-1649388315735)(image-20220406122648067.png)]

24 推荐系统怎么做排序

召回就是找到用户可能喜欢的几百条资讯,排序就是对这几百条资讯利用机器学习的方法预估用户对每条资讯的偏好程度,一般以点击率衡量,也就是点击率预估问题

在大规模数据中先有召回,然后再针对这几百条数据进行排序,而不是所有的数据一起进行排序

25 值迭代和策略迭代

策略迭代:从一个初始化的策略出发,先进行策略评估,然后改进策略,评估改进的策略,再进一步改进策略,经过不断迭代更新,直达策略收敛,这种算法被称为“策略迭代”

与策略迭代不同的是值迭代是根据状态期望值选择动作,而策略迭代是先估计状态值然后修改策略

动态规划求解的大体思想可分为两种:1. 在已知模型的基础之上判断策略的价值函数,并在此基础上寻找最优的策略和最优的价值函数。这种方法我们通常称其为值迭代;2. 或者直接寻找最优策略和最优价值函数,这种方法称为策略迭代

26 Q-learning

​ Q-learning更新的主要思路如下:

从任意状态开始出发

1、用一种不完全贪婪([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bhZx1wjU-1649388315737)(clip_image002.png)]-Greedy)搜索策略选定行为A;(具体通过设置一个较小的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dFsgDnGn-1649388315739)(file:///C:/Users/liuqi/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]值,使用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLB3CJxL-1649388315740)(clip_image004.png)]的概率贪婪地选择目前认为是最大价值的行为,而用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rk1MmNDD-1649388315741)(file:///C:/Users/liuqi/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]的概率随机地从所有可选择的行为中选择行为。这样可以保证能做到持续地搜索,避免某些行为永远不被选择。)

2、在完成行为后,系统将会进入新状态[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wG4C066e-1649388315742)(clip_image006.png)];

3、遍历[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PaPDT87B-1649388315743)(clip_image006.png)]中所有行为,用完全贪婪(Greedy)策略选定使Q值最大的行为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dis0aayk-1649388315744)(clip_image008.png)];

4、用以下的公式更新当前行为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AkZwcI7X-1649388315745)(clip_image010.png)]的Q值:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSpYAZNp-1649388315746)(clip_image012.png)]

5、继续从[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QqIvIukt-1649388315748)(clip_image006.png)]开始重复前面步骤,直到迭代结束(设定迭代次数或设置最终状态)

27 Q-learning和sarsa

Q-learning在选择下一个状态的动作的时候是用贪婪策略,而sarsa是用esilon-greedy 策略

Q-learning更加激进,sarsa比较保守

28 项目二 交叉熵公式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-POB1gBUV-1649388315749)(image-20220408110400119.png)]

和逻辑回归的损失函数是一致的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvjuYOMU-1649388315751)(image-20220408111851283.png)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值