【大模型30讲】问题与答案汇总

  • 在深度学习领域,我们经常用到嵌入向量、表征和潜空间这些术语,这些概念之间有哪些共性,又有哪些不同呢?
  • 1-1.假设我们正在训练一个包含五个卷积层和三个全连接层的卷积网络,这个神经网络的设计与AlexNet相似。我们可以将这些全连接层视为多层感知机中的两个隐藏层和一个输出层。在这个神经网络的哪些层上,我们能够得到有效的嵌入表征呢?

输出层之前的最后一层。
(在这个例子中是第二个全连接层)可能对生成嵌入表征最有用。不过,我们也可以使用所有其他中间层来生成嵌入表征。由于后面的层倾向于学习更高级别的特征,因此这些后面的层通常具有更强的语义意义,并且更适用于不同类型的任务,包括相关的分类任务。

  • 1-2. 请列举一些不属于嵌入表征的输入形式

一种不同于嵌入表征的传统输入表征方法是☠️热编码。在该方法中,每个分类变量使用一个二进制向量表示,其中只有一个值是“激活”的(例如,设为1),而所有其他位置都是非激活的(例如,设为0)。
另一种不是嵌入表征的输入形式是直方图。一个典型的示例就是图像直方图。这些直方图提供了数字图像中色调分布的图形表示,捕获了像素的强度分布。

  • 什么是自监督学习?在哪些情况下自监督学习有效?实现自监督学习有哪些方法?
  • 2-1.如何将自监督学习应用于视频数据?

将自监督学习应用于视频数据的一种方式是预测视频中的下一帧。这类似于GPT等大模型中的下一个词预测。该方法对模型提出了挑战,模型要能够预测序列中的后续事件或动作,从而对内容产生时序上的理解。
另一种方法是,预测缺失或被遮罩的帧。这个想法是从大模型(如BERT)中获得的灵感,其中某些词会被遮罩起来,模型的任务是预测他们。对于视频而言,可以将整帧画面遮罩起来,模型则学会根据周围帧所提供的上下文来插值并预测被遮罩的帧。
图像修复是视频领域自监督学习的另一种途径。这里,不是遮罩整个帧,而是在帧内特定的像素区域进行遮罩,然后训练模型来预测缺失或被遮罩的部分,这有助于模型把握视频内容中的细粒度视觉细节和空间关系。

  • 2-2.自监督学习可以用于行列形式的表格数据吗?如果可以,该如何实现?

    我们可以移除(遮罩)特征值,并训练模型来预测这些值,这类似于经典的缺失值填补方法。例如,SAINT和SCARF方法就采用了这种做法。可以分别查阅相关的论文。

  • 什么是小样本学习?它与传统的监督学习训练流程有何不同?

  • 3-1.MNIST是经典且流行的机器学习数据集,由50000个手写数字图像组成,共有10个标签,对应数字0到9.如何划分MNIST数据集用于小样本学习?

与监督学习类似,我们先将数据集划分训练集和测试集,然后进一步将训练集和测试集划分为子集,每个分类中有一张图像。为了设计训练任务,我们只考了分类的一个子集,例如分类(数字)0,1,2,5,6,8,9。接下来,在测试时,我们使用剩余的分类3,4,7。对于每个分类任务,神经网络仅接收每张图像的一个样本。

  • 3-2.有哪些真实应用场景或案例适用小样本学习?

