深度学习笔记(一):深度学习基础

1. 线性回归模型

在深度学习中,最基础的模型之一是线性回归模型。其数学表示如下:

1.1 损失函数

损失函数用于衡量预测结果与真实结果之间的差距。通常,损失函数为训练数据集中所有样本误差的平均。训练过程中,我们希望通过调整模型参数W和D,使得损失函数最小化。

1.2 优化算法

在模型训练中,常用的优化算法之一是小批量随机梯度下降(SGD)。该算法的核心思想是:

  1. 随机初始化模型参数;
  2. 随机选择一个小批量数据(mini-batch)进行训练;
  3. 计算小批量样本的梯度并更新模型参数;
  4. 重复上述过程,直到损失函数收敛。

1.3 模型预测

训练完成后,使用训练得到的模型参数:

进行线性回归预测。这时,模型可以用来估计训练数据集以外的样本。

2. Softmax回归

Softmax回归常用于分类问题,输出的是离散类别的预测。Softmax回归模型的输出层是一个全连接层,其数学表示为:

2.1 交叉熵损失函数

交叉熵损失函数用于评估模型在分类问题上的表现,其数学公式为:

最小化交叉熵损失等价于最大化训练数据集所有标签类别的联合预测概率。

2.2 制作Softmax回归模型

  1. 获取数据并初始化模型参数;
  2. 实现Softmax运算并定义损失函数;
  3. 计算分类准确率,并训练模型;
  4. 训练完成后进行预测。

3. 神经网络与激活函数

3.1 多层感知机(MLP)

多层感知机(MLP)是一种经典的神经网络结构。它由输入层、多个隐藏层和输出层组成。在每一层,神经元之间是全连接的,即每个输入都影响每个输出。尽管增加隐藏层可以增加模型的表达能力,但如果不使用适当的激活函数,增加层数也不会提升模型的非线性表示能力。

3.2 激活函数

全连接层仅执行仿射变换。为了引入非线性变换,通常可以使用激活函数。常见的激活函数包括:

  • ReLU

    它只保留正数部分,对于负数部分返回0。

  • Sigmoid

    其值域在 ( [0, 1] ) 之间,适用于概率预测。

  • Tanh

    其值域在 ( [-1, 1] ) 之间,常用于隐藏层。

3.3 制作多层感知机

  1. 获取数据并初始化参数;
  2. 定义激活函数;
  3. 构建模型并定义损失函数;
  4. 训练模型。

4. 训练误差与泛化误差

  • 训练误差:模型在训练数据集上的误差;
  • 泛化误差:模型在未见过的测试数据集上的误差。

训练误差和泛化误差的区别在于,训练误差可以通过调整模型参数来减少,但泛化误差无法直接通过训练误差估计。我们希望降低泛化误差,而不仅仅是训练误差。一个常见的现象是:随着模型复杂度增加,训练误差可能变得很低,但泛化误差却可能增加,这就是过拟合的表现。

4.4 K折交叉验证

为了更好地评估模型的性能,我们可以使用K折交叉验证。将数据集划分为K个子集,每次使用K-1个子集训练,剩下的1个子集用于验证。这样可以获得一个更加可靠的模型评估结果。

5. 欠拟合与过拟合

  • 欠拟合:模型无法在训练数据上取得足够低的误差,导致训练误差和泛化误差都较高。
  • 过拟合:模型在训练数据集上表现很好,但在测试数据集上表现较差,通常是因为模型复杂度过高。

5.1 应对欠拟合与过拟合

  • 选择合适的模型复杂度:通过调节模型的复杂度来避免欠拟合和过拟合。
  • 正则化:例如L2范数正则化,通过在损失函数中加入惩罚项来限制模型的复杂度,防止过拟合。

5.2 权重衰减

权重衰减(L2正则化)通过添加一个惩罚项,限制模型的参数,避免模型过于复杂,从而应对过拟合问题。

5.3 丢弃法(Dropout)

丢弃法通过以一定概率丢弃神经网络中的隐藏单元来防止过拟合。训练过程中只丢弃部分神经元,保持其输入期望值。

6. 正向传播与反向传播

正向传播

正向传播是指神经网络从输入层到输出层依次计算并存储中间变量(包括输出)。其计算过程包括矩阵乘法、加法以及激活函数的应用。

反向传播

反向传播算法用于计算神经网络参数的梯度。它依据微积分中的链式法则,沿着从输出层到输入层的顺序计算梯度。梯度会用于更新模型参数,从而使损失函数最小化。