答案

这篇文章是《动手学深度学习》第 3.1 节,标志着你正式从“预备知识”跨入到了具体的深度学习模型学习。

  1. 网页内容核心总结
    线性回归是机器学习中最简单、最基础的回归模型。该页面从以下几个维度进行了系统讲解:
    A. 模型定义
  • 线性模型:假设目标 y 与特征 x 之间存在线性关系,数学表达式为:

    y = \mathbf{w}^\top \mathbf{x} + b

    其中 \mathbf{w} 是权重(weights),b 是偏置(bias)。

  • 神经网络视角:线性回归可以看作是单层神经网络,仅包含输入层和输出层。
    B. 损失函数与优化

  • 平方误差损失:为了衡量预测值与真实值的好坏,使用 l^{(i)}(\mathbf{w}, b) = \frac{1}{2}(\hat{y}^{(i)} - y{(i)})2。

  • 目标:寻找一组 \mathbf{w} 和 b,使得所有训练样本的总损失最小。

  • 解析解:线性回归是少数几个有解析解(可以直接用公式算出来)的模型。

  • 随机梯度下降 (SGD):在模型过于复杂没有解析解时,通过迭代逐渐减少误差的方法。关键步骤包括:

    • 初始化参数。
    • 抽取小批量(Minibatch)样本。
    • 计算梯度并沿负梯度方向更新参数。
  1. 习题详细答案
    以下是针对页面末尾练习题的逻辑解析:
    Q1: 假设我们有一个特征 \mathbf{x},其值服从正态分布。如果 \mathbf{w} 也是正态分布的,那么 y = \mathbf{w}^\top \mathbf{x} + b 的分布是什么?
    答案: y 依然服从正态分布(或复合正态分布)。
  • 原理:正态分布的线性组合仍然是正态分布。但在深度学习中,通常我们将 \mathbf{w} 视为待学习的参数(常数),将 \mathbf{x} 视为随机变量。在这种情况下,y 是 \mathbf{x} 的线性变换,其分布均值变为 w \mu + b,方差变为 w^2 \sigma^2。
    Q2: 如果用绝对误差(|y - \hat{y}|)代替平方误差损失,会发生什么?
    答案: * 收敛性质:绝对误差损失(L1 Loss)在极值点(误差为 0 时)是不可导的,这会导致在最优点附近梯度跳变,模型难以收敛到极精确的零值。
  • 鲁棒性:它比平方误差更具鲁棒性(Robustness)。因为平方误差会对离群点(Outliers)的误差进行平方,产生巨大的梯度,迫使模型去拟合坏数据;而 L1 损失对离群点不那么敏感。
    Q3: 假设你想计算二阶导数。你会怎么做?
    答案: 在 PyTorch 中,你需要手动开启计算图保存:
  • 在第一次计算梯度时使用 y.backward(create_graph=True)。
  • 这会保留一阶导数的计算图,使得你可以对 x.grad 再次调用 .backward()。
    Q4: 为什么随机梯度下降(SGD)中随机抽取小批量(batch)很重要?
    答案:
  • 效率:计算整个数据集的梯度(全量下降)在数据量巨大时内存无法承受,计算极慢。
  • 正则化效应:小批量的随机性引入了“噪声”。这种噪声有时能帮助优化算法跳出局部最优解,并起到一种天然的正则化作用,提高模型的泛化能力。
    Q5: 如果学习率(Learning Rate)设置得太大或太小会怎样?
    答案:
  • 太大:参数更新步长过大,会导致损失函数在最小值附近“反复横跳”甚至发散(Loss 变成 NaN 或无限大)。
  • 太小:参数更新极慢,模型需要海量的迭代次数才能收敛,浪费计算资源,且容易卡在局部的微小波动中。
    下一步建议:
    你已经理解了线性回归的理论,接下来最精彩的部分是 3.2 节的“从零开始实现”。
    你想让我为你解释如何不用深度学习库的现成函数,只用 Tensor 来写一个梯度下降迭代器吗?
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