考虑罕见疾病的医学影像场景。
训练数据集可能只包含几种疾病的少量样本,并且对于新的、未知的罕见疾病(不包含在训练集中),小样本系统可能只有一个或几个病例。因此任务就是基于这数量有限的样本来识别新的罕见疾病。
小样本系统的另一个例子是推荐系统,它只有用户评价过的少量样本。基于有限的样本,模型必须预测用户未来可能喜欢的产品。想象一下,当一家公司增加库存时,仓库机器人必须学会识别新的物品。机器人必须仅基于几个样本来学会识别和适用这些新物品。

  • 什么是彩票假设?如果彩票假设所言为真,它在实践中有哪些用途?

  • 4-1.假设我们正在尝试验证彩票假设,但发现子网络的性能并不是很理想(与原始网络相比),接下来我们可以尝试哪些步骤呢?

    你可以尝试增大原始神经网络。可能是所选的网络太小,无法包含合适的子网络。
    另一种选择是,尝试不同的随机初始化方式(例如更改随机种子)。彩票假设认为某些随机初始化的网络中包含可以通过剪枝获得的高精度子网络,但并非所有网络都会有这样的子网络。

  • 4-2.ReLU激活函数,因其简单高效而成为神经网络训练中最受欢迎的激活函数之一,特别是在深度学习中,它有助于缓解梯度消失等问题。ReLU激活函数由max(0, x)定义。这意味着如果输入x是正数,函数就返回x;但如果输入是负数或0,函数就返回0。彩票假设与适用ReLU激活函数训练神经网络有何关联呢?

    当使用ReLU激活函数训练神经网络时,如果函数输入小于0,则特定激活将设为0。这会导致隐藏层中的某些节点不会参与计算。这些节点有时被称为死亡神经元。虽然ReLU激活并不直接导致权重稀疏,但零激活输出有时会导致不可恢复的零权重。这一现象支持了彩票假设,该假设认为,经过良好训练的网络可能包含具有稀疏、可训练权重的子网络。这些子网络可以在不损失准确性的情况下进行剪枝。

  • 假设我们用监督学习训练了一个神经网络分类器,但发现它通过出现了过拟合现象。那么从数据层面入手,有哪些常用方法能帮助我们减少过拟合现象呢?

  • 5-1.假设我们正在基于合作方人工提取的特征,使用XGBoost模型来对图像进行分类。尽管我们的有标签训练样本数量不多,但幸运的是,我们的合作方从之前的一个相关领域的旧项目中,找到了另一个有标签训练数据集。我们正在考虑采用一种名为迁移学习的方法来训练XGBoost,你觉得是否可行?如果可行,应该怎么做呢?
    (假设我们只能使用XGBoost模型,不能使用其他分类算法或模型)

    XGBoost是一种基于树的梯度提升的实现方式。与人工神经网络相比,XGBoost是一种非参数模型,我们不能在新数据到达时随机更新它。因此,常规的迁移学习在这里不起作用。
    不过,可以将一个XGBoost模型在一个任务上训练得到的结果作为另一个XGBoost模型的特征来使用。考虑两个数据集之间有一组重叠的特征。例如,我们可以为组合数据集设计一个自监督分类任务。然后,我们可以用目标数据集训练第二个XGBoost模型,该模型以原始特征集以及第一个XGBoost模型的输出作为输入。

  • 5-2.假设我们在做一个基于MNIST的手写数字识别项目,为防止模型过拟合,我们给数据添加了不少变化。但遗憾的是,弄完之后模型的正确率不升反降。这可能是什么原因造成的呢?

    另外,也有可能对数据增强过度。过度增强数据可能会导致超出数据自然变化范围的一些过度变化,从而导致对新数据过拟合或较差的泛化性。如果是MNIST数据集,还可能包含平移或裁剪图像,以至于数据因缺失部分而变得无法识别。

  • 假设我们通过监督学习训练了一个神经网络分类器,并且已经采用了多种与数据集相关的技术来减少过拟合。我们还能如何调整模型或者改进训练流程,来进一步减轻过拟合的影响呢?

  • 6-1.假设我们使用早停法来减少过拟合,这里特指的是一种新型变种早停法,它会在训练过程中保存最佳的模型检查点(例如,验证集上正确率最高的点),这样我们就可以在模型训练结束后加载检查点。大部分现代深度学习框架都支持这种机制,然而,有同事建议我们尝试调整训练轮数。早停法和调整训练论述各有什么优缺点呢?

调整训练轮数是一种更简单、更通用的方法。这一点对于那些不支持模型检查点的老式框架尤其适用。因此,改变训练轮数可能是一种更简单的解决方案,并且对于小型数据集和每次超参数配置运行及评测成本较低的模型特别有吸引力。这种方法还不需要在训练过程中监控模型在验证集上的性能,因而简单易用。
当使用训练成本较高的模型时,早停法和检查点法都特别有用。
通常这也是更灵活、更稳健的减少过拟合的方法。然而,这种方法的缺点是,在有噪声的训练方案中,即使验证集上的准确度不能很好地估计泛化准确度,我们也可能会优先选择较早的训练轮次。

  • 6-2.集成方法已经被视为减少过拟合、增强预测可靠性的有效方法,但这也不是没有成本的。使用集成技术有哪些潜在不足呢?

    集成方法的一个明显缺点是,计算成本增加了。例如,如果我们构建一个由五个神经网络组成的神经网络进行集成,则该集成的成本可能是单个模型的五倍。
    虽然我们经常考虑上述提到的推理成本,但存储成本的增加也是另一个重要的限制因素。如今,大多数计算机视觉和语言模型有数百万甚至数十亿个参数,这些参数必须存储在分布式环境中。模型集成使这进一步复杂化。
    可解释性的下降,是我们进行模型集成时面料的另一个代价。理解和分析单个模型的预测结果已经很有挑战性了。根据集成方法的不同,我们又增加了另一层复杂性,进一步降低了可解释性。

  • 有哪些不同的多GPU训练模式?这些模式各有什么优缺点?

  • 7-1.假设我们正在自己实现一套张量并行算法,当我们使用标准SGD优化器来训练模型时,效果非常好。但当我们尝试使用Adam优化器时,遇到了设备内存不足的问题。可能是什么原因导致了这个情况?

    Adam优化器实现了一种带有内部权重参数的自适应方法。Adam优化器的每个模型参数有两个优化器参数(均值和方差),因此不仅要分割模型的权重张量,还要分割优化器的状态以及解决内存限制问题(请注意,这已经在大多数DeepSpeed并行技术中实现了。)

  • 7-2.假设我们没有GPU可用,在CPU上运用数据并行上一个好主意嘛?

    理论上,数据并行可以在CPU上工作,但其优势也会受限。例如,与其在CPU内存中复制模型,并行地在数据集的不同批次上训练多个模型,不如提高数据吞吐量。

  • Transformer架构取得成功的主要因素有哪些?

  • 8-1.自注意力机制很容易并行处理,但也有很多人认为Transformer成本很高。我们该如何理解这种矛盾?

    由于自注意力机制需要进行n到n的比较(其中n是输入序列的长度),因此它在计算和内存复杂度上是平方级的,这使得与其他神经网络架构相比,Transformer的计算成本很高。此外,解码器类型的Transformer(如GPT)一次输出一个词元,在推理期间不能并行化(尽管生成每个词元仍然是高度并行的)

  • 8-2.既然自注意力权重代表了各种输入元素的重要性,我们可以将自注意力视为特征选择的一种形式吗?

