机器学习与深度学习详解
1. 机器学习(Machine Learning,ML)与深度学习(Deep Learning,DL)概述
1.1 机器学习(ML)
机器学习是人工智能的一个子领域,致力于开发算法和技术,使计算机能够自动从数据中学习和推断。与传统编程不同,机器学习依赖于从样本数据(即训练数据)中获取模式和规律,而不是通过硬编码规则。通过学习过程,模型可以预测或决策,无需明确编程指令。
机器学习的三种主要类型:
- 监督学习:模型在有标注的训练数据上进行训练,学习输入与输出之间的映射关系。应用场景包括图像分类、语音识别等。
- 无监督学习:模型在无标注的数据上进行训练,主要任务是发现数据的结构或模式,如聚类、降维等。典型应用包括市场分割、特征提取等。
- 半监督学习:结合了少量有标注数据和大量无标注数据进行训练,通常用于标注数据昂贵或难以获得的场景。
- 强化学习:模型通过与环境交互学习,从反馈中调整策略以最大化累积奖励。典型应用包括机器人控制、游戏AI等。
1.2 深度学习(DL)
深度学习是机器学习的一个子领域,灵感来自于人类大脑的结构,特别是神经网络的概念。深度学习使用多层神经网络,每一层提取输入数据中的不同特征,逐层抽象形成高层次的表示。
深度学习的关键要素:
- 神经网络:由多个神经元(计算单元)组成,分为输入层、隐藏层和输出层。隐藏层的数量和每层的神经元数量可以不同,通常称为网络的“深度”。
- 激活函数:非线性函数,将神经元的输入映射到输出。常见的激活函数包括ReLU、Sigmoid、Tanh等。
- 卷积神经网络(CNN):专门用于处理图像数据的深度学习模型,通过卷积操作提取图像的局部特征,广泛应用于计算机视觉领域。
- 递归神经网络(RNN):用于处理序列数据的模型,能够记忆并利用时间序列信息,常用于自然语言处理(NLP)等领域。
2. 回归与分类任务
2.1 回归任务
回归任务是预测一个连续值的任务。模型的目标是学习输入变量和目标值之间的映射关系,使得模型能够准确预测新数据的输出值。回归问题的输出是一个实数。
例子:
- 房价预测:根据房屋的特征(如面积、房间数、位置等)预测房屋的价格。
- 股票价格预测:根据历史股票数据(如开盘价、收盘价、成交量等)预测未来某个时刻的股票价格。
常见回归算法:
- 线性回归:模型假设输入特征与目标值之间存在线性关系。
- 多项式回归:扩展线性回归,允许输入特征的多项式组合。
- 支持向量回归(SVR):利用支持向量机原理处理回归问题。
2.2 分类任务
分类任务是将输入数据分配到一个或多个离散类别中的任务。模型的目标是学习输入数据和类别标签之间的映射关系,从而对新数据进行分类。
例子:
- 邮件分类:根据邮件内容,将邮件分类为“垃圾邮件”或“正常邮件”。
- 图像识别:根据图像内容,将图像分类为不同类别,如“猫”、“狗”、“鸟”等。
常见分类算法:
- 逻辑回归:尽管名字中带有“回归”,但实际上用于二分类问题,模型输出属于某类别的概率。
- K近邻(KNN):根据数据点在特征空间中与其他点的距离进行分类。
- 决策树:通过分割特征空间,构建决策路径来进行分类。
3. 损失函数的设置与选择
损失函数(Loss Function)是机器学习模型中用来度量预测值与真实值之间差异的函数。损失函数的选择对模型的性能有重要影响,因为它直接决定了模型的优化方向。
3.1 回归问题中的损失函数
1. 均方误差(MSE):
M
S
E
=
1
n
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
MSE=n1i=1∑n(yi−y^i)2
- 使用场景:MSE通常用于回归问题,特别是当需要惩罚较大误差时。
- 解释:MSE是预测值与真实值之间差值的平方平均值。平方惩罚意味着较大的误差将对总损失产生更大的影响。
例子:在房价预测中,MSE可以度量预测房价与实际房价之间的差异。
2. 平均绝对误差(MAE):
M
A
E
=
1
n
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
MAE=n1i=1∑n∣yi−y^i∣
- 使用场景:MAE适用于希望对所有误差进行同等对待的回归问题。
- 解释:MAE是预测值与真实值之间差异的绝对值的平均。相比MSE,它对异常值的敏感性较低。
例子:在预测出租车的等待时间时,使用MAE可以避免异常数据(如极端交通拥堵)对损失值的过度影响。
3. Huber损失:
L
δ
(
y
,
y
^
)
=
{
1
2
(
y
−
y
^
)
2
if
∣
y
−
y
^
∣
≤
δ
,
δ
⋅
∣
y
−
y
^
∣
−
1
2
δ
2
otherwise
.
L_\delta(y, \hat{y}) = \begin{cases} \frac{1}{2} (y - \hat{y})^2 & \text{if } |y - \hat{y}| \leq \delta, \\ \delta \cdot |y - \hat{y}| - \frac{1}{2} \delta^2 & \text{otherwise}. \end{cases}
Lδ(y,y^)={21(y−y^)2δ⋅∣y−y^∣−21δ2if ∣y−y^∣≤δ,otherwise.
- 使用场景:Huber损失适用于同时关心均方误差和绝对误差特性的回归问题。
- 解释:Huber损失在误差较小时与MSE一致,而在误差较大时与MAE一致,因此它对异常值的鲁棒性更高。
例子:在自动驾驶系统中预测汽车的速度时,Huber损失可以平衡正常数据和异常数据对模型训练的影响。
3.2 分类问题中的损失函数
3.2 分类问题中的损失函数
1. 交叉熵损失(Cross-Entropy Loss):
-
对于有k个标签类别,n个样本数量的分类任务
L = − 1 n ∑ i = 1 n ∑ k = 1 K y i k log ( y ^ i k ) L = -\frac{1}{n} \sum_{i=1}^{n} \sum_{k=1}^{K} y_{ik} \log(\hat{y}_{ik}) L=−n1i=1∑nk=1∑Kyiklog(y^ik) -
使用场景:交叉熵损失是分类任务中最常用的损失函数,适用于二分类和多分类任务。
-
解释:交叉熵度量的是模型预测的概率分布与真实分布之间的差异。对于分类问题,它计算了真实标签和预测概率之间的对数损失。在训练过程中,通过最小化交叉熵损失,可以使模型的预测概率接近真实标签的概率,从而提高分类准确性。
-
例子:在垃圾邮件分类任务中,交叉熵损失可以度量模型对“垃圾邮件”与“正常邮件”的预测概率与实际情况的差异。较高的预测概率和较低的实际标签差异会导致较低的损失,从而促使模型改进其预测性能。
4. 模型参数的更新与梯度下降法
模型参数的更新是机器学习模型训练的核心步骤。通过优化算法,如梯度下降法,模型参数在每一次迭代中更新,以最小化损失函数。
4.1 梯度下降法(Gradient Descent)
梯度下降法是一种用于优化损失函数的算法,通过计算损失函数相对于参数的梯度,模型沿着梯度下降的方向更新参数,直到找到最小损失点。梯度下降法有多种变体,常见的包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent, SGD)和小批量梯度下降(Mini-Batch Gradient Descent)。
4.2 梯度下降法的具体使用与原理
1. 损失函数的梯度
在梯度下降中,首先需要计算损失函数对模型参数的梯度。假设损失函数为
L
(
θ
)
L(\theta)
L(θ),其中
θ
\theta
θ 表示模型参数,梯度
∇
θ
L
(
θ
)
\nabla_\theta L(\theta)
∇θL(θ) 表示损失函数相对于每个参数的偏导数。这些偏导数指示了损失函数在参数空间中的变化率。
例子:
考虑线性回归模型
y
^
=
θ
0
+
θ
1
x
\hat{y} = \theta_0 + \theta_1 x
y^=θ0+θ1x,其损失函数为均方误差
L
(
θ
)
=
1
2
n
∑
i
=
1
n
(
y
^
i
−
y
i
)
2
L(\theta) = \frac{1}{2n} \sum_{i=1}^{n} (\hat{y}_i - y_i)^2
L(θ)=2n1∑i=1n(y^i−yi)2。梯度计算如下:
∂
L
(
θ
)
∂
θ
0
=
1
n
∑
i
=
1
n
(
y
^
i
−
y
i
)
\frac{\partial L(\theta)}{\partial \theta_0} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i)
∂θ0∂L(θ)=n1i=1∑n(y^i−yi)
∂
L
(
θ
)
∂
θ
1
=
1
n
∑
i
=
1
n
(
y
^
i
−
y
i
)
x
i
\frac{\partial L(\theta)}{\partial \theta_1} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}_i - y_i) x_i
∂θ1∂L(θ)=n1i=1∑n(y^i−yi)xi
这些梯度值将用于更新参数
θ
0
\theta_0
θ0 和
θ
1
\theta_1
θ1。
2. 参数更新公式
梯度下降的核心在于参数更新。对于每个参数
θ
j
\theta_j
θj,更新公式为:
θ
j
+
1
=
θ
j
−
η
⋅
∂
L
(
θ
)
∂
θ
j
\theta_{j+1}= \theta_j - \eta \cdot \frac{\partial L(\theta)}{\partial \theta_j}
θj+1=θj−η⋅∂θj∂L(θ)
其中,
η
\eta
η 为学习率(Learning Rate),它控制了每次更新的步伐大小。学习率过大会导致不稳定的训练过程,而学习率过小则会导致收敛速度变慢。