目录
[2.1 梯度下降](#2.1 梯度下降)
[1.1 RNN解决了什么问题](#1.1 RNN解决了什么问题)
[1.2 RNN引入了什么新的问题](#1.2 RNN引入了什么新的问题)
[2.1 LSTM简介](#2.1 LSTM简介)
[2.2 为什么LSTM能够解决长依赖问题](#2.2 为什么LSTM能够解决长依赖问题)
3、Transformer(参考:transformer详解)
[3.1 编码器(上图左侧)](#3.1 编码器(上图左侧))
[3.2 解码器(上图右侧)](#3.2 解码器(上图右侧))
[3.3 缩放点积注意力(Scaled Dot-Product Attention)](#3.3 缩放点积注意力(Scaled Dot-Product Attention))
[3.4 位置编码(positional encoding)](#3.4 位置编码(positional encoding))
4、关于CNN\LSTM与Transformer的一些理解与名词解释
[4.1 什么是seq2seq](#4.1 什么是seq2seq)
[4.2 模型的输入、输出与词嵌入](#4.2 模型的输入、输出与词嵌入)
[4.3 NLP模型的输出与自回归](#4.3 NLP模型的输出与自回归)
[4.4 transFomer模型的训练和推理过程有何不同](#4.4 transFomer模型的训练和推理过程有何不同)
[4.5 为什么transFomer支持并发训练而循环网络不行](#4.5 为什么transFomer支持并发训练而循环网络不行)
[4.6 怎么看待每一个Token预测与输入之间的关系](#4.6 怎么看待每一个Token预测与输入之间的关系)
前言:本文旨在对神经网络基础概念进行介绍,然后对NLP领域的发展脉络继续粗述,包括对当前大模型基础的Transfomer结构的由来、发展及原理进行简单说明,让大家对神经网络(深度学习)和当前的大模型以及涉及的预训练、微调等概念有个基本认识,其中涉及的数据学推理等并不作为本文说明的重点,大家有兴趣可以自行研究。(PS:其中涉及一些的对NLP模型的理解,大家见仁见智)
一、从现实问题看神经网络
神经网络最初的概念在上世纪50年代就被剔除,但真正在计算机领域发挥出巨大潜力,要从Hinton和他的学生Alex带着AlexNet在ImageNet竞赛获得冠军算起,这应该是深度神经网络首次击败传统机器学习算法。而后的十多年深度神经网络经历了快速的发展,网络越堆越厚,能力也越来越强。从表现看网络层数与模型能力是成正关联的,而网络越深,计算量也就越大,这也是为什么在算力(硬件能力)爆发式增长后,神经网络能爆发出惊人的能力。
1、为什么网络越深(参数越多)能力越强
举最简单的例子(做个比喻),一个100人的人群,我们要选出所有的中国男性,如果我们只根据性别可能无法实现我们的目标,但如果我们增加肤色、身高、鼻梁高矮、眼睛的颜色等等条件之后,我们就能达到我们的目标。如下图往往要区分红、蓝的点我们无法通过简单的直线实现,在二维世界中它可能是曲线也可能是曲线的堆叠。但当问题升维到三维,分类器可能就是个简单的切面。

生活中的很多问题不是简单的二维线性分类问题,往往是由多种非线性问题堆叠而成,当进行升维后问题将变的可区分。也就是说很多复杂的问题,到了高维空间都将变得简单,如果不够简单,那再继续升维看看。而每一层网络都相当于一个非线性函数,每一层的堆叠都可以看成是一种向更高维度的抽象行为。
2、为什么需要激活函数(非线性函数)
神经网络中增加非线性函数的核心原因在于打破线性叠加的局限性,使网络能够学习和表示复杂的非线性关系。堆叠再多的线性函数,本质上它依旧是线性函数。

无论叠加多少层,纯线性网络的表达能力与单层线性模型等价,无法解决非线性问题。所以必须引入非线性函数:

二、关于神经网络的训练
1、损失函数
损失函数(Loss Function) ,也称为代价函数(Cost Function) 或目标函数(Objective Function) ,是机器学习与深度学习中用于量化模型预测结果与真实值之间差距的函数。其核心作用包括:
-
指导模型优化:通过计算预测值与真实值的差异,为梯度下降等优化算法提供方向。
-
评估模型性能:损失值越小,表明模型预测越接近真实数据分布。
-
任务适配:不同任务(如分类、回归)需设计不同的损失函数。
损失函数是模型训练的"指南针",其设计需紧密结合任务目标与数据特性。合理选择或定制损失函数,可显著提升。例如,为了解决某类问题中的长尾问题,可以在损失函数中对于复杂样本损失进行加权(感兴趣可以了解下Focal Loss这篇论文)。
2、梯度下降与反向传播算法
2.1 梯度下降
梯度下降法(Gradient Descent)是一种用于优化目标函数的迭代算法。它通过计算目标函数的梯度(即导数)来找到函数的最小值(损失函数最小值,使模型结果无限逼近真实结果 )。梯度下降法的基本思想是:沿着梯度的反方向逐步调整参数,使得目标函数的值逐渐减小,直到收敛到最小值。其数学依据为:
从这里可以看到,采用梯度下降对损失函数进行优化,可能出现收敛到次优解的情况,这里就会涉及到后面训练参数的设置,如步长值(学习率 ),如果步长过小,算法收敛的速度就会很慢,要花很长时间才能走到最小值附近;如果步长过大,可能会导致错过最小值点,在最小值点附近来回跳动。所以在训练中会有动量 、衰减值等参数对该问题进行处理。

2.2、反向传播算法
反向传播算法,简称BP算法,适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。梯度下降需依赖损失函数对各参数的梯度计算。反向传播算法 通过链式法则 高效计算梯度,从输出层到输入层逐层计算梯度,利用导数链式法则传递误差,得到。(数学原理是结合了求偏导 和链式法则 ,详细可参考:正向传播与反向传播梯度更新)(注意一个epoch指的是包含所有数据的一轮训练)

3、其他常见的一些名词
-
batchSize:batchSize是指在机器学习模型训练过程中,每次输入给模型进行训练的数据量大小。通俗地说,是将大量数据分割成若干个小批量,每次使用这些小批量数据进行训练。(批量训练)
-
过拟合:过拟合是指模型在训练数据上表现非常优秀,但对新数据(测试集)的预测能力较差的现象。换句话说,模型过于贴近训练数据的特征,导致泛化能力不足。
-
梯度爆炸:梯度爆炸是指在神经网络的反向传播过程中,梯度值变得非常大,甚至呈指数级增长的现象。这种情况下,梯度值可能会超过计算机的浮点数表示范围,导致数值不稳定性和溢出。
-
梯度消失:梯度消失是指梯度变得极小,从而阻碍学习过程的现象。与梯度爆炸相反,梯度消失会导致权重更新幅度过小,甚至接近于零。
-
正则化:正则化是一种用于防止模型过拟合的技术,通过在损失函数中引入额外的惩罚项,限制模型复杂度,从而使模型具有更好的泛化能力(正则化相关说明、一些正则化的简介)
-
dropOut:Dropout是神经网络中一种常用的正则化技术,其核心思想是在训练过程中随机"丢弃"一部分神经元,即将它们的输出置为零,从而减少神经元之间的复杂共适应关系,防止模型过拟合。(相关论文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting)
-
动量:在神经网络训练中,动量是一种优化算法,用于加速梯度下降过程,使训练更加稳定。动量利用了之前梯度的信息,帮助优化器在梯度下降过程中避免陷入局部最小值或鞍点。使用动量可以:
-
加速收敛:动量可以帮助优化器在梯度下降过程中更快地找到最小值,从而加速训练过程。
-
提高稳定性:动量可以减少优化器在梯度下降过程中对噪声的敏感性,使训练过程更加稳定。
-
避免局部最小值:动量可以帮助优化器在梯度下降过程中避免陷入局部最小值或鞍点,从而提高模型的泛化能力。
-
原理是这样:假设我们的Loss就是一个真正的斜坡,这个球滚下来,就算到了次优点如果动量足够他还是会翻过这个坡然后继续往下滚。也就是说再参数更行时,梯度计算会受到前面结果的影响,(参考:动量因子相关解释)即:
-
衰减系数:在神经网络训练中,衰减系数是一种权重更新策略,用于控制学习率随时间的变化。衰减系数通常与学习率相关,表示学习率随时间减少的速率。
-
控制学习率:通过调整衰减系数,可以控制学习率随时间的变化,从而优化训练过程。
-
避免过拟合:随着训练的进行,逐渐减小学习率可以避免模型过拟合训练数据,提高模型的泛化能力。
-
平衡训练速度和精度:通过调整衰减系数,可以在训练速度和精度之间取得平衡,从而提高模型的性能。
-
-
学习率预热(Warmup):微调模型时会涉及到,前几个epoch逐步增加学习率,避免初期大梯度破坏权重。
-
卷积网络中的运算:卷积运算原理
-
一些通道合并操作:cat、stack等操作说明
三、Transformer
当前的大模型在学术领域中都属于 NLP(自然语言处理)的研究范围。
在RNN提出之前,自然语言处理(NLP)主要依赖基于规则的方法和统计学习模型,这些模型无法建模序列数据的时序依赖。
1988年,Jeffrey Elman提出Elman网络,首次引入循环结构,通过隐藏状态传递时序信息,但存在 梯度消失/爆炸等问题严重,难以处理长序列。
1997年,Hochreiter和Schmidhuber提出长短期记忆网络(LSTM),引入遗忘门、输入门、输出门,通过门控机制控制信息流,记忆单元(Cell State)长期保存关键信息,解决梯度消失问题,在机器翻译(如Google GNMT)、语音识别等领域突破长序列依赖瓶颈。之后 "类LSTM" 的基础结构开始了长达近20年的统治
直到2017年,Google团队在论文《Attention Is All You Need》中提出Transformer架构,催生BERT、GPT等预训练模型,推动NLP进入大模型时代,并扩展至多模态领域。模型规模突破临界值后,展现逻辑推理、代码生成等复杂能力,并可以应用于图像、语音等,推动了多模态的统一建模。(Transformer摒弃循环结构,支持大规模GPU并行训练,这使得海量数据训练成为可能)
1、RNN
1.1 RNN解决了什么问题
无论是基于规则系统的处理方式还是基于统计学习模型的处理方式,都无法有效的建立文字序列中的时序依赖关系(换句话说就是我们经常所说的上下文),如隐马尔可夫模型(HMM),假设当前状态仅依赖前一状态(马尔可夫假设),通过状态转移概率和观测概率建模序列。但仅能建模局部依赖(如相邻词关系),无法处理长距离依赖(如跨句子的指代关系)。
而对于自然语言来说,任何一个文字的意义都要放到具体语境中,才能知道其真实的含义。所以RNN通过循环,来解决这个问题。
从上图可以看到,t时刻的输入会受到上一时刻的影响,也就建立了上下文之间的关联。
1.2 RNN引入了什么新的问题
由上式内容可知,即便我们的输入是很长的一段文字,那么首字母也可以和尾部建立一定的联系,但很有可能由于间隔过远导致,后面的内容对前面的内容感知很低,即 梯度消失 问题(可以这样理解,当我们看一篇长篇小说的时候,看到后面可能忘记了某个长时间未出现的角色的姓名,导致不知哪里蹦出来了一个角色,但它对后续的内容却有着重要意义,也可以借此理解BiRNN【双向循环网络】结构,这就像人类阅读一样,我们理解一个词不仅需要前文,有时也需要看后文才能更好地理解当前的词(参考:RNN))。
另外,由于此循环结构存在前后依赖,导致其无法并行运算,所以在效率上也大打折扣。

2、LSTM
2.1 LSTM简介
相比于RNN,LSTM引入门控机制来解决长依赖问题。其中包含忘记门、记忆门、更新门和输出门,下图是其整体结构。

- 忘记门
LSTM 的第一步需要决定从 cell (即上图中的一个完整的单元)中抛弃哪些信息。这个决定是从 sigmoid 中的「遗忘层」来实现的。它的输入是 ht-1 和 xt,把上 次的状态ht-1和这 次的输 xt相比较,输出为一个 0 到 1 之间的数。Ct−1 就是每个在 cell 中所有在 0 和 1 之间的数值,0 代表全抛弃,1 代表全保留

- 记忆门
第二步,需要决定什么样的信息应该被存储起来。这个过程主要分两步。第一步,首先是 sigmoid 层(输入门)决定我们需要更新哪些值(忘记旧的);第二步,随后,tanh 层生成了一个新的候选向量 C`,它能够加入状态中(更新后的cell state)。最后,我们将这两个值结合起来,并更新 cell 的状态。例如t+1的信息和St的信息一样,可以考虑遗忘t+1的信息.
- 更新门
第三步,把老cell state更新为新cell state
- 输出门
最后,需要确定输出的内容。这个输出内容取决于 cell 的 状态,首先,会用行一个 sigmoid 层决定 cell 状态输出哪一部分。随后,把 cell 状态通过 tanh 函数,将输出值保持在-1 到 1 间。之后,再乘以 sigmoid 门的输出值,就可以得到结果了。
2.2 为什么LSTM能够解决长依赖问题
首先提出假设:如果误差在反向传播时在某个网络结构中保持不变,那么就可避免梯度消失或爆炸,不能处理长依赖的问题也就得到了解决。然后作者提出了CEC(constant error carrousel,恒定误差流,PS:感觉和残差有点像),但在文中作者进行推到的假设前提是:非输入层的神经元j只有自连接,与其他神经元没有关系,但神经元j必然会与其他神经元有关联。因此,就会引发两个问题:
-
问题一、输入权重冲突:如何保证神经元不被不相关的关联神经元激活?
-
问题二、输出权重冲突:如何保证当前神经元的输出不会输出一些不相关内容而干扰到后续的相关联神经元?
因此作者引入输入门和输出门去解决输入权重冲突和输出权重冲突问题。输入门单元的作用是保护存储在神经元j中的内容不受不相关输入的干扰(解决输入权重冲突)。同样的,输出门单元的作用是保护其他的神经元不受当前存储在神经元j中不相关的内容的干扰(解决输出权重冲突)【具体数学推导可参照LSTM详细解读进行学习】。
简单来说,LSTM就是通过门控有选择的向后传递信息和有选择的使用前置信息。(感觉这个时候已经有注意力的味道了,说到底,都是通过权重来控制信息的作用阈值,只不过方式不同、范围不同)
3、Transformer(参考:transformer详解)
transformer 结构完全基于注意机制,摒弃了循环(无法并行训练)和卷积(对长依赖问题不够友好)。该模型完全依赖于注意机制来绘制输入和输出之间的全局依赖关系,因此它也允许更大程度的并行化。 transformer由编码器和解码器组成。下面是其整体结构:

3.1 编码器(上图左侧)
编码器(如何理解编码?将输入数据(如文本、语音等)转化为一种中间表示)由N = 6个相同的层堆叠而成。每一层包含两个子层。第一个是多头自注意力机制,第二个是简单的全连接前馈网络。在每个子层间采用残差连接,然后进行层归一化,也就是说,每个子层的输出是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是子层本身实现的函数。
-
PS:残差:残差网络最早由何凯明等人在2015年提出,其核心思想是通过引入残差连接(residual connection)来解决深层网络的训练问题。在传统的神经网络中,每一层的输出都来自于前一层的输出。而在残差网络中,每一层的输出是由前一层的输出与该层的输入之和得到的。这个残差连接可以被看作是一个跳跃连接,将前一层的信息直接传递给后面的层。这种设计使得网络可以更轻松地学习到恒等映射,从而提高了网络的性能。可以这样理解:残差连接让网络的每一层只需要做很小的调整,而不需要重新学习所有的东西,这大大降低了深层网络训练的难度。【根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习。因此, 原来的优化问题可以转换为:让非线性单元 𝑓(𝒙; 𝜃) 去近似残差函数 h(𝒙) − 𝒙,并 用 𝑓(𝒙; 𝜃) + 𝒙 去逼近 h(𝒙)】
3.2 解码器(上图右侧)
解码器(如何理解解码?基于编码器的中间表示,生成目标输出 )也由N = 6个相同的层堆叠而成。除了每个编码器层中的两个子层外,解码器插入了一个第三个子层,对编码器堆叠的输出执行多头注意力。与编码器类似,在每个子层周围采用残差连接,然后进行层归一化。不同的是,解码器修改了自注意力子层,以防止当前位置关注后续位置(加了掩码,因为解码器是自回归模式,只能用当前token之前的内容,transformer之掩码)。这种掩码,结合输出嵌入在一个位置上的偏移,确保位置i的预测仅依赖于小于i的位置上的已知输出。
-
(transformer是自回归模型,自回归(Autoregressive)是一种在时间序列或序列数据中,当前值的生成是依赖于过去值的模型。在自回归模型中,当前时间步的输出是通过输入前面时间步的输出得出的。在自然语言处理中,自回归模型经常用于生成文本。其中,Transformer是一种基于自注意力机制的自回归模型。它使用了一系列的自注意力层,每个自注意力层都会根据输入序列中的先前时间步来生成当前时间步的输出)
-
"Mask"(掩码)是指一种用于隐藏或屏蔽某些数据或信息的技术或操作。掩码可以通过将特定位置的数值或位设置为特定的值来实现。在深度学习中,掩码常用于序列数据处理中,例如文本序列或时间序列。以下是几种常见的掩码技术:
-
填充掩码(Padding Mask):用于处理变长序列的情况,通过在序列末尾添加特定的填充符号,然后使用填充掩码将填充部分屏蔽,防止其对模型的计算产生影响。
-
注意力掩码(Attention Mask):用于自注意力机制(self-attention)中,在计算注意力权重时,通过将不需要的位置的注意力值设置为一个较大的负值或0来屏蔽这些位置,使得模型不会在计算注意力时考虑到这些位置。
-
遮挡掩码(Masked Mask):用于特定任务(如语言模型、序列生成任务)中,通过在输入序列的某些位置添加一个遮挡标记(mask token),然后让模型预测这些被遮挡的位置上的标记。这个遮挡操作可以提供一种训练模型生成缺失信息或未来预测的方式。
-
3.3 缩放点积注意力(Scaled Dot-Product Attention)
下图是构成Transfomer架构的基础结构也就是注意力。如何理解呢?其中Q、K为查询向量和键值向量,v是值,三者通过向量运算得到最后的输出。可以这样理解这三个概念:
-
Query:表示当前需要关注的位置或目标,即要编码、解码的内容。
-
Key:表示输入序列中每个位置的"索引标签",用于与Query匹配。
-
Value:表示输入序列中每个位置的实际内容,最终根据匹配结果加权求和得到输出。
在自注意力机制中,Q、K、V 均来自同一输入序列 X,但经过不同的线性变换(投影)得到,而Wq、Wk、Wv是可学习的参数矩阵。(Q是问题通过矩阵变换为查询向量,K为索引,通过V转换所得,KV通过计算即可以得到V中的各个token的关联程度,即加权参数,有点像现在的RAG)
(自注意力模块的目的是为 每一个输入token生成一个向量表示
,该表示不仅能反映token本身的性质,还能反映token在句子里特有的性质) 【这篇博客讲解的也很好《Transformer》论文精读】
为什么要多头注意力? 多头注意力(Multi-head Attention):使用多个独立的注意头来计算注意权重,然后将它们组合起来。这样可以增加模型对输入不同部分的关注度,提高分辨率。(可以理解为不同的注意力层学习的是不同的空间特征,从而使细节更丰富)
3.4 位置编码(positional encoding)
由于transformer模型结构中不包含递归和卷积,为了使模型利用序列的顺序,就需要注入一些关于序列中标记的相对或绝对位置的信息。为此,transformer模型在编码器和解码器堆栈底部的输入嵌入中添加了"位置编码"。位置编码与嵌入具有相同的维数模型,因此可以对两者进行求和,模型以此学习数据的位置信息。
4、关于CNN\LSTM与Transformer的一些理解与名词解释
4.1 什么是seq2seq
Seq2Seq(Sequence-to-Sequence,Seq2Seq简介)是一种深度学习框架,专门用于处理输入和输出均为序列的任务。它的核心目标是将一个序列(如句子、时间序列)映射到另一个序列,同时允许输入和输出的长度不同。
Seq2Seq 由两个核心组件构成:编码器(Encoder)和解码器(Decoder),通常基于循环神经网络(RNN/LSTM/GRU)或 Transformer 实现。
4.2 模型的输入、输出与词嵌入
-
模型的输入:模型的输入一般要经过词嵌入(Word Embedding,会使用词表进行映射)转换为固定维度的向量表示。(再经过嵌入层处理为和模型适配的输入向量维度)
- 词嵌入不是简单的词表映射,包含分词、映射、嵌入(有嵌入层,这一层是学习所得,通过这一层的处理获得具有上下文语义的动态向量映射)
-
模型的输出:解码器生成的序列(如翻译后的目标语言文本),每个输出位置对应一个概率分布,表示词汇表中各词的可能性【对应于词表,预定义的有限token集合】
4.3 NLP模型的输出与自回归
目前NLP相关模型的输出形式,都是解码器通过自回归 生成逐步预测输出序列,动态扩展长度。解码器生成输出序列时,每一步的预测都依赖于前一步已生成的输出。解码器持续生成,直到预测出结束符<EOS>
或达到预设的最大长度。
4.4 transFomer模型的训练和推理过程有何不同
-
训练过程:
-
编码器:通过多头自注意力层和前馈神经网络层并行处理输入序列的所有词元,一次性生成全局上下文表示(如输入序列"机器学习"被同时编码)
-
解码器:利用 Teacher Forcing【teacher forcing】 将完整目标序列输入解码器,通过掩码(Mask)机制屏蔽未来信息,允许所有位置并行计算(如同时预测"machine"和"learning"的位置)【可以并行】
-
-
推理过程:编码器主要用于从输入序列中提取特征(整个推理过程编码过程只有一次 ),解码器的开始输入为
<SOS>
标记,在后续过程中,循环调用模型,每次生成一个token,已经生成的token序列作为后续调用模型的解码器输入,直到输出token为结束符<EOS>
或达到预设最大长度。【无法并行】
4.5 为什么transFomer支持并发训练而循环网络不行
-
循环模型由于隐藏层的存在,即使在训练时也要一层一层的训练。当前token预测的形成所使用的权重依赖于上一个token计算过程中使用到的权重的计算结果(中间态特征向量,隐藏层),所以该训练过程无法平铺开进行并发计算。
-
transformer,可以通过掩码并行计算任意一个时态的输出与真实结果之间的loss,然后对网络进行更新(因为它没有隐藏层)
4.6 怎么看待每一个Token预测与输入之间的关系
编码器像是一个理解器,类比于大脑接收外界信息的过程;解码器则是通过自身对世界的认知,生成对应输出的过程。
人类大脑形成"输出"的过程更像是一个从笼统到具体,从整体到细节的生产过程,虽受限于先行表达最终仍然需要逐字输出,但该过程中蕴含"预规划性"。不过本质上是一个将多维概念压缩为语言符号,并展开为线性序列表达的过程。
大模型逐个token进行预测对"输入 "给出对应的"输出 "的行为更像是"填充细节 "的过程,整体的规划过程早就在训练个过程中嵌入到整个知识网络中(对应于人类的个人知识与对世界的认知),对应到推理阶段编码行为中就蕴含着对"输入"的回答的整体性思考。(自回归生成看似"逐字输出",实则通过自注意力机制在每一步隐式建模全局关系,这与人类"整体构思→局部细化"的认知过程存在功能等效性但实现路径不同)
再结合自回归的原理进行类比,自回归模型通过条件概率链式分解和单向依赖约束,实现了对序列数据的生成与控制。其核心优势在于生成结果的连贯性,但在推理效率与长程依赖处理上存在局限。随着 Transformer 等新架构的引入,自回归模型在并行训练与上下文建模能力上取得了显著突破(这里感觉可以理解为:Transformer 自回归过程始终都在自注意力框架内,对于"长输出 "模型也不会因为忘记前面说了什么而出现"后文不对前文"的胡言乱语行为)。
数学上的概率预测只是外在体现,其本质其实就是模型通过对海量知识的学习,而形成的对外部请求的思考性应答(人的认知也是对无数行为判断概率的叠加)
四、什么是模型微调
1、预训练
预训练是指在大规模未标记的数据集上预先训练好的模型,其核心思想是通过在大量数据上学习通用特征表示,从而获得强大的基础能力。这些模型通常经过多轮迭代训练,捕捉数据中的底层模式、结构和语义知识。例如,在自然语言处理领域,GPT系和BERT系模型就是通过在大量文本数据上进行预训练,学习语言的上下文表示能力。
预训练的核心原理:预训练的一个关键方面是自监督学习,其实就是模型在没有明确的人工标签的情况下进行训练。相反,它使用数据本身的结构作为监督信号。例如,在自然语言处理中,可以遮掩句子中的某些单词,并让模型预测这些被遮掩的词,这就是所谓的"遮蔽语言模型"任务。
预训练模型广泛使用深度神经网络,尤其是包含多个隐藏层的深层架构,如卷积神经网络(CNNs)用于图像处理,递归神经网络(RNNs)、长短期记忆网络、门控循环单元,还有更现代的Transformer架构用于序列数据处理等。
预训练的主要好处包括:节省时间和资源、提高泛化能力、快速适应新任务能力等。首先,利用已有的大规模数据集进行预训练,可以避免从头开始训练模型所需的大量时间和计算资源。其次,预训练模型能够学习到通用的特征表示,使得它在面对新任务时具有较好的泛化能力。另外,即使在标注数据较少的情况下,预训练模型也能通过迁移学习快速适应新任务。
2、模型微调
模型微调是在预训练模型的基础上,针对特定任务进行进一步训练的过程(垂域应用)。微调阶段通常使用少量标注数据对预训练模型的参数进行调整,使其更好地适应特定任务的需求。例如,在图像分类任务中,可以将预训练好的ResNet模型(卷积神经网络模型)作为初始参数,然后在特定数据集上进行微调,以提高其分类性能。
微调的步骤主要包括:加载预训练模型、冻结部分层、调整学习率和优化目标几个方面。最开始,将预训练模型的参数作为初始值,然后只对模型的最后几层或输出层进行微调,而将前面的层冻结,以保留预训练阶段学到的通用特征。
这里还要注意,微调阶段通常使用较低的学习率,以避免破坏预训练阶段学到的特征。最后根据具体任务定义损失函数,并通过反向传播和更新模型参数,以达到最小化损失函数的效果。