【DL】深层神经网络
多层感知机
隐藏层
多层感知机(Multilayer Perceptron, MLP)是一种前馈神经网络,它由输入层、隐藏层和输出层组成。输入层接收输入数据,隐藏层负责处理数据,输出层输出处理后的结果。
激活函数
激活函数是神经网络中非常重要的组成部分,它起到了非线性转换的作用。常见的激活函数有 sigmoid 函数、tanh 函数、ReLU 函数和 softmax 函数。
1. Sigmoid 函数
Sigmoid 函数是一种 S 形曲线,其表达式为:
Sigmoid 函数的优点是输出值域范围为(0,1),适合二分类问题。缺点是当输入较大时,梯度较小,容易导致梯度消失问题。
2. Tanh 函数
Tanh 函数是一种双曲正切函数,其表达式为:
Tanh 函数的优点是输出值域范围为 (-1,1),适合二分类问题。缺点是当输入较大时,梯度较小,容易导致梯度消失问题。
3. ReLU 函数
ReLU 函数(Rectified Linear Unit)是一种线性函数,其表达式为:
ReLU 函数的优点是计算简单,速度快。缺点是当输入小于0时,输出为0,容易导致梯度消失问题。
4. Softmax 函数
Softmax 函数是一种常用的多分类激活函数,其表达式为:
其中,n 是类别数,xi 是输入数据的第 i 个元素,fi(x) 是输出数据的第 i 个元素。
Softmax 函数的作用是将输入数据转化为概率分布,使得每一类的概率和为1。它的优点是适合多分类问题,缺点是计算量较大。
Sigmoid和Tanh 函数适用于二分类问题,ReLU 函数适用于大多数任务,Softmax函数适用于多分类问题。实战中,还有很多各种各样的变体。
前向传播和反向传播
前向传播
前向传播(Forward Propagation)是指在一个神经网络中,从输入层到输出层的信息传递过程。具体来说就是,将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。
通常,在神经网络的训练过程中,会使用一个损失函数来衡量预测结果和真实结果的差距。比如常用的均方误差(mean squared error, MSE)损失函数。
反向传播
反向传播 (Back Propagation) 本质上指的是计算神经⽹络每一层参数梯度的⽅法。利用链式法则逐层求出损失函数对各个神经元权重和偏置的偏导数,构成损失函数对权值和偏置向量的梯度,作为修改权值的依据。
反向传播的过程中,我们需要从输出层开始,逐层往输入层计算梯度。也就是说从最后一层开始,逐层往第一层计算梯度。
反向传播算法的梯度计算公式是基于链式法则来推导的,是对神经网络各层间关系的数学描述。在进行梯度计算时,我们可以使用反向传播算法的梯度计算公式来逐层计算神经网络中各层的梯度。然后,就可以使用梯度下降法或其他优化算法来更新神经网络的参数,使得神经网络的性能逐步达到最优。
================================链式法则=================================
常见问题及对策
模型复杂度
模型复杂度指的是模型的表示能力,即模型可以拟合的数据的复杂度程度。模型复杂度越高,模型就能表示的数据就越复杂,但同时也会增加过拟合的风险。
过拟合问题
过拟合是指在训练深度学习模型时,模型在训练数据上表现良好,但在测试数据上表现不佳的情况。
过拟合通常是由模型复杂度过高导致的。当模型复杂度增加时,它可以更好地拟合训练数据中的噪声和细节。但是,这同时也会使模型对真实世界中的数据过度拟合,因此表现不佳。
为了避免过拟合,可以使用正则化技术来限制模型的复杂度。常用的正则化技术包括 L1 和 L2 正则化。这些技术通过在损失函数中添加惩罚项来减少模型的复杂度。此外,还可以通过使用更少的训练数据、减小网络层数或神经元数量、使用 dropout 等方法来防止过拟合。
欠拟合问题
欠拟合是指在训练深度学习模型时,模型在训练数据上的表现不佳,即模型没有很好地拟合训练数据。这意味着模型的复杂度过低,无法很好地捕捉数据中的特征。
欠拟合常常是由模型复杂度过低导致的。当模型复杂度过低时,它无法很好地拟合训练数据中的细节和特征。因此,模型在训练数据上的表现不佳。