我们可以将自注意力视为特征选择的一种形式,尽管这种特征选择与其他类型的特征选择之间存在差异。在这个背景下,区分硬注意力和软注意力是很重要的。软注意力计算所有输入的重要性权重,而硬注意力则选择输入的一个子集。硬注意力更像是在掩蔽,其中的某些输入被设置为0或者1,而软注意力允许重要性分数有连续的变化范围。注意力和特征选择的主要却别说,特征选择通常是固定的操作,而注意权重是基于输入动态计算的。使用特征选择算法时,所选特征总是相同的,而对于注意力来说,权重可以根据输入发生变化。

  • 深度学习领域流行的深度生成式模型有哪些类型,它们各自有哪些优缺点?
  • 9-1.我们要如何评测生成式AI模型生成的图像质量?

自动进行此评测,本质上是困难的,目前的黄金标准仍然基于人类的评估和判断。不过,确实存在一些作为定量衡量指标的方法。
为了评测生成图像的多样性,可以使用KL散度正则项来比较生成样本的条件类分布和边缘类分布。该度量也用于VAE中,以使潜空间向量接近标准高斯分布。KL散度越高,生成图像的多样性就越丰富。
也可以将生成图像的统计特性与预训练模型(如用作图像分类器的卷积网络)特征空间中真实图像进行比较。高度相似(或距离较近)表示两个分布彼此接近,这通常是图像质量更高的标志。这种方法通常也称为Frechet起始距离法。

  • 9-2.根据对于一致性模型的描述,我们要如何用它来生成新图像?

与GAN、VAE或者扩散模型的生成器一样,一致性模型也接受从简单分布(如标准高斯分布)中采样的噪声张量作为输入,并生成新图像。

  • 在训练深度神经网络的过程中,哪些常见因素会引发随机性,导致训练和推理过程中出现不可复现的行为?
  • 10-1.假设我们使用top-k采用或核采样(其中k和p为超参数)训练了一个神经网络。能否在不修改代码的情况下,使模型在推理过程中表现出确定的行为?

能,通过设置k=1,我们可以使top-k采样具有确定性,以便模型在生成输出文本时,始终选择概率分数最高的词作为下一个词。
我们也可以让核采样具有确定性。例如通过设置概率质量阈值p,使之只包含一个元素,该元素正好满足或超过该阈值。这将使模型始终选择概率最高的词元。

  • 10-2.在什么情况下,推理期间的随机Dropout行为是可取的?

在某些情况下,推理过程中Dropout的随机行为可能是有好处的,例如使用单个模型构建模型集成(如果没有Dropout中的随机行为,模型将为给定的输入产生完全相同的结果,这会使集成变得多余。)
此外,Dropout中的随机推理行为可以用于稳健性测试。对于医疗保健或自动驾驶等关键应用,了解模型的微小变化如何影响其预测是至关重要的。通过使用随机Dropout模式,我们可以模拟这些微小的变化,并测试模型的稳健性。

  • 我们应该如何计算卷积神经网络中的参数量?这一信息有何用处?

  • 11-1.如果我们想使用SGD优化器或广受欢迎的Adam优化器来优化神经网络,那么对于SGD和Adam,需要存储的参数量分别是什么?

    SGD只有学习了这一个超参数,没有任何其他参数。因此,除了在反向传播期间为每个权重参数计算的梯度(包括计算梯度所需的层激活),它不会增加任何需要存储的额外参数。
    Adam优化器更复杂,且需要更多的存储空间。具体来说,Adam优化器为每个参数保留了过去梯度(一阶矩)的指数衰减平均值和过去平方数(二阶原始矩)的指数衰减平均值。因此,对于网络中的每个参数,Adama优化器需要存储两个额外的值。如果网络中有n个参数,则Adam优化器需要存储2n个额外的参数。
    如果网络有n个可训练参数,Adam优化器将添加2n个要追踪的参数。例如,在由26926个参数组成的AlexNet中,Adam优化器总共需要53852(2x26926)个附加值。

  • 11-2.假设我们在网络中添加了三个BatchNorm层,一个置于第一个卷积层后,一个置于第二个卷积层之后,还有一个接在第一个全连接层之后(我们通常不想在输出层添加BatchNorm层)。那么,这三个BatchNorm层会给模型额外增加多少参数呢?

    每个BatchNorm层在训练期间学习两组参数:一组缩放系数(gamma)和一组偏移系统数(beta)。学习这些参数的目的是让模型能够在发现归一化对学习起负面作用时,取消归一化对效果。这些参数集(gamma和beta)的大小与它们所归一化的层中的通道数(或神经元数)相同,因为这些参数是为每个通道(或神经元)单独学习的。
    对于第一个卷积层之后的第一个BatchNorm层,具有5个输出通道,就会添加10个额外的参数。对于第二个卷积层之后的第二个BatchNorm层,第二个卷积层具有12个输出通道,就会添加24个额外的参数。
    第一个全连接层有128个输出通道,这意味着需要256个额外的BatchNorm参数。第二个全连接层没有BatchNorm层,因为它本身就是输出层。
    因此,BatchNorm将10+24+256=290个附加参数添加到网络中。

  • 在哪些情况下,我们可以用卷积层替代全连接层来完成相同的计算任务?

  • 12-1.增加步长,可能会如何影响等价性?

    仅将步幅从1增加到2(或更大值)不应影响等价性,因为在这两种情况下,卷积核大小都等于输入大小,所以这里并没有滑动窗口机制。

  • 12-2.填充行为会影响全连接层和卷积层之间的等价性吗?

    填充增加大于0的值会影响结果。由于输入进行了填充,我们会得到滑动窗口的卷积操作,这时与全连接层的等价性不再成立。换句话说,填充会改变输入的空间维度,导致与卷积核的大小不再匹配,并将导致每个特征映射有多个输出值。

  • 为什么ViT,视觉Transformer通常要比CNN更大的训练数据集?

  • 13-1.分块的大小影响计算成本与预测性能之间的平衡。最适宜的分块尺寸依据具体的应用场景以及计算成本和模型性能之间的期望平衡点而定。一般来说,较小的分块会导致计算成本升高还是降低呢?

    使用较小的图像块回增加给定输入图像的图像块数量,从而导致更多的词元被送入Transformer。这会导致计算复杂度增加,因为Transformer中的自注意力机制相对于输入词元的数量具有二次方的复杂度。因此,较小的输入图像块会使模型的计算成本更高。

  • 13-2.分块大小减少,通常会使推理准确度提高还是降低呢?

