旧帖灌水-机器学习与深度学习笔记
旧帖灌水-机器学习与深度学习笔记
jessiexichen1. 定义&基本概念
- 机器学习(ML):赋予机器学习的能力,通过寻找合适函数处理数据,解决不同类型的问题。
- 深度学习(DL):作为机器学习的一个子领域,使用多层神经网络来学习数据的复杂表示。
2. 机器学习任务分类
- 回归(Regression):预测一个数值,例如预测PM2.5的数值。
- 分类(Classification):从预设的类别中选择一个作为输出,例如垃圾邮件检测。
- 结构化学习(Structured Learning):生成具有结构的输出,如绘画或写作。
3. 机器学习与模型构建
- 模型定义:创建一个带有未知参数的函数,例如线性模型 ( y = b + wx_1 )。
- 损失函数:衡量预测值与实际值之间的差距,常用的损失函数包括 MAE 和 MSE。
- 优化方法:通过梯度下降等优化算法最小化损失函数,更新参数直到找到最优解。
3.1 梯度下降算法
梯度下降是常见的优化方法,通过逐步调整模型参数 ( w ) 和 ( b ) 来最小化损失函数。
- 更新规则为:
$$
w_{\text{new}} = w - \eta \frac{\partial L}{\partial w}
$$
$$
b_{\text{new}} = b - \eta \frac{\partial L}{\partial b}
$$
其中 ( \eta ) 是学习率。
4. 模型优化与评估
- 优化问题:梯度下降可能会陷入局部最小值,无法找到全局最优解,导致模型性能受限。
- 超参数调整:通过调节学习率、最大迭代次数等超参数来提高模型性能。
- 模型评估:使用训练集和测试集进行评估,避免模型在训练集上表现良好但在测试集上表现差的情况。
5. 线性模型及其局限性
- 线性模型:线性模型表达式为 ( y = b + wx ),但它无法处理复杂的非线性关系,可能出现模型偏差。
- 分段线性曲线:通过组合多个线性函数可以逼近复杂的曲线。增加分段的数量可以逼近任何连续曲线。
- 激活函数:例如 ReLU(修正线性单元),用于在神经网络中引入非线性,公式为:
[
\text{ReLU}(x) = \max(0, x)
]
6. 神经网络与深度学习
- 神经网络:由多个神经元组成的复杂模型结构。深度学习通过增加网络的层数(深度),来提高模型的表达能力。
- 模型堆叠与复杂度:通过堆叠多个激活函数和神经元层,可以构建更复杂的模型,但这可能导致过拟合问题,即在训练数据上表现良好,而在测试数据上表现差。
7. 模型偏差与过拟合
- 模型偏差:模型过于简单,无法捕捉数据的复杂关系,即使找到最优参数,损失仍然较高。
- 过拟合:模型在训练集上表现良好,但在测试集上表现差。通常原因是模型过于复杂,学习了训练数据中的噪声。
- 解决方法:
- 增加训练数据。
- 进行数据增强,如图像翻转、裁剪等。
- 限制模型复杂度,如减少神经元数量或层数。
- 使用正则化技术(L1、L2 正则化)或丢弃法(dropout)。
- 解决方法:
8. 模型评估与交叉验证
- 交叉验证:使用 k 折交叉验证评估模型的泛化能力。
- 将训练集分为 k 个子集,每次使用 k-1 个子集进行训练,剩下的一个作为验证集,重复 k 次,以减少模型选择的偏差。
- 模型评估:在训练数据上评估误差,并对未知数据进行预测。
9. 数据分布不匹配
- 定义:训练集和测试集的数据分布不一致,可能导致模型在训练集上表现良好,但在测试集上表现不佳。
- 解决方法:
- 理解数据的来源和分布,确保训练集与测试集的一致性。
- 如果可能,使用来自同一分布的数据进行训练和测试。
- 解决方法: