练习
Q1
- 假设我们有一些数据
。我们的目标是找到一个常数b,使得最小化。
- 找到最优值b的解析解。
- 这个问题及其解与正态分布有什么关系?
1.找到最优值b的解析解。
展开平方和
其中 N 是数据点的数量。
对 b 求导
设置导数为零
解出 b
结论
最优值 b 的解析解是:
2.这个问题及其解与正态分布有什么关系?
- 最小二乘法与正态分布
在统计学中,最小化平方误差
其实可以看作是寻找一个参数 b 使得数据
在该参数下的分布最为集中。若我们假设数据
服从正态分布
,则最大似然估计(MLE)和最小二乘法会得到相同的结果。
- 正态分布的特性
正态分布的一个重要特性是其均值(
)和最优估计(
)是相同的。即,如果
服从
,那么对
的极大似然估计是样本均值:
- 统计推断
在许多统计推断中,正态分布被广泛使用,因为根据中心极限定理,许多独立随机变量的和趋向于正态分布。这使得在大样本情况下,样本均值的分布可以近似为正态分布。
总结
在最小化平方误差的过程中,我们实际上是在寻找使得假设数据服从正态分布的最优参数 b。因此,平方误差的最小化与正态分布的均值估计密切相关。
Q2
推导出使用平方误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置b(我们可以通过向
添加所有值为1的一列来做到这一点)。
1.用矩阵和向量表示法写出优化问题(将所有数据视为单个矩阵,将所有目标值视为单个向量)。
2.计算损失对
的梯度。
3.通过将梯度设为0、求解矩阵方程来找到解析解。
4.什么时候可能比使用随机梯度下降更好?这种方法何时会失效?
- 用矩阵和向量表示法写出优化问题
假设我们有 N 个样本,每个样本有 M 个特征。我们可以用矩阵和向量来表示这个问题:
- 输入矩阵:
,其中每一行是一个样本的特征向量。 - 目标向量:
,其中每个元素是对应样本的目标值。 - 权重向量:
。
优化问题可以表示为最小化以下损失函数(均方误差):
这可以用矩阵表示为:
- 计算损失对w 的梯度
我们需要计算损失函数的梯度:
根据链式法则和矩阵微分的规则,得到:
- 将梯度设为0,求解矩阵方程
设置梯度为零以找到最优解:
简化后得到:
重排得到:
这个方程可以通过求逆来得到解析解(假设
可逆):
- 何时可能比使用随机梯度下降更好?这种方法何时会失效?
优势
- 小规模数据:当数据集较小且可以完全加载到内存时,使用解析解计算效率高,且可以得到精确解。
- 可解释性:解析解提供了明确的数学表达式,便于理解模型的行为。
缺点
- 大规模数据:当数据集非常大时,计算
的逆可能会非常耗时并且占用大量内存。 - 特征共线性:如果特征高度相关(多重共线性),
可能会接近奇异,导致求逆不稳定。 - 在线学习:在动态数据环境中,使用随机梯度下降(SGD)可以逐步更新模型,而不是重新计算整个数据集。
总结
解析解在小规模且特征间没有共线性时优于随机梯度下降,而在大规模数据和动态学习场景中,SGD更为合适。
Q3
假定控制附加噪声ϵ的噪声模型是指数分布。也就是说,
- 写出模型
下数据的负对数似然。 - 请试着写出解析解。
- 提出一种随机梯度下降算法来解决这个问题。哪里可能出错?(提示:当我们不断更新参数时,在驻点附近会发生什么情况)请尝试解决这个问题。
1.写出模型的负对数似然
假设我们有输入数据
和目标数据
(即
)。根据题意,噪声
的分布为指数分布:
模型输出为
,其中
是模型的预测值。
因此,给定
的情况下,负对数似然可以写为:
将噪声的分布代入:
简化后得到:
忽略常数项
,我们可以简化为:
- 解析解
负对数似然的形式表示我们需要最小化绝对误差的和。对于线性模型
,我们需要最小化以下目标函数:
对于绝对误差损失,通常没有闭式解。我们可以通过数值优化方法来求解参数
。比如,常用的次梯度方法可以在此处应用。
- 随机梯度下降算法
我们可以设计一种随机梯度下降算法来求解上述优化问题。算法步骤如下:
- 初始化:随机初始化参数
。 - 迭代:
- 随机选择一个样本
。 - 计算梯度(次梯度):
- 更新参数:
其中
是学习率。
- 随机选择一个样本
- 重复:直到收敛或达到最大迭代次数。
可能出错的地方
- 震荡与收敛问题:在驻点附近,尤其是损失函数的局部最小值,梯度可能非常小,导致更新幅度减小,学习率不当可能导致震荡或收敛速度慢。
- 学习率选择:如果学习率选择过大,可能会导致参数更新过度,从而导致发散;如果选择过小,可能会导致收敛速度太慢。
解决方案
- 自适应学习率:可以使用自适应学习率算法,如 Adam 或 RMSprop,这些方法会自动调整学习率。
- 动量法:通过引入动量,可以帮助平滑更新过程,减少震荡。
- 提前停止:监控验证集的性能,当性能不再提升时停止训练。
通过这些方法,可以提高随机梯度下降算法在优化问题中的稳定性和效率。