从线性回归到Softmax回归:深度学习入门的核心模型与优化之道
在深度学习的世界里,回归模型是连接数据与预测的重要桥梁。无论是估算房价这样的连续值预测任务,还是给手写数字分类这样的离散类别判断任务,都能看到回归模型的身影。今天,我们就从实际问题出发,深入探讨线性回归与 Softmax 回归这两个基础且关键的模型,以及背后支撑它们的优化算法。
线性回归:用数据预测连续值的利器
生活中,我们常常会遇到需要预测连续值的场景。比如看中一套房子,想要根据房屋的各项信息估算出合理价格,以便确定出价。这时候,线性回归就能派上用场。
线性回归的核心思想是找到一个线性函数,来拟合数据中的规律。它的数学表达式有两种常见形式,一种是针对单个样本的另一种是针对多个样本的,。通过这两个公式,我们就能建立起特征与预测值之间的线性关系。
要让线性回归模型发挥作用,关键在于确定合适的参数w(权重)和b(偏置)。这就需要用到训练数据,比如往年的房价数据,包括房屋的面积、卧室数量、所在学区等特征,以及对应的成交价格。我们的目标是找到一组w和b,使得模型根据这些特征预测出的房价,与实际成交价格的差距尽可能小。
损失函数:衡量模型预测误差的标尺
为了衡量模型预测值与实际值之间的差距,我们引入了损失函数。损失函数就像一把标尺,能告诉我们模型当前的预测效果如何。常见的损失函数有多种,适用于不同的场景。
平方损失(L2 损失)是线性回归中常用的损失函数之一,它计算的是预测值与实际值差值的平方。这种损失函数对较大的误差惩罚更严重,能让模型更关注那些预测偏差大的样本。
L1 损失则是计算预测值与实际值差值的绝对值。与平方损失相比,L1 损失对异常值的敏感度较低,在数据中存在较多异常值的情况下,使用 L1 损失可能会得到更稳健的模型。
还有 Huber 损失,它结合了平方损失和 L1 损失的优点。当误差较小时,Huber 损失表现得像平方损失,能保证损失函数的光滑性,便于优化;当误差较大时,又表现得像 L1 损失,降低了异常值对模型的影响。
有了损失函数,我们就有了优化的目标 —— 找到使损失函数值最小的参数w和b。
基础优化算法:梯度法引领参数寻优之路
要找到损失函数最小值对应的参数,我们需要借助优化算法。梯度法是深度学习中常用的基础优化算法,它就像给模型装上了一个 “指南针”,指引着参数更新的方向。
严格来说,梯度是由函数所有变量的偏导数汇总而成的向量。梯度指示的反方向,是函数值减小最多的方向。这意味着,沿着梯度的反方向更新参数,能让损失函数值以最快的速度下降。
不过,需要注意的是,梯度所指的方向并不能保证就是函数最小值的方向,也不一定是真正应该前进的方向。但沿着这个方向前进,确实能最大限度地减小函数值。在梯度法中,参数更新的流程是这样的:从当前参数位置出发,沿着梯度反方向前进一定的距离,然后在新的位置重新计算梯度,再沿着新的梯度反方向继续前进,如此反复,不断逼近损失函数的最小值。
随机梯度下降:提升优化效率的改进方案
在实际应用中,当训练数据量非常大时,传统的梯度下降算法每次更新参数都需要用到所有的训练数据,计算量很大,效率较低。随机梯度下降(SGD)应运而生,它每次更新参数时,只随机选取一个样本进行计算。这样一来,大大减少了每次迭代的计算量,加快了参数更新的速度,使得模型能更快地适应数据。
但随机梯度下降也有不足之处,由于每次只使用一个样本,梯度估计的方差较大,参数更新的路径可能会比较曲折,收敛过程不够稳定。
小批量随机梯度下降:平衡效率与稳定性
为了在效率和稳定性之间找到平衡,小批量随机梯度下降(Mini - batch SGD)成为了深度学习中的默认求解算法。它每次更新参数时,会选取一小部分样本(即一个小批量)来计算梯度。
在选择批量大小时,需要考虑多方面因素。批量值不能太小,否则难以充分利用计算机的并行计算资源,而且梯度估计的方差依然较大,参数更新不稳定;批量值也不能太大,过大的批量会浪费计算资源,同时可能会让模型陷入局部最优解,难以找到全局最优的参数。
学习率:控制参数更新步伐的关键
除了批量大小,学习率也是一个至关重要的超参数,它控制着每次参数更新的步伐大小。
学习率不能太大,如果学习率过大,参数更新的步伐就会过大,很可能会错过损失函数的最小值,导致模型在最小值附近震荡,甚至无法收敛。
学习率也不能太小,过小的学习率会使参数更新速度过慢,需要经过大量的迭代才能收敛,不仅增加了训练时间,还可能在训练过程中因为迭代次数不足,无法达到理想的训练效果。
因此,选择合适的学习率和批量大小,对模型的训练效果和训练效率有着重要的影响。
Softmax 回归:从连续预测到多类分类的跨越
前面我们讨论的线性回归主要用于预测连续值,而在很多实际问题中,我们需要对数据进行分类,比如将 ImageNet 中的自然对象分为 1000 类,把 MNIST 数据集的手写数字分为 10 类,或者在 Kaggle 的任务中,将人类蛋白质显微镜图像分为 28 类,把维基百科上的恶语评论分为 7 类等。这时候,Softmax 回归就成为了常用的模型。
从回归到多类分类,模型的输出形式发生了变化。回归模型通常只有一个连续数值输出,而分类模型通常有多个输出,每个输出代表预测为对应类别的置信度。
Softmax 回归本质上是一个单层神经网络,同时也是一个全连接层。因为计算每个输出\(o_1, o_2, o_3, \dots\)时,都需要用到所有的输入特征\(x_1, x_2, x_3, \dots\)。
在 Softmax 回归中,输出层的神经元数量需要根据具体的分类问题来确定。一般来说,输出层的神经元数量会设定为类别的数量。例如,在手写数字分类(10 类别分类问题)中,输出层会设置 10 个神经元,每个神经元对应一个数字类别的预测置信度。
Softmax 运算:将输出转化为概率分布
为了让模型的输出更具可解释性,我们需要将输出层的原始输出转化为概率分布。Softmax 运算就起到了这个作用,它能将输出值转化为非负且总和为 1 的概率值。
通过指数函数exp,我们可以确保每个输出值都大于 0;然后除以所有输出值指数的总和,使得最终得到的概率值总和为 1,符合概率分布的定义。
举个例子,假设输出层的原始输出为\([1, -1, 2]\),经过 Softmax 运算后,得到的概率分布为\([0.26, 0.04, 0.7]\)。这意味着模型预测该样本属于第一类的概率为 0.26,属于第二类的概率为 0.04,属于第三类的概率为 0.7,我们通常会将概率最大的类别作为模型的最终预测类别。
交叉熵损失:分类任务的常用损失函数
在 Softmax 回归中,由于输出是概率分布,我们需要一种适合衡量两个概率分布差异的损失函数,交叉熵损失就是常用的选择。交叉熵损失能有效地衡量模型预测的概率分布与真实概率分布之间的差距,当模型预测越接近真实情况时,交叉熵损失值越小。
总结
线性回归和 Softmax 回归是深度学习中的基础模型,分别适用于连续值预测和多类分类任务。梯度下降算法是它们背后重要的优化手段,通过不断沿着梯度反方向更新参数,逐步减小损失函数值,从而找到最优的模型参数。
小批量随机梯度下降凭借其在效率和稳定性之间的良好平衡,成为了深度学习中的默认求解算法。而学习率和批量大小这两个超参数,对模型的训练效果和效率有着关键影响,需要根据具体任务进行合理选择。
从线性回归到 Softmax 回归,我们不仅看到了模型在不同任务场景下的适应性变化,也体会到了深度学习中 “模型 - 损失函数 - 优化算法” 这一核心框架的一致性。掌握这些基础内容,能为我们进一步深入学习更复杂的深度学习模型打下坚实的基础。
更多推荐



所有评论(0)