使用较大的输入图像块可能会导致输入图像中细微的细节和局部结构丢失,这可能会导致对模型的预测性能产生负面影响。可以阅读FlexiViT论文,该论文研究了因图像块大小及数量不同而引起的计算性能和预测性能之间的权衡。

  • 自然语言处理NLP中的分布假设是什么?它被应用在哪些地方?其适用范围又有多广?

  • 14-1.分布假设在同音异义词的场景下还成立吗?比如英语中的“there”和“their”发音相同但含义不同?

    因为同音异义词有不同的含义,所以我们会希望它们出现在不同的语境中,例如“I can see you over there”和“Their paper is very nice”中的“there”和“their”。
    由于分布假设认为含义相似的词应该出现在相似的语境中,因此同音词并不与分布假设相矛盾。

  • 14-2.你能想到在其他领域中与分布假设有类型应用的场景嘛?(提示:可以思考神经网络的其他输入方式)

    分布假设的基本思想可以应用于其他领域,如计算机视觉。在图像场景下,出现在相似视觉场景中的对象很可能在语义上是相关的。在更低的级别,相邻像素可能在语义上相关,因为它们是同一对象的一部分。该思想用于图像数据自监督学习中的掩蔽自编码。
    另一个例子是蛋白质的建模。举例来说,研究人员发现,在蛋白质序列(其中每个字母代表一种氨基酸的字符表示形式,训练的语言Transformer模型学习的嵌入,会将相似的氨基酸聚类到一起。梳水性氨基酸出现在一个聚类中,芳香族氨基酸则出现在另一个聚类中。在这种情况下,我们可以认为氨基酸相当于句子中的词语。)

  • 数据增强是如何发挥作用的?对于文本数据,最常用的增强技术有哪些?

  • 15-1.应用文本数据增强技术能帮助解决隐私问题吗?

假设现有数据不存在隐私问题,数据增强有助于在不需要收集额外数据的情况下生成现有数据的变体,这有助于解决隐私问题。然而,如果原始数据包含个人可识别信息,那么即使是经过增强或合成的数据也可能被追溯回特定个体,尤其是增强过程没有充分地模糊或改变原始数据时。

  • 15-2.在哪些情况下,数据增强可能对特定任务没有帮助呢?

    如果原始数据集足够大、足够多样化,让模型不会由于缺乏数据而过拟合或性能不佳,那么数据增强可能没那么大用处。例如,对大模型进行预训练时,通常就是这种情况。高度特定于领域(如医学、法律和金融领域)的模型,性能也可能受到同义词替换和回译等技术等负面影响,因为这些技术可能会将具有特定含义的领域术语替换掉。通常,在对于措辞选择高度敏感的任务语境中,应用数据增强时必须特别小心。

  • 自注意力这一名词源于何处?它与早些时候对注意力机制有何不同?

  • 16-1.考虑到自注意力机制会让序列中的每个元素与其他所有元素进行比较。自注意力的时间复杂度和空间复杂度是多少呢?

    自注意力机制的事件和空间复杂度都是二次方的。更确切地说,我们可以将自注意力的事件和空间复杂度表达为\(O(N^{2} \times d)\),其中N是序列长度,d是序列中每个元素嵌入的维度。
    这是因为自注意力涉及计算序列中每对元素之间的相似度得分。例如,我们有一个有N个词元(行)的输入矩阵X,其中每个词元都是d维度嵌入(列)。
    当计算每个词元嵌入到其他词元嵌入到点积时,我们乘以\(XX^{T}\),会得到一个\(N \times N\)的相似度矩阵。改乘法设计单个词元对的d次乘法,共有\(N^{2}\)个这样的词元对。因此,复杂度为\(O(N^{2} \times d)\)。然后利用这个\(N \times N\)相似度矩阵来计算序列元素的加权平均值,从而得到\(N\times d\)输出表征。这会使自注意力成本较高且占用大量内存,尤其是在序列较长或d的值较大时。

  • 16-2.我们讨论了自然语言处理领域的自注意力机制,该机制对于计算机视觉的应用也有效果吗?

    确实如此。有趣的是,自注意力机制可能部分受到了用于图像处理的卷积神经网络中的空间注意力机制的启发。

    空间注意力是一种允许神经网络专注于图像中于特定任务相关区域的机制。它有选择地为图像中不同空间位置的重要性加权,从而使网络能够“更多地关注”某些区域而忽略其他区域。

  • 基于编码器和解码器的语言Transformer之间有哪些区别?

  • 17-1.BERT类编码器模型适用掩码语言建模和下一句预测预训练目标进行预训练。我们如何通过这种预训练模型来完成分类任务(例如。预测文本情感是积极的还是消极的)?

    要将预训练的BERT模型用于分类任务,需要添加用于分类的输出层,通常称为“分类头”。
    正如前面讨论过的,BERT在预训练期间使用[CLS]词元来执行下一句预测任务。
    我们不必对其进行预测下一句的训练,而是可以为我们的目标预测任务(如情感分类)微调新的输出层。
    嵌入的[CLS]输出向量充当整个输入序列的摘要。我们可以将其视为一个特征向量,并在其上训练一个小型神经网络,通常是一个全连接层接一个softmax激活函数来预测分类概率。全连接层的输出大小应与我们分类任务中的分类数量相匹配。然后我们可以像往常一样使用反向传播来训练它。比如,可以使用不同的微调策略(更新所有层而不是仅更新最后一层)在监督数据集上训练模型。

  • 17-2.我们可以对GPT之类纯解码器模型进行微调来执行分类任务吗?

