CS231n学习笔记
线性分类器与损失函数
上一节主要涉及了图像分类问题,并讲解了KNN算法的基本原理与应用方法。而本节则深入探讨了更为先进的算法用于解决这类问题。线性分类器由两个主要组件构成:评分函数的作用是将输入的图像数据映射到相应的类别分数上;例如,在区分猫狗车三类的情况下,简单的SVM模型就能生成各分类对应的分数值。另一部分则是损失函数,在机器学习中扮演着至关重要的角色,并被转换为一个最优化问题进行求解。
在线性分类模型中,参数W和b均被设计用于调整决策边界。通常情况下,在初始化阶段随机选取参数W,并假设其值相对较小(从而导致输出结果接近于零)。通过利用训练数据集进行优化训练后,则能够确定最优参数w和b。
损失函数同样也具有正则化的应用。通过正则化惩罚手段能够有效抑制模型中大数值权重的存在。通过调整(波大)参数我们可以实现对该值进行减小或增大的操作:当该值减小时会增加惩罚力度从而提高模型的拟合能力;反之当该值增大时则会降低惩罚强度从而增强模型的泛化能力。值得注意的是超参数设置并无实际意义如前所述我们主要关注的是对(波大)参数的具体调整策略
反向传播
在不同分支中传递回来的梯度需要进行求和操作。 损失函数必须同时考虑到分类正确的样本以及分类错误的情况。 分析矩阵乘法运算时会遇到较大的挑战性问题,因此我们需要深入研究其形状特征。 梯度向量的大小必然与权重矩阵W具有相同的维度。 通过分析矩阵乘法运算特性,我们能够确保维度匹配以实现有效的计算流程。
神经网络
激活函数优缺点
sigmoid和tanh函数的共同缺点在于其导数值容易出现饱和现象,在接近-1和1时导数趋近于零。另一个缺点是sigmoid函数输出值限定在0到1之间且其对称中心并不位于原点处(即为对称中心位于原点)。另一个问题是该方法仅能处理输入样本具有某种特定分布的情况(即为训练数据集在对称中心附近分布不均匀),这会导致权重w的方向性变化仅由f的方向决定,并且这种方向性变化将导致训练速度显著下降。优化目标应使输入与输出均呈现关于原点对称的特点以改善模型性能
开展研究工作同样是一个值得重视的方向。
在预处理过程中常见的错误, 不可先对整个数据集的所有图像计算平均值, 然后减去平均值再分为训练集/验证集/测试集。
正确的做法是首先将数据集划分为训练集、验证集和测试集三个部分, 仅从训练集中计算所有图像的平均值, 然后用这个训练均值分别减去这三个集合中的每一个图像.]
我们可以先用一个小型测试集合的数量包括20个、10个或1个来进行神经网络是否能够正常工作的检验
训练一个神经网络:
权值初始化具有重要意义。当初始权重W设定为极其微小时,会导致梯度发生分散现象
利用小批量数据对实现进行梯度检查,还要注意各种错误。
验证合理性并确认初始损失值是否合理,在小型数据集上实现100%的准确率
在训练过程中持续监控损失函数值的变化趋势,并定期评估模型在训练集和验证集上的表现情况。如果有兴趣的话,则可关注更新后的参数占比数据以及这一比例通常维持在千分之一水平附近的状态变化特征。特别对于卷积神经网络模型而言,在观察其第一层权重变化的同时可以通过可视化技术进一步分析其行为模式。
常用的两种优化技术包括结合了动量项的小批量随机梯度下降算法以及Adam优化器。
在训练过程中逐步降低学习速率。例如,在每隔一定数量的周期后将学习速率减半。或者当验证集的准确率达到一定程度时。
采用随机搜索策略(避免使用网格搜索的方法)来进行最优超参数的探索工作。具体而言,在粗阶段(对较宽泛的超参数范围进行初步筛选并训练1至5个周期),随后进入精阶段(聚焦于狭窄的范围并持续训练多个周期),系统会逐步细化超参数调优过程。
进行模型集成来获得额外的性能提高。
检查整个学习过程
训练神经网络中应该跟踪多个重要的数值
该研究的第一个关注点是损失函数。低学习率会引起算法改善呈现线性特征。稍高的学习率可能导致损失迅速减少。非常高的学习率可使损失迅速下降但随后会陷入一个非优状态(绿线)。原因在于优化过程的能量过高导致参数在混沌中随机震荡无法收敛至理想状态。此外在某些情况下(如噪声显著波动的情况)问题可能与较小的批量处理有关
从验证集正确率与训练集正确率图表:如果两者的差距较大,则可能表明模型出现了过拟合现象。通过增加正则化强度以及收集更多高质量的数据来缓解这个问题。若两者的相关性较强,则表明你的模型目前还没有足够的容量来处理数据。这通常是因为当前模型缺乏足够的参数来捕捉数据中的复杂模式。
