本人是AI小白,以下内容来自Jay Alammar的A Visual and Interactive Guide to the Basics of Neural Networks 仅对文章内的名词进行了解释补充。
1.基础知识
1.1 回归模型
回归模型是一种用于预测数值输出的统计模型。它主要用于建立输入特征与连续目标变量之间的关系。与分类模型不同,回归模型的输出是连续的数值,而不是离散的类别。
简而言之,回归模型旨在找到输入特征与输出之间的关联,并使用这种关联来进行预测。这些模型可以采用不同的算法和方法,其中线性回归是最简单和常见的一种形式。线性回归假设输入特征与输出之间存在线性关系,然后通过拟合一条直线来进行预测。
除了线性回归,还有许多其他类型的回归模型,如多项式回归、岭回归、LASSO 回归等,它们适用于不同类型的数据和问题。这些模型在数据分析、机器学习和统计建模等领域都得到广泛应用。
1.2 损失函数
损失函数(Loss Function)是用于衡量模型预测值与实际值之间差异的函数。在机器学习和深度学习中,损失函数是训练模型时的关键组成部分。其目标是定义一个衡量模型性能的指标,使得在训练过程中最小化这个指标,从而使模型能够更好地进行预测。
损失函数的选择取决于所面对的问题类型。以下是一些常见的损失函数:
- 均方误差(Mean Squared Error,MSE): 适用于回归问题,衡量预测值与实际值之间的平方差的平均值。
- 交叉熵损失(Cross-Entropy Loss): 适用于分类问题,特别是在神经网络中。包括二元交叉熵(Binary Cross-Entropy)和多类别交叉熵(Categorical Cross-Entropy)。
- Huber Loss: 类似于均方误差,但对异常值更具鲁棒性。
- Hinge Loss: 通常用于支持向量机(SVM)等分类算法,适用于二分类问题。
- 绝对损失(L1 Loss): 衡量预测值与实际值之间的绝对差异的平均值,对离群值更具鲁棒性。
选择合适的损失函数取决于问题的性质和所使用的模型。在训练过程中,优化算法会尝试最小化损失函数,使得模型能够更好地拟合训练数据。
1.2.1 均方误差
均方误差(Mean Squared Error,简称 MSE)是用于衡量预测值与实际值之间差异的一种常见的性能度量指标。它在回归问题中特别常用。
MSE 的计算方法是对预测值与实际值的差异进行平方,然后取这些平方差的平均值。公式如下:
$MSE = \frac{1}{n} \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2$
其中:
- ( n ) 是样本数量。
- ( $Y_i$ ) 是实际观测值。
- ( $\hat{Y}_i$ ) 是相应的预测值。
MSE 的值越小,表示模型的预测效果越好,因为它衡量了模型预测值与真实值之间的平均平方误差。然而,MSE 的值受到量纲影响,通常需要与实际问题的背景一起考虑。
在机器学习中,优化算法通常会试图最小化 MSE,以改进模型的性能。
1.3 权重和偏置
在机器学习和神经网络中,权重(Weights)和偏置(Bias)是模型中的两个关键参数,它们对于模型的学习和预测起着重要的作用。
- 权重(Weights): 权重是连接两个神经元之间的参数,用于调整输入特征的影响力。在神经网络中,每个连接都有一个权重,它表示两个神经元之间连接的强度。训练模型的目标是调整这些权重,使得模型能够更好地拟合训练数据,从而提高对新数据的泛化能力。
- 偏置(Bias): 偏置是神经网络中每个神经元的一个附加参数,它独立于输入特征。偏置的作用是在没有输入时引入一个固定的偏移,从而使网络更灵活地适应不同的模式。偏置的调整可以帮助模型更好地拟合数据。
在神经网络的一层中,每个神经元都有自己的权重和一个共享的偏置。模型通过训练数据来学习调整这些权重和偏置,以最小化损失函数,从而提高模型的性能。
数学上,对于一个简单的神经网络的线性变换,可以表示为:
$\text{输出} = \text{权重} \times \text{输入} + \text{偏置}$
这一变换后通常还会通过一个激活函数,如ReLU(Rectified Linear Unit)来引入非线性。整个过程使得神经网络能够学习更复杂的模式和特征。
1.4 梯度下降
梯度下降是一种用于最小化损失函数的优化算法,特别是在机器学习和深度学习中广泛应用。其核心思想是通过迭代调整模型参数,使得损失函数的值逐渐减小,达到找到最优参数的目的。
以下是梯度下降的基本步骤:
- 初始化参数: 随机或使用一些启发式方法初始化模型的参数,如权重和偏置。
- 计算梯度: 计算损失函数关于模型参数的梯度(导数)。梯度表示了损失函数在参数空间中的变化方向,指向最快的增长方向。
- 更新参数: 沿着梯度的反方向调整模型参数,从而减小损失函数的值。这一步通过学习率(learning rate)来控制每次参数更新的步长。
- 重复迭代: 重复步骤2和步骤3,直到满足停止条件,如达到预定的迭代次数或损失函数变化不大。
梯度下降有不同的变种,其中包括批量梯度下降(Batch Gradient Descent)、随机梯度下降(Stochastic Gradient Descent)和小批量梯度下降(Mini-batch Gradient Descent)。这些变种主要区别在于每次迭代更新时使用的样本数量。
梯度下降的成功依赖于选择合适的学习率和适当的停止条件,以及对损失函数的充分理解。这一优化算法在训练神经网络等复杂模型时被广泛使用。
1.5 激活函数
激活函数是神经网络中的一种非线性映射,它将输入信号转换为输出信号。激活函数的引入使得神经网络能够学习和表示更为复杂的模式和特征,从而提高网络的表达能力。以下是一些常见的激活函数:
- Sigmoid 函数: $\sigma(x) = \frac{1}{1 + e^{-x}}$,将输入映射到0到1之间,常用于二分类问题。但在深度神经网络中,它可能导致梯度消失问题,因此在隐藏层中使用较少。
- Hyperbolic Tangent 函数(tanh): $\tanh(x) = \frac{e^{2x} - 1}{e^{2x} + 1}$,类似于 Sigmoid 函数,将输入映射到-1到1之间。它在一些情况下相对于 Sigmoid 函数更有优势,但同样存在梯度消失问题。
- Rectified Linear Unit 函数(ReLU): $ReLU(x) = \max(0, x)$,在输入大于零时输出输入值,否则输出零。ReLU 是目前最常用的激活函数之一,因为它简单、计算效率高,且在许多情况下表现良好。
- Leaky ReLU 函数: $LeakyReLU(x) = \max(\alpha x, x)$,其中 ($\alpha$) 是小于1的小常数,解决了 ReLU 函数中负数部分导致的神经元死亡问题。
- Softmax 函数: 用于多类别分类问题,将一组数值转换为表示概率分布的形式。
- Swish 函数: $Swish(x) = x \cdot \sigma(x)$,其中 ($\sigma(x)$) 是 Sigmoid 函数。Swish 是一种类似于 ReLU 的激活函数,具有更平滑的曲线,有时在某些情况下表现较好。
选择适当的激活函数取决于问题的性质和神经网络的结构。ReLU 及其变种是目前常用的选择,但在某些场景下其他激活函数也可能更合适。
1.5.1 Softmax函数
Softmax 函数是一种常用的激活函数,特别适用于多类别分类问题。它将一组数值转换为表示概率分布的形式,使得每个类别的概率都在0到1之间,并且所有类别的概率之和为1。
Softmax 函数的定义如下,对于给定的输入向量 ( z ),Softmax 函数的输出 ( $\sigma(z)$ ) 的每个元素 ( $\sigma(z)_i$) 计算如下:
$\sigma(z)_i = \frac{e{zi}}{\sum{j=1}{K} e^{z_j}}$
其中:
- ($z_i$ ) 是输入向量的第 ( i ) 个元素。
- ( K ) 是类别的总数。
Softmax 函数的核心是将输入进行指数化(exponentiation),然后进行归一化,确保输出的每个元素都在0到1之间,并且它们的和为1。这使得输出可以被解释为类别的概率分布。
Softmax 函数在神经网络中通常用于输出层,特别是多类别分类问题。在训练过程中,它帮助模型产生对每个类别的相对置信度,便于计算损失并进行梯度下降优化。在预测时,Softmax 函数的输出中概率最高的类别被视为模型的最终预测。