1. 神经网络的基本目标神经网络的目标是通过训练数据学习输入 x 和输出 y 之间的映射关系。对于一个最简单的线性模型y_hat w * x b其中x输入数据y真实结果y_hat模型预测结果w权重b偏置训练神经网络本质上就是不断调整参数 w 和 b使预测结果 y_hat 尽可能接近真实结果 y。因此模型训练的目标不是直接找到唯一正确的 w 和 b而是找到一组能够较好拟合数据、并能对新数据进行预测的参数。对于复杂神经网络参数可能有成千上万甚至数十亿个但基本目标仍然相同寻找一组合适的参数使模型预测误差尽可能小2. 为什么需要激活函数如果神经网络中的每一层都只进行线性变换即使堆叠很多层整个网络最终仍然等价于一个线性模型。例如y W2 * (W1 * x b1) b2整理以后仍然可以写成y W * x b因此仅使用线性变换无法拟合复杂的非线性关系例如图像中的物体形状、语音变化和自然语言语义。激活函数的主要作用是为神经网络引入非线性使网络能够学习更加复杂的数据规律。加入激活函数后y W2 * activation(W1 * x b1) b2常见激活函数包括ReLUSigmoidTanhLeaky ReLUGELUReLUReLU(x) max(0, x)特点计算简单能缓解部分梯度消失问题在卷积神经网络中应用广泛SigmoidSigmoid(x) 1 / (1 e^(-x))输出范围为0 到 1常用于二分类任务的输出层表示某一类别的概率。3. 神经网络的完整训练过程神经网络的一次参数更新通常包括前向传播 → 计算损失 → 反向传播 → 优化器更新参数前向传播前向传播是指将输入数据 x 按照网络结构从输入层逐层传递到输出层最终得到预测结果y_hat model(x)然后将预测结果 y_hat 与真实结果 y 进行比较通过损失函数计算误差L Loss(y_hat, y)因此前向传播主要完成两件事计算预测结果计算预测结果与真实结果之间的损失常见损失函数包括均方误差 MSE常用于回归任务交叉熵损失常用于分类任务边界框回归损失常用于目标检测任务反向传播反向传播是指从损失函数开始按照神经网络的反方向利用链式法则逐层计算损失函数对各个参数的梯度。例如对参数 w 计算dL / dw它表示参数 w 发生微小变化时损失函数 L 会如何变化。需要注意反向传播只负责计算梯度本身不负责修改参数。参数更新计算出梯度以后优化器根据梯度更新参数。最基本的参数更新公式为w_new w_old - learning_rate * gradient也可以写成w_new w_old - learning_rate * dL/dw其中learning_rate学习率gradient梯度负号表示沿梯度的反方向更新一次“前向传播、反向传播和参数更新”称为一次训练迭代或一个训练步并不代表整个训练已经完成。当训练集中的所有样本都被模型完整使用一遍时称为一个 Epoch。完整训练通常需要重复多个 Epoch。4. 梯度下降与优化器梯度表示损失函数在当前位置上升最快的方向因此负梯度方向表示损失函数在当前位置下降最快的方向。可以把梯度下降理解成下山参数表示人在山上的位置损失值表示当前位置的高度梯度指向最陡的上坡方向负梯度指向最陡的下坡方向学习率决定每一步走多远需要注意“下降最快”是指在当前位置附近、移动距离足够小时负梯度方向是局部下降最快的方向。学习率学习率决定每次参数更新的步长。学习率过大参数更新幅度过大可能错过较优位置损失可能震荡甚至发散学习率过小参数更新速度慢训练时间较长可能停留在平坦区域因此训练中通常会使用学习率衰减使训练前期更新较快后期更新更加精细。常见优化器梯度下降使用全部训练数据计算一次梯度再更新参数。优点是梯度稳定缺点是计算量较大。SGDSGD 是随机梯度下降。实际训练中通常不是每次只使用一个样本而是使用一小批数据计算梯度并更新参数这叫小批量随机梯度下降。AdamAdam 会根据梯度变化情况自动调整不同参数的更新幅度。特点是收敛速度通常较快对学习率相对不敏感在深度学习中使用广泛AdamWAdamW 在 Adam 的基础上将权重衰减单独处理。它在 Transformer、视觉模型和大语言模型训练中使用较多。5. 局部极小值与全局最小值神经网络的损失函数通常是一个复杂的高维非凸函数其中可能存在局部极小值鞍点平坦区域多个效果相近的低损失区域因此梯度下降通常不能保证找到数学意义上的全局最小值。但实际训练中并不一定必须找到全局最小值。更重要的是找到一个训练损失较低并且在新数据上泛化能力较好的参数区域。常见改进方法包括使用合适的参数初始化调整学习率使用学习率衰减使用带动量的 SGD、Adam 或 AdamW使用小批量训练引入一定随机性使用不同随机种子进行多次训练使用批归一化、层归一化和残差连接使用验证集选择泛化能力更好的模型使用早停法避免训练时间过长需要注意训练损失最低的模型不一定是实际效果最好的模型。如果训练损失持续下降但验证损失开始上升通常说明模型开始过拟合。6. 过拟合与泛化能力过拟合是指模型在训练数据上表现很好但在没有见过的新数据上表现较差。例如一个模型把训练数据中的噪声、偶然特征和特殊样本也记住了因此训练准确率很高但测试准确率很低。神经网络并不是越大越好。网络层数越多、参数越多模型的表达能力通常越强但如果数据量不足或训练方式不合理也更容易过拟合。泛化能力泛化能力是指模型对没有见过的新数据进行正确预测的能力。训练模型的最终目标不是单纯记住训练数据而是学习能够适用于新数据的规律。常见防止过拟合的方法增加数据量更多高质量、具有代表性的数据可以让模型学习更加稳定的规律。数据增强在不改变样本类别的前提下对原始数据进行变换生成新的训练样本。图像任务中常见的数据增强包括翻转裁剪缩放旋转调整亮度和对比度添加噪声MosaicMixUp数据增强可以提高训练数据的多样性使模型不容易记住某些固定特征。降低模型复杂度可以通过以下方式降低模型容量减少网络层数减少隐藏层神经元数量减少通道数使用更小的模型结构冻结部分参数早停法训练过程中持续观察验证集损失。如果验证集损失在若干轮内不再下降甚至开始上升就提前停止训练。正则化正则化是在原损失函数中加入参数惩罚项L_total L_original lambda * penalty其中L_original原始预测损失penalty参数惩罚项lambda正则化强度正则化可以理解为不仅要求模型预测准确还要求模型不要使用过于复杂、过于极端的参数。参数过大并不一定代表一定过拟合但通常会使模型对输入变化更加敏感。例如y_hat w1*x1 w2*x2 w3*x3如果参数为w1 20 w2 1000 w3 -35那么某些输入只发生很小变化输出就可能发生很大变化。模型容易把训练数据中的噪声当成真实规律从而增加过拟合风险。正则化主要限制的是参数数值体现出的实际复杂度而不是直接改变网络有多少层、多少参数。7. L1、L2 正则化与 DropoutL1 正则化L1 正则化在损失函数中加入参数绝对值之和L_total L_original lambda * sum(abs(w_i))也可以直观理解为L_total L_original lambda * (|w1| |w2| |w3| ...)L1 会持续推动参数向 0 靠近因此更容易使一部分参数最终变成 0。主要特点可以得到稀疏模型可以弱化不重要的特征在一定程度上具有特征选择作用可以理解为不重要的参数直接不用。L2 正则化L2 正则化在损失函数中加入参数平方和L_total L_original lambda * sum(w_i^2)也可以写成L_total L_original lambda * (w1^2 w2^2 w3^2 ...)L2 对较大的参数惩罚更明显通常会让所有参数整体变小但不容易直接变成 0。主要特点限制参数过大使模型更加平滑降低模型对输入扰动的敏感度可以理解为所有参数都可以参与但不要让某个参数过于极端。正则化系数 lambda 并不是越大越好。如果 lambda 太小限制作用不足模型仍然可能过拟合如果 lambda 太大参数被过度压缩模型无法充分学习可能导致欠拟合DropoutDropout 是一种常见的防止过拟合的方法。训练过程中Dropout 会按照一定概率随机关闭一部分神经元使这些神经元在当前训练步骤中暂时不参与计算。例如原本参与计算 A B C D E 某一次训练 A × C × E下一次训练时被关闭的神经元会重新随机选择。这样可以防止模型过度依赖某几个神经元迫使不同神经元学习更加稳定、通用的特征。可以将 Dropout 理解为训练时不允许某几个神经元长期包办所有任务让不同神经元都具备一定独立完成任务的能力。需要注意Dropout 通常只在训练阶段开启推理和测试阶段会关闭 Dropout推理阶段使用完整网络Dropout 在全连接层中使用较多卷积网络中不一定每一层都适合使用 Dropout8. 欠拟合与数据集划分欠拟合欠拟合是指模型学习能力不足或者训练不充分导致在训练集和测试集上的表现都较差。常见原因包括模型过于简单训练轮数不足学习率设置不合理正则化过强特征表达能力不足过拟合和欠拟合可以简单区分为情况训练集表现测试集表现欠拟合差差正常拟合好好过拟合很好差训练集训练集用于前向传播计算损失反向传播更新参数验证集验证集用于调整超参数选择最佳模型判断是否过拟合决定是否提前停止训练验证集不直接参与参数更新。测试集测试集用于在模型训练和调参完成后评估模型最终性能。测试集不应该在训练和调参过程中频繁使用否则可能会对测试集产生间接过拟合。9. 参数与超参数神经网络中的参数和超参数需要区分。参数参数是在训练过程中由模型自动学习得到的例如权重 w偏置 b超参数超参数需要在训练前人工设置或者通过实验选择例如学习率Batch SizeEpoch隐藏层数量神经元数量Dropout 比例正则化系数 lambda优化器类型简单来说参数是模型训练出来的超参数是训练模型之前设置的。