是的,我们可对像GPT这样的纯解码器模型进行微调来执行分类任务,尽管它可能不如像BERT这样的基于编码器的模型有效。与BERT相比,我们不需要使用特殊的[CLS],但基本概念类似于微调编码器模型以执行分类任务。我们添加一个分类头(一个全连接层和一个softmax激活函数),并在生成的第一个输出词元的嵌入(最终隐藏状态)上对其进行训练(这类似于使用[CLS]词元的嵌入)。

  • 使用和微调预训练大模型的方法有哪些?

  • 18-1.在什么情况下使用上下文学习比微调更有意义?在什么情况下情况正好相反?

    如果我们无法访问模型,或者如果我们想要使模型适应哪些未曾训练过的类似任务,上下文学习是有用的。
    相比之下,微调对于使模型适应新的目标领域是有用的。例如,假设模型是通用语料库上预训练的,并且我们希望将其应用于金融数据或文档。在这里,对来自该目标领域的数据进行模型微调是有意义的。
    请注意,上下文学习也可以与微调模型一起使用。例如,当一个预训练模型的语言模型在一个特定任务或领域上进行微调后,上下文学习利用模型根据输入中提供的上下文生成响应的能力。与不进行微调的上下文学习相比,在给定目标领域的情况下,该模型生成的响应可能更准确。

  • 18-2.在前缀调优、适配器和LoRA中,我们如何确保模型保留了(并且不会忘记)原始只是?

这是隐式完成的。在前缀调优、适配器和LoRA中,预训练语言模型原有的知识被保留下来,这是通过在保持核心模型参数冻结的同时,引入额外可学习的参数来适应新任务实现的。

  • 评测大模型生成文本质量的标准指标有哪些?为什么这些指标是有效的?
  • 19-1.在计算BERTScore中计算最大相似度时,“cat”的两个嵌入之间的余弦相似度不是1.0,为什么?这里的1.0表示最大余弦相似度。

如果使用像Word2vec这样处理处理每个词语的嵌入技术,我们预期“cat”的嵌入之间的余弦相似度是1.0。然而,在这种情况下,我们使用Transformer模型来生成嵌入。Transformer使用自注意力机制,在生成嵌入向量时会考虑整个上下文(例如输入文本)。由于单词cat用于两个不同的句子,BERT模型为这两个cat的样本生成了不同的嵌入。

  • 19-2.在实践中,我们可能会发现BERTScore并不具备对称性。也就是说,对于特定的文本,交换候选句与参考句的位置可能会导致不同的BERTScore结果。我们该如何解决这个问题?

