深度学习入门:线性回归与Softmax回归详解
在深度学习的知识体系中,线性回归与 Softmax 回归是入门级的核心模型。线性回归作为回归任务的基础框架,搭建了 “输入特征到连续输出” 的映射逻辑;Softmax 回归则基于线性回归扩展,成为解决多分类问题的经典方案。这两种模型不仅是后续复杂神经网络的基石,更蕴含了深度学习中 “建模 - 损失 - 优化” 的核心思想。本文将从原理、实践差异到核心共性,全面解析这两大模型的技术细节。
一、线性回归:回归任务的 “奠基模型”
线性回归是描述输入特征与连续输出值之间线性关系的模型,广泛应用于房价预测、销量估计等需预测具体数值的场景。其核心逻辑是通过学习特征权重与偏置,构建最优的线性拟合函数。
1. 核心原理:从 “房价预测” 理解线性关系
以房价预测为例,房屋的卧室数量、车库面积、所在学区等特征(输入X)与房价(输出y)存在潜在的线性关联。线性回归通过以下公式建模这种关系:

从神经网络视角看,线性回归本质是单层无激活函数的神经网络:输入层接收特征x1,x2,......,xd,输出层通过权重w1,w2,......,wd与偏置b的线性组合直接输出预测值y,无隐藏层参与。
2. 训练核心:损失函数与优化算法
模型训练的目标是找到最优参数(w,b),使预测值与真实值的差异最小化,这需要通过 “损失函数定义误差” 和 “优化算法更新参数” 两步实现。
损失函数:量化预测误差
回归任务中最常用均方损失(L2 损失),计算公式为:
![]()
其中n为样本数量,
为真实值,
为预测值。均方损失通过平方项放大较大误差,迫使模型优先修正偏差显著的预测。
由于无法直接求解损失函数的最小值,深度学习中普遍采用梯度下降法迭代寻优,核心逻辑是 “沿梯度反方向更新参数以减小损失”。
• 梯度的含义:由损失函数对所有参数的偏导数组成的向量,指示函数值增长最快的方向,其反方向即为损失减小最快的方向。
• 基本流程:初始化参数→计算当前梯度→沿梯度反方向更新参数
→重复迭代直至收敛。
• 关键超参数:
◦ 学习率
:控制每次参数更新的步长。过大易导致震荡不收敛,过小则训练效率低下。
◦ 批量大小:每次计算梯度使用的样本数量。过小难以利用并行计算资源,过大则浪费资源且泛化性下降,小批量随机梯度下降(Mini-batch SGD) 是深度学习的默认选择。
二、Softmax 回归:多分类任务的 “入门方案”
当任务从 “预测连续值” 转为 “预测离散类别”(如手写数字识别、图像分类)时,线性回归不再适用,Softmax 回归应运而生。它基于线性回归扩展,专门解决多分类问题。
1. 回归与分类的核心差异
两类任务的本质区别决定了模型设计的不同,具体对比如下:

2. 核心原理:从 “置信度” 到 “概率分布”
Softmax 回归的核心是通过 “线性变换 + Softmax 运算” 将输入特征映射为各类别的概率分布,具体流程如下:
1. 线性变换:
与线性回归类似,对输入特征进行线性组合,得到k个未归一化的置信度(k为类别数):
其中
为第i类的权重向量,
为偏置。
2. Softmax 运算:
将置信度转换为符合概率性质(非负、和为 1)的预测概率:
![]()
例如,置信度[1,-1,2]经过 Softmax 运算后得到概率[0.26,0.04,0.7],表示样本属于第 3 类的概率最高。
从神经网络视角看,Softmax 回归是单层全连接神经网络:输入层接收特征,输出层包含k个神经元(对应k个类别),每个输出神经元的计算均依赖所有输入特征。
3. 训练核心:交叉熵损失的必要性
Softmax 回归的损失函数需适配 “概率分布匹配” 的需求,传统的均方损失存在梯度消失问题,因此普遍采用交叉熵损失。
交叉熵损失:量化概率分布差异
交叉熵损失用于衡量模型预测概率分布q与真实分布p的差异,计算公式为:
![]()
在多分类任务中,真实分布p通常为 “one-hot 编码”(如样本属于第 3 类时,p=0,0,1,0,0,...,0),此时损失函数简化为:
即只需关注真实类别对应的预测概率的对数负值。
为何不用均方损失?
均方损失会导致 Softmax 输出的梯度与
成正比,当预测概率接近 0 或 1 时,梯度会变得极小(梯度消失),导致模型难以收敛;而交叉熵损失的梯度为
,梯度大小与概率偏差直接相关,能有效驱动参数更新。
三、线性回归与 Softmax 回归的核心关联与差异
1. 核心关联
- 共享 “线性基础”:两者均以线性变换(Xw + b)为核心计算模块,本质都是对输入特征的线性建模。
- 统一训练框架:均遵循 “损失函数定义误差→梯度下降法优化参数” 的训练逻辑,关键超参数(学习率、批量大小)的调优思路一致。
- 同为神经网络基础:二者均可视为单层神经网络,是构建深层网络的基本单元(如深层网络的输出层常采用 Softmax 回归结构)。
2. 关键差异

