线性神经网络练习题

练习

Q1

  1. 假设我们有一些数据
    x1,...,xiR。我们的目标是找到一个常数b,使得最小化

    i(xib)2

    1. 找到最优值b的解析解。
    2. 这个问题及其解与正态分布有什么关系?

1.找到最优值b的解析解。

展开平方和

i(xib)2=i(xi22xib+b2)=ixi22bixi+Nb2

其中 N 是数据点的数量。

b 求导

ddb(i(xib)2)=2ixi+2Nb

设置导数为零

2ixi+2Nb=0

解出 b

Nb=ixi

b=1Nixi

结论

最优值 b 的解析解是:

b=x¯

2.这个问题及其解与正态分布有什么关系?

  1. 最小二乘法与正态分布

在统计学中,最小化平方误差

i 

(xib)2 其实可以看作是寻找一个参数 b 使得数据

xi 在该参数下的分布最为集中。若我们假设数据

xi服从正态分布

N(b,σ2),则最大似然估计(MLE)和最小二乘法会得到相同的结果。

  1. 正态分布的特性

正态分布的一个重要特性是其均值(

μ)和最优估计(

b^)是相同的。即,如果

xi服从

N(b,σ2),那么对

μ的极大似然估计是样本均值:

μ^=1NiNxi

  1. 统计推断

在许多统计推断中,正态分布被广泛使用,因为根据中心极限定理,许多独立随机变量的和趋向于正态分布。这使得在大样本情况下,样本均值的分布可以近似为正态分布。

总结

在最小化平方误差的过程中,我们实际上是在寻找使得假设数据服从正态分布的最优参数 b。因此,平方误差的最小化与正态分布的均值估计密切相关。

Q2

推导出使用平方误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置b(我们可以通过向

X添加所有值为1的一列来做到这一点)。
1.用矩阵和向量表示法写出优化问题(将所有数据视为单个矩阵,将所有目标值视为单个向量)。
2.计算损失对

w的梯度。
3.通过将梯度设为0、求解矩阵方程来找到解析解。
4.什么时候可能比使用随机梯度下降更好?这种方法何时会失效?

  1. 用矩阵和向量表示法写出优化问题

假设我们有 N 个样本,每个样本有 M 个特征。我们可以用矩阵和向量来表示这个问题:

  • 输入矩阵
    XRN×M,其中每一行是一个样本的特征向量。
  • 目标向量
    yRN,其中每个元素是对应样本的目标值。
  • 权重向量
    wRM

优化问题可以表示为最小化以下损失函数(均方误差):

L(w)=1Ni=1N(yixiTw)2

这可以用矩阵表示为:

L(w)=1NyXw2

  1. 计算损失对w 的梯度

我们需要计算损失函数的梯度:

wL(w)=w(1NyXw2)

根据链式法则和矩阵微分的规则,得到:

wL(w)=2NXT(yXw)

  1. 将梯度设为0,求解矩阵方程

设置梯度为零以找到最优解:

2NXT(yXw)=0

简化后得到:

XTy=XTXw

重排得到:

XTXw=XTy

这个方程可以通过求逆来得到解析解(假设

XTX可逆):

w=(XTX)1XTy

  1. 何时可能比使用随机梯度下降更好?这种方法何时会失效?

优势

  • 小规模数据:当数据集较小且可以完全加载到内存时,使用解析解计算效率高,且可以得到精确解。
  • 可解释性:解析解提供了明确的数学表达式,便于理解模型的行为。

缺点

  • 大规模数据:当数据集非常大时,计算
    XTX 的逆可能会非常耗时并且占用大量内存。
  • 特征共线性:如果特征高度相关(多重共线性),
    XTX可能会接近奇异,导致求逆不稳定。
  • 在线学习:在动态数据环境中,使用随机梯度下降(SGD)可以逐步更新模型,而不是重新计算整个数据集。

总结

解析解在小规模且特征间没有共线性时优于随机梯度下降,而在大规模数据和动态学习场景中,SGD更为合适。

Q3

假定控制附加噪声ϵ的噪声模型是指数分布。也就是说,

p(ϵ)=12exp(|ϵ|)

  1. 写出模型
    logP(y|X)下数据的负对数似然。
  2. 请试着写出解析解。
  3. 提出一种随机梯度下降算法来解决这个问题。哪里可能出错?(提示:当我们不断更新参数时,在驻点附近会发生什么情况)请尝试解决这个问题。

1.写出模型的负对数似然

假设我们有输入数据

X 和目标数据

y(即

yi)。根据题意,噪声

ϵ的分布为指数分布:

p(ϵ)=12exp(|ϵ|)

模型输出为

yi=f(xi)+ϵ,其中

f(xi)是模型的预测值。

因此,给定

X的情况下,负对数似然可以写为:

logP(y|X)=i=1Nlogp(yif(xi))

将噪声的分布代入:

logP(y|X)=i=1Nlog(12exp(|yif(xi)|))

简化后得到:

logP(y|X)=i=1N(log2+|yif(xi)|)

忽略常数项

log2,我们可以简化为:

logP(y|X)=i=1N|yif(xi)|

  1. 解析解

负对数似然的形式表示我们需要最小化绝对误差的和。对于线性模型

f(xi)=xiTw,我们需要最小化以下目标函数:

L(w)=i=1N|yxiTw|

对于绝对误差损失,通常没有闭式解。我们可以通过数值优化方法来求解参数

w。比如,常用的次梯度方法可以在此处应用。

  1. 随机梯度下降算法

我们可以设计一种随机梯度下降算法来求解上述优化问题。算法步骤如下:

  1. 初始化:随机初始化参数
    w
  2. 迭代:
    • 随机选择一个样本
      i
    • 计算梯度(次梯度):
      gi={xiifyixiTw>0xiifyixiTw<00ifyixiTw=0
    • 更新参数:
      wwηgi

      其中

      η是学习率。

  3. 重复:直到收敛或达到最大迭代次数。

可能出错的地方

  • 震荡与收敛问题:在驻点附近,尤其是损失函数的局部最小值,梯度可能非常小,导致更新幅度减小,学习率不当可能导致震荡或收敛速度慢。
  • 学习率选择:如果学习率选择过大,可能会导致参数更新过度,从而导致发散;如果选择过小,可能会导致收敛速度太慢。

解决方案

  • 自适应学习率:可以使用自适应学习率算法,如 Adam 或 RMSprop,这些方法会自动调整学习率。
  • 动量法:通过引入动量,可以帮助平滑更新过程,减少震荡。
  • 提前停止:监控验证集的性能,当性能不再提升时停止训练。

通过这些方法,可以提高随机梯度下降算法在优化问题中的稳定性和效率。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注