交换候选文本和参考文本,与计算列与行之间的最大余弦相似度具有相同的效果,可能会导致特定文本的BERTScore不同。这就是为什么在实践中,BERTScore通常被计算为类似于ROUGE的F1分数。例如,我们会先按一个方式计算BERTScore(召回率),然后再按另一种方式计算(准确度),最后计算调和平均值(F1分数)。

  • 以生产和部署系统为讨论前提,无状态与有状态的训练工作流之间有何区别?

  • 20-1.假设我们使用随机森林模型训练一个股票交易推荐分类器,特征中包括股票价格的涨跌平均值。由于每天都有新的股市数据到来,我们正在考虑如何每天更新分类器以保持其时效性。我们应该采用无状态训练还是无状态重训练来更新分类器?

    基于CART决策树的随机森林通常不能随着新数据的到来而随时更新。因此,无状态训练方法是唯一可行的选择。如果我们转而使用如循环神经网络这样的神经网络模型,有状态方法可能更有意义,因为神经网络可以随时根据新数据进行更新(不过,最好一开始就横向比较有状态系统和无状态系统,以决定哪种方法最有效。)

  • 20-2.假设我们部署了一个可以回答用户查询问题的大模型。如ChatGPT。对话界面中包括了点赞按钮和点踩按钮,以便用户根据生成的回答直接给出反馈。在手机用户反馈的过程中,我们并不会在新反馈到来时立即更新模型。但是,我们计划每月至少发布一次新版本中或更新后的模型。对于这个模型,我们应该采用无状态还是有状态的重训练方式?

    有状态的重训练在这里最有意义。预期在结合现有数据(包括用户反馈)的基础上训练一个新模型,不如基于用户反馈更新模型。大模型通常以自监督的方式预训练,然后通过监督学习进行微调。训练大模型的成本是非常高的,因此通过有状态的重训练来更新模型比从头开始训练更有意义。

  • 什么是以数据为中心的人工智能?它与传统的模型构建方法有何不同?我们如何判断它是否适合某个项目?

  • 21-1.近期,预测分析在医疗健康领域的应用日益增多。例如,假设一家医疗服务提供商开发了一套人工智能系统,该系统分析患者的电子健康档案,并提供关于生活方式调整或预防措施的建议。为此,提供商要求患者每天监测和共享他们的健康数据(如脉搏和血压)。这是一个以数据为中心的人工智能的例子吗?

    从提高的信息来看,还不清楚这是否是一种以数据为中心的方法。人工智能系统在很大程度上依赖数据输入来做预测和提出建议,但对于任何人工智能机器学习方法来说都是如此。为了确定这种方法是否是以数据为中心的人工智能的例子,我们需要知道人工智能系统是如何开发的。如果它是通过使用固定的模型并对训练数据进行改造来开发的,这称得上是一种以数据为中心的方法;否者,它只是常规的机器学习和预测建模。

  • 21-2.假设我们训练ResNet-34卷积神经网络来分类CIFAR-10和ImageNet数据集中的图像,为了减少过拟合和提高分类准确率,我们尝试了数据增强技术,比如图像旋转和裁剪,这种做法是否属于以数据为中心的方法?

    如果我们保持模型不变,也就是说重用相同的ResNet-34架构,并且只改变数据增强方法来探究其对模型性能的影响,那么我们可以认为这是一种以数据为中心的方法。然而,数据增强也是现代机器学习流水线中的常规流程之一,仅仅是使用数据增强方法本身并不难说明这种方法是否是数据为中心的。根据现代定义,以数据为中心的方法要在保持其余的模型构建和训练流水线不变的情况下,积极研究各种数据增强技术之间的差异。

  • 在不改变模型结构或牺牲准确率的前提下,有哪些技术可以通过优化加速模型推理?

  • 22-1.我们知道使用多GPU可以来加速模型训练。理论上,使用多个GPU也能加速模型推理。然而,在现实中,这种方法往往并非最高效或最实用的选择。为什么呢?

    使用多GPU策略进行推理的一个缺点是GPU之间的额外通信开销。然而,对于推理任务来说,因为它们不需要梯度计算和更新,相较于训练而言,规模较小,所以GPU之间的通信时间可能会超过并行化节省的时间。
    管理多个GPU也意味着更高的设备和能耗成本。在实践中,以提升单个GPU或CPU性能为目的来优化模型通常更值得。如果有多个GPU可用,在不同的GPU上并行处理多个样本要比使用多个GPU处理同一个样本更为合理。

  • 22-2.向量化和循环分块是优化与访问数组元素相关的操作的两种策略。那么这两者分别在那种情况下是最理想的策略呢?

循环分块通常与向量化结合使用。
例如,在应用循环分块之后,可以使用向量化操作来处理每个分块。这让我们能够对缓存中已经存在的数据使用SIMD指令,从而提高这两种技术的有效性。

  • 在模型部署后,我们可能会碰到的数据分布偏移,主要有哪些类型?

  • 23-1.重要性加权作为一项缓解协变量偏移的技术,它最大的问题是什么?

    问题是,重要性甲醛假设测试集分布与部署分布相匹配。然而,由于各种原因,这往往并未实际情况,比如不断变化的用户行为、不断发展的产品功能或动态的环境。

  • 23-2.在现实场景中,我们如何能检测到这些类型的偏移呢,特别是无法获取新数据的标签时?

    通常我们会监控分类准确度等指标,性能下降可能表示数据发生了变化。然而,如果我们无法获取到新流入数据到标签,这样做是不切实际的。
    在无法标记新流入数据的情况下,我们可以使用统计双样本检验来确定样本是否来自同一分布。我们还可以使用对抗验证。然而,这些方法无助于检测概念偏移,因为它们只比较输入分布,而不比较输入与输出之间的关系。
    其他方法包括测量重建误差:如果我们有一个在源数据上训练好的自编码器,就可以监控新数据上的重建误差。如果误差显著增大,则可能表示输入分布发生了变化。
    异常检测是另一种常见的技术。当被识别为异常值的数据点的比例异常高时,表明数据分布可能发生了变化。

  • 什么情况下使用柏松回归更高?什么情况下使用序回归更好?

  • 24-1.假设我们想预测一名足球运动员在特定赛季的进球数。应该用序回归还是柏松回归来解决这个问题?

    尝试预测一名球员的数量(例如,基于过去几个赛季的数据)是一个柏松回归问题。我们也可以应用序回归模型,根据进球数量对球员进行排名。
    然而,由于进球差是恒定的,并且可以量化(例如,3个进球和4个进球之间的差别与15个进球和16个进球之间的差别相同),因此对于序回归模型来说,这不是一个理想的问题。

  • 24-2.假设我们让某个根据他的喜好对他观看的三部电影进行排序,暂且不提这个数据集对于机器学习来说是否太小,哪种方法最适合这种数据?