四、实践落地:关键注意事项与代码示例
1. 线性回归实践:房价预测简化示例
使用 PyTorch 实现线性回归,以 “卧室数量、车库面积” 预测房价:
import torch
import torch.nn as nn
import torch.optim as optim
# 1. 数据准备(特征:卧室数、车库面积;标签:房价)
X = torch.tensor([[3, 2], [4, 2], [5, 3]], dtype=torch.float32) # 3个样本,2个特征
y = torch.tensor([150, 180, 220], dtype=torch.float32).reshape(-1, 1) # 房价(万元)
# 2. 定义模型(线性回归=单层线性层)
class LinearRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(2, 1) # 2输入特征,1输出值
def forward(self, x):
return self.linear(x)
model = LinearRegression()
# 3. 定义损失函数与优化器
criterion = nn.MSELoss() # 均方损失
optimizer = optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降
# 4. 训练
for epoch in range(1000):
# 前向传播
y_pred = model(X)
loss = criterion(y_pred, y)
# 反向传播与参数更新
optimizer.zero_grad() # 清空梯度
loss.backward() # 计算梯度
optimizer.step() # 更新参数
# 5. 预测
new_house = torch.tensor([[4, 2.5]], dtype=torch.float32)
print(f"预测房价:{model(new_house).item():.2f}万元")
2. Softmax 回归实践:MNIST 数字识别简化示例
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
# 1. 数据准备(MNIST:28×28灰度图,10类数字)
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,)) # 数据归一化
])
train_data = datasets.MNIST('./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
# 2. 定义模型(Softmax回归=线性层+Softmax,PyTorch中交叉熵损失已包含Softmax)
class SoftmaxRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(28*28, 10) # 28×28输入特征,10类输出
def forward(self, x):
x = x.view(-1, 28*28) # 展平图像为一维向量
return self.linear(x) # 输出未归一化的置信度
model = SoftmaxRegression()
# 3. 定义损失函数与优化器
criterion = nn.CrossEntropyLoss() # 交叉熵损失(含Softmax)
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# 4. 训练
for epoch in range(5):
for batch_idx, (data, target) in enumerate(train_loader):
# 前向传播
output = model(data)
loss = criterion(output, target)
# 反向传播与更新
optimizer.zero_grad()
loss.backward()
optimizer.step()
if batch_idx % 100 == 0:
print(f"Epoch {epoch}, Batch {batch_idx}, Loss: {loss.item():.4f}")
五、总结:从基础模型看深度学习核心思想
线性回归与 Softmax 回归虽简单,却浓缩了深度学习的三大核心思想:
1. 建模思想:
通过可学习的参数(权重、偏置)构建输入与输出的映射关系,实现对数据规律的拟合。
2. 优化思想:
以损失函数量化误差,通过梯度下降法迭代优化参数,寻找最优解。
3. 扩展思想:
从单一任务(回归)扩展到复杂任务(分类),核心是对输出层进行适配改造(Softmax 运算)和损失函数优化(交叉熵损失)。
这两种模型是深度学习的 “入门钥匙”—— 掌握线性回归,可理解回归任务的建模逻辑;掌握 Softmax 回归,能打通多分类任务的入门路径。在此基础上,后续的深层网络(如 CNN、DNN)本质是通过增加隐藏层和激活函数,实现更复杂的非线性映射,但其 “损失 - 优化” 的核心框架始终不变。
更多推荐



所有评论(0)