【谈谈AI基本功】模型超参数与参数
参数:模型从数据中学到的知识,即其“记忆”。训练后固定即权重,用于预测。通过梯度下降反向传播更新。超参数:我们在训练前手动设定的“控制旋钮”,决定模型如何学习、长什么样。不参与梯度下降,训练前固定或按计划调整。
参数:模型从数据中学到的知识,即其“记忆”。训练后固定即权重,用于预测。通过梯度下降反向传播更新。
超参数:我们在训练前手动设定的“控制旋钮”,决定模型如何学习、长什么样。不参与梯度下降,训练前固定或按计划调整。
模型超参
Batch Size(批大小)
一句话解释:一次喂给模型多少条数据。
类比:你要背100个单词。
batch size = 1:一次看1个单词,看一个背一个,然后更新一次大脑。非常精细,但效率低,容易受到单个单词的干扰。
batch size = 10:一次看10个单词,整体看一遍这10个,然后总结一下再更新大脑。效率高了,获得了更平均的反馈。
batch size = 100:一次把100个单词全看完,然后更新一次大脑。效率最高,但可能忽略了细节,对内存要求也极大。
技术定义:
在训练时,我们不会把整个数据集(比如100万张图片)一次性塞进模型,因为内存(显存)装不下,计算也不稳定。
于是我们把数据分成一个个“小包裹”,每个包裹里的样本数就是 Batch Size。
模型处理完一个Batch,计算一次平均误差,并据此更新一次自身的参数(权重)。
影响:
小Batch Size(如32, 64):
优点:更新频繁,更“敏捷”,可能找到更精细的最优解;对内存需求小。
缺点:单个Batch的噪声大,训练过程不稳定(曲线震荡);不能充分利用GPU的并行计算能力,速度可能较慢。
大Batch Size(如1024, 4096):
优点:梯度估计更准确,训练曲线平滑;能榨干GPU性能,计算效率高。
缺点:容易陷入局部最优解,泛化能力可能稍差;对内存要求极高(大模型的瓶颈!)。
简单记:Batch Size 是“并行计算”的单位,决定了单次更新的“视野广度”和内存占用。
Epoch(轮次)
一句话解释:把整个数据集完整地看过多少遍。
类比:还是那100个单词。
epoch = 1:你把100个单词从头到尾背了一遍,就结束了。
epoch = 50:你反反复复把这100个单词背了50遍,直到滚瓜烂熟。
技术定义:
当模型用一个个Batch,把训练集中的所有样本都遍历了一遍,就完成了 1个Epoch。
比如,训练集有10000张图,batch size=100,那么1个Epoch需要 10000 / 100 = 100 次迭代(Iteration)才能完成。
影响:
Epoch太小:模型还没看够数据,没学到东西,这叫 欠拟合。
Epoch太大:模型把训练数据背得滚瓜烂熟,甚至记住了其中的噪声和无关细节,在新数据上表现反而变差,这叫 过拟合。
目标是找到一个合适的Epoch,让模型在 “刚好学会但没背熟” 的状态停下。
简单记:Epoch 是“训练时长”的单位,决定了模型学习的“透彻程度”。
Iteration(迭代)
理解了上面两个,这个就很简单了。
Iteration(迭代次数):完成一个Batch的训练,并更新一次模型参数,就是一次迭代。
关系公式:1个Epoch = (训练集总数 / Batch Size) 次 Iteration
参数log_interval(也有框架兼容写法 print_freq),该参数定义了 “每完成 N 步就打印一次训练日志”
Learning Rate(学习率)
一句话解释:模型每次根据误差调整自身时,步子迈多大。
类比:你要从山坡走到谷底(寻找最低点)。
学习率太小(如0.0001):你像蚂蚁一样小心翼翼,每步只挪一毫米。虽然绝不会错过最低点,但走到天黑也到不了。
学习率合适(如0.01):你以正常步伐下山,能稳步、较快地到达谷底。
学习率太大(如1.0):你像巨人一样一步跨出百米,直接从山坡左边跳到右边,反复横跳,甚至越跳越高,永远找不到谷底。
技术定义:
在梯度下降算法中,模型参数(权重)的更新公式是:新权重 = 旧权重 - 学习率 × 梯度。梯度指明了“下山”的方向,而学习率则决定了沿着这个方向走多远。
影响:
太小的学习率:收敛极慢,训练时间长,容易卡在局部最优点。
太大的学习率:训练不稳定,损失值剧烈震荡,无法收敛甚至发散(NaN)。
自适应学习率:像Adam这类优化器能自动微调每个参数的学习率,但其基础学习率仍需人工设定。
简单记:学习率是训练中最关键的“油门和刹车”,控制着模型学习的速度与稳定性。
Optimizer(优化器)
一句话解释:决定模型如何根据误差(梯度)来更新自身参数的算法策略。
类比:同样是下山,你有不同的行进策略。
SGD(随机梯度下降):只看脚下最陡的方向,直直地走一步。简单但可能绕远路,在沟壑地带反复震荡。
SGD with Momentum(带动量的SGD):你变成了一个保龄球。不仅看当前坡度,还会保留之前滚动的惯性。这样能冲过一些小坑,收敛更快、更稳。
Adam:你是一个智能机器人。你不仅像保龄球一样有动量,还会为每一步自动调整步长(自适应学习率)。在陡坡小步走,在缓坡大步跑,是目前最流行、最省心的选择。
技术定义:
优化器是实现梯度下降算法的具体形式。它定义了如何计算和应用梯度来更新模型参数。
常见类型:
SGD:最基础,θ = θ - η * ∇J(θ)
SGD with Momentum:引入速度v,v = γ * v + η * ∇J(θ),然后θ = θ - v,其中γ是动量系数(通常0.9)。
Adam:结合了Momentum和自适应学习率(RMSProp),为每个参数维护两个移动平均(一阶矩和二阶矩)来调整更新。
影响:
SGD:可能找到更尖锐(泛化性好)的最优点,但需要精心调学习率和配合学习率衰减。
Adam:通常收敛更快,对初始学习率不敏感,但有时在测试集上的表现不如精调过的SGD。
简单记:优化器是模型的“导航算法”,不同的算法有不同的“性格”(快、稳、准)。
Weight Decay(权重衰减) / L2 Regularization(L2正则化)
一句话解释:对模型中过大的参数值进行惩罚,防止模型“记忆”训练数据。
类比:你要去荒野生存,但背包重量有限。
没有权重衰减:你可以带任意多的装备。你为每一种可能情况都带了专用工具(比如为每棵树都带一把不同的锯子)。虽然能在训练时完美应对,但背包臃肿,在新环境(测试集)适应性差。
有权重衰减:你的背包有重量限制,迫使你只带最通用、最核心的几件工具(比如一把万用军刀)。虽然在某些特定训练任务上不那么“完美”,但更轻便,在任何新环境下都能很好地生存。
技术定义:
在损失函数中增加一个惩罚项,该项与所有权重值的平方和成正比。新的损失函数为:总损失 = 原始损失 + λ * Σ(权重²)。这里的 λ(lambda) 就是权重衰减系数,是控制惩罚力度的超参数。
影响:
核心作用:有效减轻模型过拟合,提高泛化能力。
副作用:会使权重分布趋向于小而分散,而不是集中在大权重上。
与优化器集成:在PyTorch的SGD或Adam优化器中,weight_decay参数就是直接设置这个λ值。
简单记:权重衰减是模型的“健身教练”,强迫模型保持“苗条”(参数值小),避免“肥胖过拟合”。
Dropout Rate(丢弃率)
一句话解释:在训练时,随机让网络中的一部分神经元“罢工”的比例。
类比:你是一个项目经理,带领一个团队完成项目。
没有Dropout:每次任务都是整个固定团队一起上。某些成员可能严重依赖他人,自己能力不强。团队形成了固定的协作模式,无法应对人员变动。
有Dropout(例如rate=0.5):每次任务开始前,你都随机让一半的成员去休假。剩下的成员必须学会独立工作和与不同的同事协作。长期下来,每个成员都成了多面手,团队也具备了多种人员组合下的工作能力,鲁棒性极强。
技术定义:
在训练过程的每一次前向传播中,每个神经元都以概率 p(Dropout Rate)被临时“丢弃”,即将其输出设为0。在测试/推理时,所有神经元都参与工作,但为了平衡,其输出值要乘以 (1-p)(或在训练时除以(1-p),称为Inverse Dropout)。
影响:
防止过拟合:本质是训练了指数个子网络的集成(Ensemble),平均了多种网络结构的结果。
提供冗余性:迫使网络不依赖于任何单个神经元或特征。
注意:通常只加在全连接层或Transformer的FFN层,卷积层有时也会加。
简单记:Dropout是训练时的“随机减员演习”,打造一个不依赖任何个人的“全能团队”。
Network Architecture Hyperparameters(网络结构超参数)
一句话解释:决定模型“骨架”长什么样的设计参数。
- Number of Layers / Depth(层数 / 深度)
类比:公司决策的层级。
层数少(浅网络):像扁平化创业公司,决策快(计算快),但处理复杂问题能力有限。
层数多(深网络):像大型集团,层级多,能抽象和解决极其复杂的问题(如图像识别、翻译),但信息传递容易失真(梯度消失/爆炸),且管理成本高(难训练、参数多)。
- Number of Units / Width(神经元数 / 宽度)
类比:每个部门的人数。
宽度窄:每个部门人少,能力有限。
宽度宽:每个部门人才济济,能处理大量信息和复杂特征,但部门间协调成本高(计算量大)。
- Kernel Size(卷积核尺寸)
一句话解释:卷积核一次看输入图像的多少像素。
3x3:最常用。感受野小,提取局部特征,参数少,可以多层堆叠来获得大感受野。
5x5或7x7:感受野大,能捕获更广阔的特征,但参数多。现在常用两个3x3卷积堆叠来替代一个5x5卷积,以用更少的参数获得相同的感受野。
技术定义:
这些参数定义了模型的容量(拟合能力)。模型越深、越宽,理论上能拟合的函数越复杂,但也越容易过拟合,且对计算资源和数据量的要求呈指数级增长。
简单记:结构超参数是模型的“先天基因”,决定了它的潜力上限和训练难度。
Activation Function(激活函数)
一句话解释:给神经元的输出施加的非线性变换,是神经网络能拟合任何复杂函数的关键。
类比:神经元就像一个个员工,激活函数决定了他们如何汇报工作。
Sigmoid:员工总是把汇报压缩在0到1之间(“还行”到“很好”)。但容易“报喜不报忧”,且当输入极大或极小时,汇报变得麻木(梯度饱和),领导(梯度)无法得到有效反馈。
ReLU:简单粗暴。输入为负时,汇报“0”(不干活);输入为正时,如实汇报。效率高,让网络变得稀疏,但可能导致一些员工永远沉默(“神经元死亡”)。
Leaky ReLU:对ReLU的改进。输入为负时,也允许一个很小的负值汇报(如0.01x),给了“沉默员工”一线生机。
技术定义:
没有激活函数的神经网络,无论多少层,都等价于一个线性模型。激活函数(如ReLU, Sigmoid, Tanh)引入了非线性,使得神经网络可以逼近任意复杂函数。
影响:
ReLU族:目前最主流,能有效缓解梯度消失问题,加速收敛。
Sigmoid/Tanh:常用于RNN或输出层(如二分类),但在深层网络中间层易导致梯度消失。
简单记:激活函数是神经元的“性格”,为模型注入非线性的“灵魂”。
总结与建议
对于新手,调整超参数的优先级建议:
第一梯队(必须调):学习率(Learning Rate) > 优化器(Optimizer,先选Adam) > 权重衰减/丢弃率(防过拟合)。
第二梯队(尝试调):网络结构(深度/宽度)、Batch Size。
第三梯队(进阶调):学习率调度策略(如热身、余弦退火)、动量参数、初始化方法等。
记住,超参数调优是经验、直觉与实验的结合。开始时可以使用文献或框架推荐的默认值,然后以学习率为杠杆,在验证集上观察效果,逐步展开你的调参之旅。
模型参数
权重(Weights)
一句话解释:神经元之间连接的重要性评分,决定了信号如何传递和转换。
类比:你大脑中不同知识区域之间的"关联强度"。
全连接层中的权重:想象你要从"看到苹果图片"联想到"这是水果"。
每个输入特征(如颜色、形状)到每个输出判断(如"是水果"、“是红色”)都有一个权重。
高权重意味着该特征对判断很重要(如"红色"对判断"是苹果"权重高)。
低权重或负权重意味着该特征与判断负相关或无关。
卷积层中的权重(卷积核):想象你拿着一个手电筒在图片上滑动寻找特定图案。
卷积核的每个位置有一个权重值,组成一个"特征检测器"模板。
训练后,不同卷积核学会检测不同特征(边缘、纹理、形状等)。
这些权重就是模型学到的"视觉模式识别器"。
技术定义:
在神经网络中,权重是连接两个节点的实数矩阵。在前向传播时,输入值乘以权重后求和,传递给下一层。数学表示为:输出 = 激活函数(权重 × 输入 + 偏置)。
重要性:
权重存储了模型学到的全部知识。
训练的本质就是通过反向传播和梯度下降,不断调整这些权重值。
大模型(如GPT-3)的1750亿参数中,绝大部分都是权重参数。
简单记:权重是模型的"记忆突触",编码了输入特征与输出预测之间的所有关系模式。
偏置(Bias)
一句话解释:神经元的"激活阈值"或"基础倾向",决定了神经元多容易被激活。
类比:裁判的判罚松紧度。
没有偏置:裁判完全按规则手册逐条对照,没有任何个人倾向。如果规则要求"投篮命中得2分",那么球必须完美入网才算。
有偏置:裁判有自己的判罚倾向。比如偏置为+0.5,意味着即使投篮稍微擦网,裁判也倾向于给分;偏置为-0.5,意味着必须完美空心入网才给分。
技术定义:
偏置是一个标量值,加到神经元的加权输入总和上,然后才通过激活函数。公式为:输出 = 激活函数(Σ(权重 × 输入) + 偏置)。
作用:
提供灵活性:允许神经元在输入全为0时也能有输出。
平移决策边界:在分类任务中,偏置可以移动分类超平面的位置。
与权重协同工作:权重决定"输入特征的重要性",偏置决定"整体激活的难易度"。
例子:
判断"是否是猫"的神经元可能有高偏置,因为图片中"有毛茸茸的耳朵"这一特征本身就强烈暗示是猫。
判断"是否是稀有品种"的神经元可能有低偏置或负偏置,因为需要更多特定特征才能激活。
简单记:偏置是神经元的"个人倾向",让模型决策更加灵活,不完全依赖于输入数据。
批量归一化层的参数(Gamma 和 Beta)
一句话解释:批量归一化层学习到的"重新缩放"和"重新平移"参数,让网络可以恢复数据的原始分布。
类比:厨房的标准化流程。
批量归一化过程:
标准化:先把所有食材(输入数据)按统一标准处理(减均值、除标准差)。
可学习的调整:但标准化后可能损失了食材的某些特性,所以允许厨师根据经验重新调味。
Gamma(γ,缩放参数):厨师根据经验决定"这道菜需要把标准化后的味道放大还是缩小"。γ=1表示保持标准化结果;γ>1表示增强特征;γ<1表示减弱特征。
Beta(β,平移参数):厨师决定"这道菜需要偏咸还是偏甜"。β=0表示不偏移;β>0表示正向偏移;β<0表示负向偏移。
技术定义:
批量归一化的计算分为两步:
归一化:x_norm = (x - μ) / √(σ² + ε) (μ是批均值,σ是批标准差,ε防止除零)
缩放平移:y = γ × x_norm + β
这里的γ和β就是可学习的参数,每个归一化层都有自己的一对γ和β。
重要性:
恢复表达能力:如果没有γ和β,批量归一化会强制数据服从标准正态分布,可能限制网络表达能力。
与网络共同进化:γ和β随着训练学习,让每一层都能找到最适合后续层的数据分布。
简单记:γ和β是批量归一化的"个性化调整旋钮",让标准化不僵化,保留网络学习的灵活性。
嵌入向量(Embeddings)
一句话解释:将离散型数据(如单词、用户ID)映射到连续向量空间的"语义编码"。
类比:给每个人建立一份心理档案。
词嵌入(Word Embeddings):
训练前:每个单词只是字典中的一个编号(如"猫"=42,“狗”=17),没有语义关系。
训练后:"猫"和"狗"的向量在空间中很接近(都是宠物),"猫"和"鱼"也较近(都是动物),"猫"和"汽车"很远。
神奇之处:向量运算有意义,如"国王" - “男人” + “女人” ≈ “女王”。
用户/物品嵌入(推荐系统):
每个用户得到一个向量,编码其喜好(喜欢科幻、动作片、高评分)。
每个电影得到一个向量,编码其特征(科幻题材、大制作、高口碑)。
用户向量与电影向量的点积,预测该用户对该电影的喜爱程度。
技术定义:
嵌入层本质上是一个查找表(Lookup Table)。假设有V个单词,嵌入维度为D,则嵌入矩阵大小为V×D。当输入单词索引i时,取出第i行向量作为该单词的嵌入表示。
训练过程:
嵌入矩阵初始化为随机值,随着模型训练一同优化。语义相近的单词在反向传播过程中,它们的向量会被"拉近"。
应用:
自然语言处理:词嵌入、位置嵌入(如Transformer中的位置编码)
推荐系统:用户嵌入、物品嵌入
图神经网络:节点嵌入
简单记:嵌入向量是模型的"语义词典",将离散符号转换为有意义的数学向量,让模型能理解符号之间的关系。
自注意力机制中的参数(Q/K/V投影矩阵)
一句话解释:Transformer中用来生成查询(Query)、键(Key)、值(Value)向量的可学习投影矩阵。
类比:图书馆检索系统。
传统检索:你只能按书名精确查找。
智能检索(自注意力):你可以用自然语言描述需求,系统理解后找到相关书籍。
三个矩阵的作用:
W_Q(查询投影矩阵):把你输入的请求(如"我想了解深度学习")转换为系统能理解的查询向量。
W_K(键投影矩阵):把图书馆每本书的关键信息(标题、摘要)转换为键向量。
W_V(值投影矩阵):把每本书的详细内容转换为值向量。
注意力计算:
你的查询向量与所有书的键向量计算相似度(点积)
相似度高的书获得高权重
用这些权重加权求和对应的值向量,得到最终回答
技术定义:
对于输入序列X(n×d_model),计算:
Q = X × W_Q (查询矩阵)
K = X × W_K (键矩阵)
V = X × W_V (值矩阵)
其中W_Q、W_K、W_V都是可学习的参数矩阵,大小通常为d_model×d_k或d_model×d_v。
多头注意力:
实际中会使用多个这样的投影矩阵组(多头),每组学习不同类型的注意力模式:
头1可能关注"语法结构"
头2可能关注"情感倾向"
头3可能关注"实体关系"
简单记:Q/K/V矩阵是Transformer的"注意力透镜",让模型学会关注输入的不同方面,实现上下文理解。
层归一化参数(与批量归一化类似)
一句话解释:对单个样本的所有特征进行归一化的可学习参数。
类比:个人能力评估标准化。
批量归一化:比较你和同批其他人的成绩,进行标准化(“你在这次考试中排名前10%”)。
层归一化:只看你自己的各科成绩,进行标准化(“你的数学比语文强很多”)。
技术定义:
对于单个样本在某一层的所有神经元输出h_1, h_2, …, h_n:
计算该样本的均值和方差
归一化:h_i’ = (h_i - μ) / √(σ² + ε)
缩放平移:output_i = γ × h_i’ + β
这里的γ和β同样是可学习的参数,但归一化的维度不同(批量归一化跨样本,层归一化跨特征)。
应用场景:
RNN/Transformer:由于序列长度可变,批量归一化不适用,常用层归一化。
小批量训练:当批量大小很小时,批量归一化的统计不准确,层归一化更稳定。
简单记:层归一化参数是"个体内标准化调整器",让每个样本自身特征分布更稳定,便于后续处理。
以上内容为deepseek生成后修改
更多推荐

所有评论(0)