这是一个类似于序回归问题的排序问题,但存在一些差异。由于我们只知道电影的相对顺序,因此与序回归模型相比,成对排序算法可能是更合适的解决方案。
然而,如果要求此人按1到5的范围(类似于亚马逊网站上的星级评价系统)为每部电影分配数字标签,那么有可能在这种类型的数据上训练并使用序回归模型。

  • 构建机器学习分类器的置信区间,有哪些方法?

  • 25-1.如前所述,最常用的置信水平是95%的置信区间。然而,90%和99%也很常见。90%的置信区间是小于还是大于95%的置信区间?为什么?

    置信水平(90%、95%、99%等)的选择会影响置信区间的宽度。较高的置信水平会产生较高的较宽区间,因为我们需要撒一个更大的网,以更加确信我们捕捉到了真实的参数。
    相反,较低的置信水平产生较窄的区间,反映了关于真实参数所在位置的更大的不确定性。因此,90%的置信区间比95%的置信区间窄,反映出对真实总体参数的位置有更大的不确定性,通俗地说,我们90%确信真实参数位于一个较小的值范围内,为了增加这种确定性,我们必须将区间宽度增加到95%或99%。
    例如,假设我们90%确定威斯康星州未来两周将下雨。如果我们想在不收集额外数据的情况下做出95%的预测,就必须增加时间间隔。例如,我们可能会说有95%的把握确定未来四周会下雨,或者有99%的把握确定在未来两个月内会下雨。

  • 25-2.我们通过自助抽样法构建了测试集,并将已训练好的模型应用于这些数据集,计算各自的测试集准确率。你能想出一种方式或修改方案来更高效地获得这些测试集准确度吗?

由于模型已经过训练并且保持不变,因此将其用于每个测试集将是浪费。从技术上讲,我们只需要将模型应用一次,即应用到原始测试集上。然后,我们可以直接自助采样实际标签和预测标签(而不是原始样本)来创建自助采样实际标签和预测标签(而不是原始样本)来创建自助采样测试集。接下来,我们可以基于每个测试集中的自助采样标签来计算测试集准确度。

  • 置信区间和共形预测之间的区别是什么?什么情况下我们应该选择其中一个而非另一个?

  • 26-1.预测集合的大小在不同实例之间可能会有所不同。例如,对于某个实例,我们可能会遇到预测集合大小为1的情况,而对于另一个实例,预测集合的大小可能为3.预测集合的大小能告诉我们什么信息呢?

    预测集合的大小可以告诉我们很多关于预测确定性的信息。如果预测集合很小(例如,在分类任务中为1),则表明对预测有很高的信心。该算法有足够的证据强烈提示出一个特定的结果。
    如果预测集合较大(例如,在分类任务中为3),则表示更大的不确定性。该模型对预测的信心较低,并认为多个结果是可信的。在实践中,我们可以利用这些信息为预测集合大小较大的样本分配更多的资源。例如,我们可以将这些案例标记出来供人工审核,因为机器学习模型对此不太确定。

  • 26-2.我们在回归问题中也能使用共形预测和置信区间吗?

当然可以,置信区间同样适用回归模型,就像它们适用于分类模型一样。
事实上,它们在回归的背景下更加通用。例如,我们可以使用置信区间中的方法来计算模型性能(如均方误差)的置信区间感兴趣。
我们还可以计算回归模型的共形预测区间。这个区间是一个一系列可能的目标值,而不是单一的点估计。对这种预测间隔的解释是,假设在统计上未来与过去相似的前提下(例如,基于模型训练所使用的数据),新实例的真实目标值将以一定的置信水平,例如95%,落在这个区间范围内。

  • 使距离函数称为合适度量的三个属性是什么?

  • 27-1.假设我们考虑使用平均绝对误差作为均方根误差的替代值来测量机器学习模型的性能,其中MAE不是度量空间中的合适距离度量,因为它涉及绝对值,因此我们应该该用RSME。这个论点正确吗?

    由于MAE是基于距离的绝对值计算的,因此它自然满足第一个标准:它不能为负。
    此外,如果我们将\(y\)和y^的值互换,MAE相同,因此,它满足第二个条件。
    那三角不等式呢?类似于RMSE与欧氏距离或L2范数,MAE类似于两个向量之间的L范数。
    由于所有向量范数都满足三角不等式。
    此外,即使MAE不是合适的距离度量,它仍然可以作为一个有用的模型评测指标,比如可以考虑分类准确度。

  • 27-2.你会说MAE比RMSE更好还是更差?

