一、嵌入 、潜空间、表征
1、嵌入
嵌向量是输入数据的一种表征形式,原本相似的元素被表征为嵌入向量之后,仍然会保持相似性。能够将高维数据编码为低维向量。
通过嵌入,将稀疏的独热编码转化为非稀疏的连续稠密变量。独热编码:二进制编码,例如(0,1,1,1,0,0,0)这种。通过嵌入层或者嵌入模块的机器学习权重矩阵,将独热编码的分类变量映射到连续的嵌入向量中。
卷积神经网络中,嵌入在输出层前一层。但是其实所有中间层的输出都有可能产生嵌入向量,但是训练目标的不同,使得输出层生成有用的嵌入向量。
嵌入的基本特征:编码时候关注输入之间的距离或者相似度,也就是说嵌入会考虑语义。
数学解释:嵌入是从输入空间X到嵌入空间Y保持结构的单射。也可以理解为相似的输入会被映射到嵌入空间中临近的位置。
2、潜空间
与嵌入空间同一个意思,也是嵌入向量被映射到的空间。
可以把潜空间理解为包含特征的任意特征空间,这些特征是原始输入特征的压缩版本。潜空间的特征通过神经网络学习得到。
3、表征
表征是输入的一种编码形式,通常是输入的中间形态。但其实独热编码也是一种表征。
表征融入了原始数据的一些基本特征和属性,使得他在后续的数据分析和数据处理中更方便使用。
二、 自监督学习
自监督学习是一种预训练过程,让神经网络以监督学习的形式学习大规模无标签数据集。
1、自监督学习与监督学习
二者是相关的。迁移学习的思路先在一种任务上预训练模型,将预训练的模型作为起点,应用于第二种任务训练。意思是:先训练一个更广泛的数据集,基于这个训练一个更小的更具体的并且有感兴趣数据集的数据集。
自监督学习是迁移学习的替代方案,在无标签数据而非有标签数据上模型预训练。
迁移学习和自监督学习的区别:如何获取标签。自监督学习在自然语言处理的任务一般是预测缺失值,使用MASK遮盖一些词语。也可以将代理任务的自监督学习看作表征学习。
2、使用无标签数据
在只有少量有标签数据的情况下,如果要训练大型神经网络,实用的方案是自监督学习。自监督学习对于传统机器学习的非参数化模型也不适用。
3、自预测与对比自监督学习
自监督学习分为:自预测、对比自监督学习。
①自预测
通常更改或者遮蔽输入的一部分内容,训练模型重建原始输入内容。例如:设置干扰用到的遮蔽物隐藏图像中的部分像素。
降噪自编码器:学习如何从输入图像去除噪声,也可以考虑掩蔽自编码器,重建图像缺失部分。
②对比自监督学习
训练神经网络学习的一个嵌入空间,训练的神经网络所产生的嵌入向量,能使得相似训练样本之间向量距离最小化,不相似样本之间的向量距离最大化。
例如,猫和大象,加入不同大小的猫图片,不告知标签,使用对比损失函数:让相似图像的向量的L2范数(欧氏距离)更近,增大不同类别的距离。这是样本对比。
维度对比则关注如何训练样本组生成的嵌入向量中的一部分变量距离更近,剩余变量具体更远。
三、小样本学习
一种监督学习方法,适用于训练集较小、每个标签样本量非常有限的情况,一般模型会遍历多次数据集,每次学到标签固定的数据,小样本依赖于支撑集,通过支撑集创建多个训练任务,并将这些任务编排成为一个训练回合,每个训练任务包含不同标签样本。
在使用小样本学习中,一般使用N-way K-shaot术语,N表示标签数,K表示每个标签样本数,一般K是1或者5.
与其说小样本学习让模型拟合训练数据集,不如说它是让模型学会如何学习。与有监督学习不同,小样本学习使用支撑集。实际上,模拟"使用模型进行推理"的各种场景,从支撑集中抽样、形成训练任务。每个训练任务附带一个用于推理的查询集。模型再从支撑集中抽样得到的训练任务上训练,每次训练任务完成,称为一个回合。
在测试阶段,模型接收到一个与训练阶段碰到的标签完全不同的新任务。训练中遇到的标签称为基类,支撑集被称为基类。测试阶段任务是对于查询集进行分类。测试任务和训练任务类似,但是测试阶段要推理的标签与训练过程遇到的标签不会重复。
训练阶段,支撑集和查询集都有同一标签的不同图像数据,测试阶段也是。但是测试阶段的支撑集和查询集中的标签与训练阶段使用的不一样。
小样本学习有很多类型,最常见的类型是元学习,本质上更新模型参数。
目前主流方法都建立在 "元学习" 的框架上,也称为"学会学习"。
基本设定
支持集:用于学习的少量标注样本。例如,5个类别,每个类别1个样本,称为"5-way 1-shot"。
查询集:需要分类的、来自相同类别的新样本。
元训练过程:
模型不是在单一任务上训练,而是在成千上万个模拟的"小样本任务" 上进行训练。每个任务都像一个迷你版的FSL问题。
从大型基础数据集(如ImageNet)中随机抽取N个类别,每个类别随机抽取K个样本,构成当前任务的支持集。
从相同的N个类别中,再抽取一些不同的样本,构成查询集。
让模型在支持集上"学习"(如提取特征、微调、计算原型等),然后预测查询集的标签,并根据预测结果计算损失、更新模型。
不断重复这个过程,模型逐渐掌握了"如何利用少量样本快速适应新任务"的通用策略。
主要技术方法
FSL方法主要分为以下几类:
a) 基于度量学习的方法
核心思想:学习一个嵌入函数(编码器),将输入数据映射到一个特征空间,在这个空间里,相同类别的样本彼此接近,不同类别的样本彼此远离。分类通过比较查询样本与支持集样本的距离或相似度来实现。
典型模型:
孪生网络:比较两个样本是否属于同一类。
匹配网络:使用注意力机制,将查询样本与整个支持集进行比较,加权求和得到预测。
原型网络:为每个类别计算其支持集样本在特征空间中的均值向量,称为"原型"。查询样本被分类到距离最近的原型所属的类别。这是最直观、最流行的方法之一。
b) 基于模型初始化的方法(优化器方法)
核心思想:学习一个优秀的模型初始参数,使得模型在面对新任务时,仅需通过少量梯度更新(甚至不更新)就能达到良好性能。
典型模型:
MAML:模型无关的元学习。其目标是找到一组"元参数",使得以此为基础,在新任务上经过少量几步梯度下降后,模型的损失就能快速下降。MAML学习的是一种对任务敏感的、易于快速适应的初始化状态。
c) 基于数据增强与生成的方法
核心思想:既然数据少,就想办法"创造"出更多合理的数据。
传统增强:对仅有的几个样本进行旋转、裁剪、变色等,但提升有限。
生成式模型:使用GAN或扩散模型等,学习基础数据集的分布,然后为新类别的少数样本生成新的、多样化的样本,以扩充支持集。
d) 基于外部记忆的方法
核心思想:让模型拥有一个可读写的外部记忆模块。在处理新任务时,模型将支持集样本的信息(特征、标签)存储到记忆中。当遇到查询样本时,模型通过读取记忆中的相关信息来做出预测。这模仿了人类的记忆和推理过程。
四、彩票假设
彩票假设关于神经网络训练,认为随机初始化的神经网络存在一个子网络。这个自网络如果单独训练,在训练步骤相同的情况下,能在测试集上达到和完整网络一样的正确率。
彩票假设的训练流程
四个步骤训练:用较小的随机权重值初始化神经网络------训练网络直到收敛达到最佳性能------权重减枝------将权重重置为原来较小的随机权重值,并重新训练。
具体剪枝过程:将权重设置为0,创建出稀疏权重矩阵,从而实现将枝叶从网络中移除。对于单个权重剪枝,是非结构化剪枝,也可以对于网络中较大的块剪枝,比如滤波器通道,这是结构化剪枝。
五、利用数据减少过拟合
过拟合:模型在训练数据上面表现好,验证数据表现差。一般应该降低训练集和验证集的准确率的差距。
解决办法:
1、采集更多数据
采集更多高质量数据。随着训练集大小的增加,模型在验证集上的准确性也会提高。二者差距越大过拟合越严重。
2、数据增强
基于现有数据生成新的数据样本,可以不用采集新的数据。生成原始输入数据的多个不同版本,提升模型的泛化性。广泛应用于图像数据、文本数据。
3、预训练
自监督学习允许通过大小无标签数据集对于神经网络预训练,有助于减少较小目标数据集发生的过拟合。
六、改进模型减少过拟合
解决过拟合:Dropout、权重衰减等正则化技术。
模型参数越大,需要更多训练数据达到泛化。因此,缩减模型规模和容量有时候能缓解过拟合问题。具体方法:正则化、选择更小的模型、构建集成模型。
1、正则化
正则化是针对模型复杂度的惩罚机制。神经网络经典正则化技术包括:L2正则化、相关权重衰减。也就是对于权重过大进行惩罚,构建正则化损失。提升对于未知数据泛化性。
权重衰减和L2正则化一样,区别在于直接作用于优化器,而不是损失函数。
Dropout会在训练期间随机将一些隐藏层单元激活值设置为0,减少过拟合现象。网络会更大限度利用神经元,对于相同数据产生多个不同独立表征。
过拟合的本质是:
👉 模型过度依赖某些特定神经元组合,记住了训练数据。
而 Dropout 的作用是:
👉 因为每次都有不同的神经元被"关掉",模型不能依赖固定的路径。
👉 被迫学到更通用、更稳健的特征。让每个神经元都不闲着。
早停法,会在训练时密切观察模型在验证集上的表现,一旦发现验证集性能下降,就停止训练。
2、选择更小的模型
一般模型参数越少,模型记住或者过度拟合数据中噪声的能力也越弱。
缩小模型规模的方法:剪枝(从模型中移除参数)、知识蒸馏(模型的只是转移到更小的模型)。
迭代剪枝法:先训练一个大模型,在原始数据集取得不错性能基础上,逐步去除模型参数,在数据集上重新训练,训练需要保持模型预测性能和原来的模型相同。
知识蒸馏:教师模型常规监督训练,使用交叉熵损失确保准确分类数据集的样本,损失是预测分数和真实标签的差距。更小的学生模型在同一个数据集上面接受训练,训练目标是:同时减少学生模型输出与分类标签的交叉熵+学生模型输出与老师模型输出之间的KL散度差异。
双下降:模型泛化能力都不错,但是参数量刚好和训练数据一样多的情况下泛化性不那么好。
顿悟:数据集较小、模型过度优化的情况下,模型可能会在过拟合之后继续提升泛化性。
3、集成方法
集成方法是把多个模型的预测结果结合到一起,提高整体预测效果。但是用多个模型会导致计算成本增加。
这个方法就像是向一个专家委员会咨询意见,用某种策略综合他们的判断来做出最终决定,不同成员有不同的背景和经验,虽然基本决策意见一致,多数投票得到结果,
多数投票:训练k个不同的分类器,对于给定的输入,收集这些分类器的预测结果。最后选择出现频率最高的标签作为预测结果,如果平票,根据置信度得分随机选择标签,或者索引值最小的标签。
但是集成方法在机器学习应用更多,在深度学习用集成方法需要很多计算成本。
k折交叉验证:构建模型,在k个训练子集上面分别训练和验证的模型评测方法。对迭代性能指标的均值进行k次计算,来评估模型整体表现。每次使用k-1个训练子集,最终得到k个模型,在各自验证集上面评测模型,组合成一个多数投票分类器,或者使用叠加技术构建一个集成模型。叠加技术通过预估元模型整合多个分类或者回归模型。
减少过拟合:跳跃连接(残差连接)、前瞻优化器(像"走几步看看方向,再决定最终位置"。)、随机权重平均(不是用一个"最优点",而是用一片"平坦区域的中心")、多任务学习(一个模型同时做多个相关任务(比如分类 + 回归)、快照集成(一个模型"不同成长阶段的多个版本一起投票")等。
七、多GPU训练模式
多GPU训练模式分为两类:
一类将数据分割后在多个GPU上面并行处理------每个GPU都有一份**完整模型,**模型复制,数据切分,每个GPU处理不同数据,最后:汇总梯度(AllReduce)同步更新模型
另一类当模型大小超过某个GPU显存时,将模型分割到多个GPU处理。能训练超大模型(单卡放不下)GPU之间通信频繁,容易出现"某些GPU闲着(不均衡)
第一类:数据并行;第二类:模型并行和张量并行。流水线并行兼顾了这两个模式思想。
训练模式
模型并行:操作间并行,模型的不同部分放到不同GPU上按照顺序计算的技术,计算的过程数据在不同设备之间传递。这个方法应对GPU显存限制问题,但是GPU之间需要相互等待,不能高效并行工作。
数据并行:将小批量数据划分成更小的微批量数据,每个GPU处理一个微批量数据,计算损失和梯度,之后汇总,进行下一轮权重更新。
张量并行:操作内并行。将权重和激活矩阵拆分到各个设备,而不是不同模型层,矩阵拆分使得能将矩阵乘法分布到多个GPU上面执行。可以利用线性代数基本原理实现张量并行。例如:在两个GPU上面分别按照行/按照列分割矩阵乘法来进行计算。缺点:需要在设备之间频繁同步模型参数,可能拖慢训练速度。
流水线并行:反向传播的时候张量会被传回来,以防止设备空闲。相当于数据并行、模型并行的一种高阶混合版。
序列并行:解决transformer架构大模型处理长序列任务时候碰到的计算瓶颈问题。GPU1和2分别处理一个序列切分出来的两个小块
八、transformer架构的成功
1.注意力机制
最早起源于图像识别,随后引入循环神经网络,辅助长句子翻译。
独特之处:假设我们对于输入序列或者图像的定长表征使用编码器网络,这种网络可以是全连接、卷积或者基于注意力。在trasnformer里面,编码器哦那个给自注意力机制机制计算序列中每个词元相对于其他次元的重要程度,使得模型能够聚焦于输入序列中相关的部分。
也就是注意力机制能让transformer关注输入序列与图像上面的不同部分,涉及到将每个输入元素与其他所有元素进行比较,相比于全连接层的权重,得到的注意力权重是动态的,并且依赖于输入。全连接层的权重一旦经过训练,无论输入如何,都会保持固定不变,相比之下,注意力权重随着输入内容的不同而变化,即使模型训练完成之后依然会变化。
2、自监督学习来预训练
预训练,在大规模无标签数据集上面自监督学习,是transformer模型成功的另一个重要原因。通过学习,模型掌握广泛适用于各类下游任务的语言通用表征。
3、大规模参数
庞大的模型规模也是transformer的一个重要特点。transformer的规模和可训练参数量,决定了模型性能,随着模型规模增大,训练损失会成比例减少。
只记录了前八讲,后面的部分可以自行去读《大模型技术30讲》,都是比较基础的术语和原理。
------小狗照亮每一天
2026.4.4