4-8 Prompt-Learning--应用_哔哩哔哩_bilibili
Prompt Learning(提示学习)是近年来在自然语言处理领域中,特别是在预训练-微调范式下的一个热门研究方向。它主要与大规模预训练模型如GPT系列、BERT等的应用密切相关。
在传统的微调过程中,通常需要对预训练模型的顶部添加特定任务相关的层或结构,并针对目标任务进行端到端的训练。而Prompt Learning则提出了一种新颖的方式,通过设计巧妙的任务提示(prompt),将下游任务转换为与预训练阶段相似的语言模型预测任务,无需添加额外的结构。
具体来说,Prompt Learning的核心思想是构造一个或多个文本模板,这些模板能将待解决的任务转化为模型熟悉的自然语言问题或语境。例如,在文本生成任务中,可以将一句话的开头作为提示,然后让模型基于这个提示去完成剩余部分的生成;在问答任务中,可以将问题嵌入到一个自然语言的问句模板中,使其看起来像是模型在预训练时就已经见过的问题形式。
这种方法有效地利用了预训练模型已经学到的通用语言知识,避免了过拟合和微调可能导致的知识遗忘问题,有助于提高模型在小样本甚至零样本场景下的泛化能力和性能表现。同时,Prompt Learning也极大地拓展了预训练模型的应用范围,使得非专业人士能够更容易地使用预训练模型来解决各种自然语言处理任务。
多模态
多模态(Multimodal)是指在机器学习、人工智能和信号处理等领域中,同时利用和融合两种或多种不同类型的感知数据或信息源来理解和处理信息的方法。这些不同的模态可以包括但不限于:
- 视觉模态:图像、视频、视觉特征等。
- 听觉模态:语音、音频、声谱图等。
- 文本模态:自然语言文本、关键词、标签等。
- 触觉模态:力反馈、触感信息等。
- 空间/位置模态:地理位置、三维空间结构、姿态信息等。
在多模态技术中,模型通常被训练以联合建模的方式来解析和关联不同模态的数据,目的是为了更全面地模拟人类的感知和理解世界的方式,并提升系统的性能,如提高识别准确性、增强交互体验等。例如,在多模态机器翻译中,系统可能同时考虑文本和图像信息来生成翻译结果;在智能助手应用中,可能会结合语音输入和视觉环境信息来提供更加准确的服务响应。
Delta Tuning
Delta Tuning 是一种调整PID控制器参数(比例P、积分I和微分D)的方法,尤其适用于已经具有初始整定参数的系统。在工业自动化控制领域中,Delta Tuning 是一种相对快速且实用的现场整定技术,用于优化闭环控制系统性能。
其基本思想是通过小幅度地改变PID控制器各部分的参数来观察系统响应,并根据响应变化情况进一步调整参数。具体步骤包括:
- 步进测试:首先,对PID控制器的某个参数进行一次增量更改(例如,增加或减少ΔP的比例增益),并观察系统的响应。
- 分析结果:分析系统响应的变化,如超调量、振荡频率、调节时间等性能指标,以确定下一步如何调整参数。
- 迭代调整:基于上述分析,对每个参数(P、I、D)分别进行类似的步进调整,直至获得满意的系统动态性能,如快速稳定、无明显振荡或者达到特定的稳态精度要求。
Delta Tuning 的有效性在于它利用了系统对于参数微小变化的即时反应,从而避免了复杂的理论计算和长时间的实际运行测试。不过这种方法依赖于操作员的经验和对系统的理解程度,而且可能不适用于所有类型的系统,特别是非线性或时变系统。对于复杂的过程控制,现代整定方法可能会结合自动整定算法和先进的过程辨识技术。
fine tuning
微调(fine-tuning)的过程如下:
在深度学习中,通常会先利用大规模的数据集训练一个基础模型,如预训练的自然语言模型(如BERT、GPT系列等)、计算机视觉模型(如ResNet、VGG等)。这个基础模型在训练过程中学习到了大量通用特征和模式,对于许多相关的下游任务具有一定的泛化能力。
当需要解决一个新的特定问题或使用新的特定数据集时,我们可以直接使用这个预训练模型作为起点,而不是从头开始训练一个新的模型。这是因为预训练模型已经具备了一定的基础知识表示能力,只需在此基础上进行一定程度的调整,就可以适应新任务的需求。
微调的具体做法是:将预训练模型的部分或全部权重参数解锁,并用新的目标数据集对该模型进行再训练。这样做的好处是可以大大加快训练速度,同时由于模型已有较好的初始化,往往能取得比从零开始训练更好的效果。尤其在数据量有限的情况下,微调策略尤为有效。
verbalizer
在自然语言处理(NLP)领域,特别是在Prompt Learning(提示学习)和预训练模型的上下文中,"Verbalizer"(词表征器或词映射器)是一个特定的概念,它用于将模型的输出转换为特定任务的标签空间。
通常,在prompt-based fine-tuning中,设计一个合理的prompt可以引导预训练模型如GPT系列、BERT等去预测与目标任务相关的词语或短语。这里的“verbalizer”就是指定义了这个从模型最后层的词汇分布到实际标签类别之间的映射规则。
例如,在文本分类任务中,假设我们有一个情感分析任务,目标是判断文本的情感极性是正面、负面还是中性。那么,verbalizer会指定模型需要生成哪些词汇来代表这些情感类别。比如,对于正面情感,verbalizer可能会选择“积极”、“正面”这样的词汇作为正类标签的触发词;而对于负面情感,则可能对应“消极”、“负面”等词汇。
总的来说,verbalizer是prompt方法中的一个重要组成部分,它帮助预训练模型的输出能够与具体任务的目标标签进行匹配,从而实现对下游任务的有效适应。
soft token
在自然语言处理和机器学习领域中,“soft token”通常不是一个标准术语,但根据上下文,它可能指的是以下概念之一:
-
Soft Segmentation Tokens: 在某些文本处理或深度学习模型(尤其是基于Transformer的模型)中,特别是在处理连续性文本时,可能会使用“soft tokenization”。这不同于传统的硬分词(hard tokenization),后者将文本分割成离散的、固定的词汇单元。软分词可能通过概率模型来实现,产生的是连续的概率分布,而非确定的边界。
-
Soft Attention Tokens: 在Transformer等模型的注意力机制中,有时会提到“soft attention”,这里的“token”并非指文本中的实际词汇,而是指在计算注意力权重过程中生成的加权向量。这些“soft tokens”代表了对输入序列中不同部分的关注程度,而非具体的词汇符号。
-
Soft Label Tokens: 在训练模型时,尤其是在半监督或者迁移学习场景下,有时候标签可能是概率分布形式的“soft labels”,而不是硬类别标签。这种情况下,每个类别可以被视为一个带有置信度分数的“soft token”。
-
Embedding Vectors: 在某些语境下,"soft token"可能是指模型输出的词嵌入向量,这些向量是连续的、高维空间中的点,它们以一种模糊的方式表示词汇的意义,而非精确的一一对应关系。
如果要更准确地理解“soft token”的含义,需要具体到特定的技术文档或研究论文中去分析其上下文。
pipeline
loss
freeze model
5-2 BMTrain--背景介绍_哔哩哔哩_bilibili
前向传播
前向传播(Forward Propagation)是神经网络在接收到输入数据时,从输入层到输出层逐层计算并生成预测结果的过程。这一过程遵循一系列线性与非线性变换规则,每个神经元节点的输出成为下一层节点的输入,直至达到最终的输出层。
对于一个简单的单层神经网络模型(例如您提到的NeuralNetwork(inputs, weight)
函数),前向传播步骤如下:
-
输入数据:给定一个或多个输入值。
- 例如:
inputs = 2
- 例如:
-
权重参数:定义连接输入和输出的权重值。
- 例如:
weight = -1
- 例如:
-
计算节点输出:将输入值与对应的权重相乘得到该节点的净输入。
- 例如:
net_input = inputs * weight
- 例如:
-
(可能还包括偏置项,并进行激活函数处理)
- 在简化版本中没有明确提到偏置项,且未指明使用何种激活函数,因此这里假设直接输出净输入作为预测结果。
-
预测输出:简单模型中,经过上述计算后的结果就是预测值。
- 例如:
prediction = net_input = 2 * (-1) = -2
- 例如:
在多层感知器(MLP)、卷积神经网络(CNN)或循环神经网络(RNN)等更复杂的神经网络结构中,前向传播涉及更多的层次和操作,包括但不限于:
- 每层各节点的加权求和(包括偏置项)。
- 对每个节点的加权和应用非线性激活函数(如sigmoid、ReLU等)以引入模型的非线性表达能力。
- 这些步骤在每一层中重复,直到到达输出层,得出最终的预测结果。
在训练神经网络时,前向传播是用来初步计算损失函数(即模型预测输出与实际标签之间的差距)的关键步骤。随后,通过反向传播(Backward Propagation)来更新网络中的权重和偏置,以最小化这个损失函数。
反向传播
反向传播(Backward Propagation)是神经网络训练过程中的核心算法,它用于计算损失函数关于模型参数(如权重和偏置)的梯度,进而通过梯度下降或其他优化方法更新这些参数以减少损失并改善模型性能。
在前向传播阶段完成计算得到预测结果后,如果模型预测与实际目标存在差异,则需要通过反向传播来调整模型参数。反向传播的具体步骤如下:
-
计算损失:首先,根据前向传播得出的预测输出和真实标签计算损失函数值。对于分类问题常用交叉熵损失,回归问题中可能使用均方误差等。
-
反向传播初始化:从输出层开始,计算损失相对于该层激活值的梯度(即损失函数对每个输出节点的偏导数)。
-
逐层反向传播:
- 对于每一层(从输出层到输入层),计算损失相对于该层所有神经元激活值的梯度。
- 接着,利用链式法则以及各层的激活函数的导数(也称为导数或微分),计算损失相对于该层权重矩阵和偏置向量的梯度。
- 这个过程中通常会保存前向传播时的中间结果(例如,激活值和它们对应的输入信号),以便高效地进行梯度计算。
-
更新参数:一旦获得了所有参数的梯度,就可以使用优化器(如SGD、Adam等)结合学习率来更新权重和偏置。更新公式通常是
weight = weight - learning_rate * gradient
。 -
循环迭代:这一正向传播和反向传播的过程反复进行,直至达到预设的停止条件,比如达到最大迭代次数、损失收敛或验证集上的性能不再提升等。
简而言之,反向传播的核心作用在于基于损失函数的梯度信息指导模型参数朝着减小损失的方向调整,从而实现模型的自我学习和改进。
梯度
梯度(Gradient)在数学和机器学习中是一个非常重要的概念,它表示函数值相对于自变量变化率的最大方向。对于一个多变量的函数 f(x1, x2, ..., xn),其梯度可以理解为一个向量,这个向量包含了函数在各个维度上的偏导数,即:
∇f(x1, x2, ..., xn) = [∂f/∂x1, ∂f/∂x2, ..., ∂f/∂xn]
在机器学习和深度学习领域,当我们训练神经网络时,梯度扮演着至关重要的角色。具体来说,在反向传播过程中,我们计算损失函数关于模型参数(如权重和偏置)的梯度。通过梯度,我们可以了解模型预测误差对每个参数的影响程度以及影响的方向。
如果我们要最小化损失函数,我们会沿着梯度的反方向调整参数,因为梯度方向指示了使函数值增长最快的方向,而梯度的反方向则是使函数值下降最快的方向。这就是梯度下降算法的基础,也是优化神经网络的核心机制。常见的梯度优化方法包括批量梯度下降、随机梯度下降及其变种(如动量梯度下降、RMSProp、Adam等)。
5-5 BMTrain--ZeRO_哔哩哔哩_bilibili
在机器学习和深度学习领域,“优化器”(Optimizer)是一种算法或方法,用于更新模型的参数以最小化损失函数(对于监督学习任务),或者最大化某个目标函数(对于无监督学习任务)。常见的优化器包括:
-
梯度下降法(Gradient Descent):最基础的优化器,通过沿着损失函数梯度的反方向更新权重来逐步降低损失。
-
随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代只使用一个或一小批量样本计算梯度进行更新,相比于梯度下降法更适用于大规模数据集训练。
-
动量(Momentum):基于SGD改进的一种优化器,在更新过程中加入了一个历史梯度项,可以加速收敛并有助于穿越鞍点。
-
RMSProp:自适应学习率优化器,它根据每个参数的历史梯度平方值调整学习率,使得学习率对不同参数具有不同的更新速度。
-
Adam (Adaptive Moment Estimation):一种流行的自适应学习率优化算法,结合了RMSProp中自适应学习率调整的优点以及动量的概念,通常在各种深度学习任务中有良好的表现。
这些优化器在训练神经网络时负责找到最优参数组合,以达到模型性能的最佳状态。