MAE为所有误差分配相等的权重,而RMSE由于平方指数的原因,对绝对值较大的误差给予更多的重视。因此,RMSE总是至少与MAE一样大。然而,没有哪一个指标普遍优于另一个指标,多年来两者都被用于评测模型性能的无数研究中。

  • k折交叉验证是评测机器学习分类器时的常见选择,因为它允许我们使用所有训练数据来模拟机器学习算法在新数据上的表现。选择较大的k值有哪些优点和缺点呢?
  • 28-1.假设我们希望为模型提供尽可能多的训练数据。我们考虑使用留一交叉验证,这是k折交叉验证的特例,其中k等于训练样本的数量,使得验证折仅包含单个数据点。一位同事提到,LOOCV对于不连续损失函数和性能度量(如分类准确度)是有缺陷的。例如,对于只包含一个样例的验证折,准确度始终位0(0%)或1(100%)。这真的会成为一个问题吗?

如果我们只关心平均性能,这不是问题。例如,我们有一种包含100个训练样本的数据集,并且模型正确地预测了100个验证折中的70个,则我们估计模型的准确度为70%。然而,假设我们有兴趣分析不同折的估计值的方差,那么LOOCV就不是非常有用了,因为每个折仅有一个训练样本,所以我们不能计算每个折的方差,并将之与其他折进行比较。

  • 28-2.我们讨论了模型选择和模型评测作为k折交叉验证的两个应用场景。你能想到其他的使用场景吗?

k折交叉验证的另一个应用场景是模型集成。
例如,在5折交叉验证中,我们训练五个不同的模型,因为我们有五个略有不同的训练集。
然而,我们不必在整个训练集上训练一个最终模型,而是可以将五个模型组合成一个模型集成(这在kaggle上特别流行)

  • 假设我们训练的模型在测试集上的表现比在训练集上好得多。由于类似的模型配置之前在类似的数据集上表现良好,所有我们怀疑数据可能存在异常。有哪些方法可以探测训练集和测试集的差异?我们又能采取什么策略来缓解这些问题呢?

  • 29-1.在对抗预测任务中,良好的表现基准上什么?

    作为性能基准,实现零规则分类器是个好主意,例如多数类分类器。
    由于我们通常拥有比测试数据更多的训练数据,因此可以计算一个总是预测“是否测试数据?”为“否”的模型的性能,如果我们将原市数据集划分为70%的训练数据和30%的测试数据,则应是70%的准确度。
    如果在对抗验证数据集上训练的模型的准确率明显超过了这个基线(例如,80%),我们可能需要进一步排查一个严重的不一致问题。

  • 29-2.由于训练数据集通常比测试数据集大,对抗验证通常会造成预测问题中不平衡的情况(多数的示例被标记为“是否测试数据”时,标签更多的是“否”而不是“是”)。这会是个问题吗?如果是的话,我们该怎样缓解这个问题呢?

总的来说,这不是一个大问题,因为我们主要关注是否与多数分类预测基线有明显的偏差。
例如,如果我们将对抗性验证模型的准确度与基线(而不是50%的准确度)进行比较,就不会有问题。
然而,与分类准确度相比,评测指标使用如Mactthew相关系数、ROC或准确度召回曲线这类AUC(area-under-the-curve,曲线下面积)数值可能会更好。

  • 假设我们绘制了一条学习曲线,发现机器学习模型出现了过拟合现象,并且可以从更多的训练数据中受益。在监督机器学习的环境下,对于有限的有标签数据,有哪些不同的处理方法呢?

  • 30-1.假设我们接到的任务是构建一个机器学习模型,该模型利用图像来检测类似iPad的平板设备外壳上制造缺陷。我们有数百万张各种计算设备的图像,包括智能手机、平板电脑和台式电脑,但这些图像没有标签;我们还有数千张标注过的智能手机图像,展示了各种类型的损伤;还有数百张专门与目标任务(即检测平板设备的制造缺陷)相关的标注图像。我们如何使用自监督学习或迁移学习来解决这个问题?

    虽然我们通常将自监督学习和迁移学习视为不同的方法,但它们并不一定是相斥的。
    例如,我们可以使用自监督学习在已打标或更大的未打标图像数据集上预训练模型(在这种情况下,对应于各种计算设备的数百万张未打标图像)。
    我们可以使用来自自监督学习的神经网络权重,而不是从随机权重开始,接着通过数千张打标过的智能手机图片进行迁移学习。由于智能手机与平板电脑相关,迁移学习在这里是一个非常有潜力的方法。
    最后,在自监督预训练和迁移学习完成后,我们可以在木板任务的数百张有标签图像上对模型进行微调,这里是平板电脑的图像。

  • 30-2.在主动学习中,选择难度较大的样本进行人工检查和打标,通常是基于置信度的分。神经网络可以通过在输出层使用逻辑sigmoid函数或softmax函数来计算分类归属概率,从而提供这样的得分。然而,人们普遍认识到,深度神经网络处理在分布之外的数据时会表现出过度的自信。使其在主动学习中的应用效果不佳。那么,在主动学习中利用深度神经网络获取置信度的分的其他方法有哪些呢?

    除了针对神经网络输出层产生的过度自信分数的缓解技术外,我们还可以考虑采用多种集成方法来获得置信分数。
    例如,我们可以在推理过程中利用Dropout而不是禁用它,以获得一个样本的多个不同预测结果,进而计算预测标签的不确定性。
    另一种选择是使用讨论的k折交叉验证,从训练集的不同部分构件模型集成。
    也可以将讨论的共形预测方法应用于主动学习。

posted @ 2025-05-22 12:04  Xu_Lin  阅读(372)  评论(0)    收藏  举报