本文是关于李宏毅苹果书“第1章 机器学习基础”学习内容的记录。
1、术语解释
术语 | 解释 |
---|---|
机器学习(Machine Learning, ML) | 机器学习是一种人工智能(AI)技术,它使计算机能够从数据中学习并做出决策或预测,而无需明确编程。常见的机器学习任务包括分类、回归和聚类。 |
深度学习(Deep Learning, DL) | 深度学习是机器学习的一个子领域,利用多层神经网络进行数据处理和分析。它在图像识别、自然语言处理等领域表现出色,可以自动从数据中提取特征,无需手动设计特征。 |
回归(regression) | 回归是一种监督学习方法,用于预测连续数值变量。例如,预测房价、股票价格等。线性回归是最简单的回归模型之一。 |
分类(classification) | 分类是另一种监督学习方法,用于将数据分类到不同的类别中。例如,将邮件分类为“垃圾邮件”和“非垃圾邮件”。 |
参数(parameter) | 在机器学习模型中,参数是模型从数据中学习并用来做预测的数值。例如,在线性回归中,斜率和截距是参数。 |
模型(model) | 模型是机器学习系统的核心部分,它是一个数学表示,能够基于输入数据生成输出。模型从训练数据中学习,并用这些知识进行预测或分类。 |
权重(weight) | 权重是神经网络中连接不同神经元的数值,它们决定了输入特征对最终预测的影响大小。通过调整权重,模型可以优化其性能。 |
偏置(bias) | 偏置是模型中的另一个参数,用来调整模型的输出,使得模型能够更好地拟合数据。在神经网络中,偏置项用于控制神经元的激活。 |
平均绝对误差(Mean Absolute Error, MAE) | MAE是一种评估回归模型的指标,表示预测值与真实值之间差异的绝对值的平均值。它提供了模型预测误差的平均幅度。 |
均方误差(Mean Squared Error, MSE) | MSE是另一种评估回归模型的指标,它是预测误差的平方平均值。MSE对大的误差更加敏感,因此它可以惩罚大误差。 |
交叉熵(cross entropy) | 交叉熵是一种常用于分类问题的损失函数,尤其是在二分类和多分类问题中。它衡量了预测的概率分布与实际分布之间的差异。 |
误差表面(error surface) | 误差表面是模型参数与其误差之间的图形表示。通过查看误差表面,可以理解参数如何影响模型的误差,并帮助优化模型。 |
梯度下降(gradient descent) | 梯度下降是一种优化算法,用于通过逐步调整模型参数来最小化损失函数。它通过计算损失函数相对于参数的梯度,并沿着梯度的负方向移动,以减少误差。 |
学习率(learning rate) | 学习率是梯度下降中的一个超参数,决定了每次更新模型参数时的步长。学习率太大可能会导致训练过程不稳定,而学习率太小则会使训练过程非常缓慢。 |
超参数(hyperparameter) | 超参数是在训练模型之前设定的参数,它们不会在训练过程中更新。常见的超参数包括学习率、正则化参数、神经网络的层数等。 |
全局最小值(global minima) | 全局最小值是指在整个误差表面上最低的点,即损失函数的最小值。在这个点上,模型的误差最小。 |
局部最小值(local minima) | 局部最小值是指在误差表面上某个区域的最低点,但它不一定是整个表面的最低点。梯度下降算法可能会陷入局部最小值,从而阻碍找到全局最小值。 |
补充:函数和函数模型有什么区别?函数是某个空间中元素到某个空间中元素的映射关系。函数模型通过根据函数的问题背景对问题进行建模,求解函数模型可以得到近似函数。可以认为函数模型是一个函数近似器。
2、公式理解
第1章的公式较为简单,主要有基础的线性函数表达式、两种误差的表达式以及梯度下降法中参数的更新过程。
- 线性函数
y = b + ω x \bold{y} = b + \bold{\omega} \bold{x} y=b+ωx
此式在机器学习入门中常见,其中 x \bold{x} x表示输入, y \bold{y} y表示输出, ω \bold{\omega} ω表示输入的权重参数, b b b表示偏置参数。此式在确定参数 ω \bold{\omega} ω和 b b b后,可以根据 x \bold{x} x得到 y \bold{y} y。
- 平均绝对误差
ϵ = ∣ y ^ − y ∣ \epsilon = | \hat{y} - y | ϵ=∣y^−y∣
其中, y ^ \hat{y} y^表示模型输出的值,即估计值, y y y表示实际值。平均绝对误差表示估计值与实际值之间的差距的绝对值,必为非负值。
- 均方误差
ϵ = ( y ^ − y ) 2 \epsilon = (\hat{y} - y)^2 ϵ=(y^−y)2
均方误差表示估计值与实际值之间的差距的平方,必为非负值。与平均绝对误差相比,均方误差对误差的放大效果更明显。
- 梯度下降法中参数的更新过程
假设
ω
\omega
ω和
b
b
b是损失函数
L
L
L的表达式中的参数,若使用梯度下降法求解使
L
L
L的值最小的参数,参数的更新过程为:
ω
t
←
ω
t
−
1
+
η
∂
L
∂
ω
∣
ω
=
ω
t
−
1
,
b
=
b
t
−
1
b
t
←
b
t
−
1
+
η
∂
L
∂
ω
∣
ω
=
ω
t
−
1
,
b
=
b
t
−
1
\begin{aligned} \omega^t & \leftarrow \omega^{t-1} + \eta \frac{\partial L}{\partial \omega} \bigg| _{\omega = \omega^{t-1}, b = b^{t-1}} \\ b^t & \leftarrow b^{t-1} + \eta \frac{\partial L}{\partial \omega} \bigg| _{\omega = \omega^{t-1}, b = b^{t-1}} \end{aligned}
ωtbt←ωt−1+η∂ω∂L
ω=ωt−1,b=bt−1←bt−1+η∂ω∂L
ω=ωt−1,b=bt−1
其中,
η
\eta
η表示学习率,是参数更新快慢的影响因子之一。此式表示在旧参数值的基础上使用学习率与对应参数的偏导值的乘积进行更新。
3、机器学习找函数的3个步骤
-
定义带有未知参数的函数 f f f
在深度学习中,函数 f f f通常使用各种深度学习网络或模型表示。
-
定义损失函数 L L L
损失函数的输入:函数 f f f的参数
损失函数的输出:使用函数 f f f得到的估计值与真实值的差距的衡量
-
最优化损失函数
在机器学习中,损失函数最优化的过程通常使用梯度下降法完成。损失函数最优时,输入损失函数的参数为函数 f f f的最佳参数。
4、梯度下降的3个步骤
-
随机初始化参数,定义学习率的大小
-
计算损失函数在每个参数值上的(偏)微分
当损失函数只有一个参数时,此步骤相当于求解曲线在该参数值上的斜率。
-
使用学习率与(偏)微分值更新参数
更新式子见“2、公式理解”。
5、梯度下降法面临的难题
如下图所示,使用梯度下降法可能只能找到局部最小值、无法找到全局最小值。
梯度下降法如何避免只能找到局部最小值?
-
使用不同的初始点:通过使用不同的随机初始化点,多次运行梯度下降算法,可以增加找到全局最小值的机会。
-
调节学习率:动态调整学习率,如使用自适应学习率方法(如Adam、RMSprop等),可以帮助算法在接近最小值时更好地探索周围的区域,避免陷入局部最小值。
-
使用动量:动量是一种通过保留上一更新方向的部分信息来加速梯度下降的技术。它可以帮助模型跳出一些浅的局部最小值。
-
模拟退火:这种技术将梯度下降与随机扰动相结合,以探索全局解空间。随着算法的进行,扰动幅度逐渐减小,从而集中搜索最优解。
-
批量梯度下降:小批量随机梯度下降(Mini-batch SGD)中的随机性可以帮助算法跳出局部最小值。由于每次只使用部分数据进行更新,它有一定的噪声,这种噪声有助于避免陷入局部最小值。
-
修改函数形式:设计函数为凸函数,避免函数出现局部最小值。
如何求解全局最小值并非梯度下降法面临的真正难题。梯度下降法面临的真正难题是什么?
- 鞍点(Saddle Points):在某些维度上是最小值,而在其他维度上是最大值。
- 梯度消失和梯度爆炸(Vanishing and Exploding Gradients): 在深层神经网络中,梯度可能在向后传播的过程中逐渐消失(变得非常小)或者爆炸(变得非常大),这会导致训练过程非常困难。归一化技术(如Batch Normalization)可以缓解梯度消失或梯度爆炸,长短期记忆网络(LSTM)则通过特殊的网络结构设计缓解这些问题。