深度学习入门- 梯度(Gradient)(二)

目录

一.梯度的基础

1. 过拟合   

2. 损失函数

 2.1 常见的损失函数类型

3. 常用梯度下降方法

4. 梯度消失和梯度爆炸

  4.1 梯度消失

  4.2 梯度爆炸

5.激活函数

一.梯度的基础

1. 过拟合   

      在训练集上学习的过于精确,以至于它记住了训练数据中的噪声和细节,而没有从数据中学习到泛化到新数据的模式,在未见过的数据上的预测表现的不好。

2. 损失函数

      表示神经网络性能的"恶劣"程度的指标,值越小,表示预测值和真实值的差异越小,模型的预测更准确。

 2.1 常见的损失函数类型

(1)均方误差(MSE)

      用于回归任务,计算预测值与实际值之间差的平方的平均值。

(2)交叉熵损失(Cross-Entropy Loss)

      用于分类问题,衡量模型输出的概率分布与真实标签的概率分布之间的差异。

 (3)对比损失(Contrastive Loss)

      用于学习样本对之间的相似性或差异性,常用于度量学习。

 (4)Hinge损失(Hinge Loss)

      Hinge损失用于支持向量机(SVM)等最大间隔分类器,它鼓励模型输出与真实标签之间的间隔最大化。

3. 常用梯度下降方法

(1)随机梯度下降SGD

  • 定义: 在每次迭代中只使用一个训练样本或一个样本批次来计算梯度,并更新模型参数。

  • 优点:效率高,SGD的路径更加随机,有助于跳出局部最小值。

  • 缺点:每次更新的步长可能不一致,导致收敛速度较慢。更新路径可能不稳定。

(2)Batch梯度下降BGD

  • 定义:在每次迭代中只使用一个训练样本或一个样本批次来计算梯度,并更新模型参数。

  • 优点:梯度估计准确,每次更新都基于整个数据集,梯度估计的方差较小,较为准确。

  • 缺点:大规模数据集来说计算成本高,存储大批量数据,内存要求高。

(3)mini-Batch梯度下降 mini-BGD

  • 定义:每次迭代中使用一小批训练样本来计算梯度,并更新模型参数。

  • 优点:与上面两种相比更适中一点。

  • 缺点:需要根据具体问题调整批次大小。

4. 梯度消失和梯度爆炸

  4.1 梯度消失

      在深度神经网络中,梯度在反向传播过程中随着层数的增加而迅速减小,以至于在网络的较低层,梯度几乎为零或接近于零。这导致网络的深层权重更新非常缓慢,甚至完全停止更新。影响训练效果。

(1)常见表现

      训练过程中损失函数几乎不改变了。

(2)可能原因

      激活函数不合适,层数太多。

(3)解决方案

  • 使用ReLU激活函数:该激活函数在正区间内梯度恒定为1,可以减少梯度消失的问题。

  • 权重和偏置的初始化:通过跳过一层或多层的连接,直接传递梯度,从而缓解梯度消失问题。

  • 使用残差连接:通过跳过一层或多层的连接,直接传递梯度,从而缓解梯度消失问题。

  • 梯度裁剪:对梯度的大小进行限制,可以防止梯度在反向传播过程中变得过小。

  • 使用批量归一化:可以减少内部协变量偏移,有助于缓解梯度消失问题。

  4.2 梯度爆炸

      在深度神经网络中,梯度在反向传播过程中随着层数的增加而迅速增大,导致梯度的数值变得非常大,以至于权重更新过大,模型无法稳定训练。

(1)常见表现

      模型不稳定,更新过程中损失变化明显。 训练中,模型损失出现naf,NaN。

(2)可能原因

      学习率设置的过大,损失函数,脏数据(需要进行数据清洗)。

(3)解决方案

  • 权重和偏置的初始化:合适的初始化可以防止梯度在网络中传播时变得过大。

  • 梯度裁剪:通过限制梯度的最大值,可以防止梯度爆炸。

  • 降低学习率:使用较小的学习率可以减少每次参数更新的步长,从而避免梯度爆炸。

  • 使用正则化技术:如L1、L2正则化可以控制权重的大小,从而间接控制梯度的大小。

  • 使用批量归一化:可以减少梯度的方差,加速训练,稳定训练过程。

  • 使用梯度更新规则:如Adam、RMSprop等优化器,它们通过调整每个参数的学习率来适应梯度的大小。

  • 减少网络深度:简化模型结构,减少网络层数,可以减少梯度爆炸的风险。

5.激活函数

      非线性函数,激活函数将输入信号的总和转为输出信号,然后这个输出随后被传递到下一层的神经元。

(1)常见的激活函数

  • Sigmoid函数:将输入压缩到(0, 1)区间内,它是非线性的,但存在梯度消失问题。

  • Tanh函数:它将输入压缩到(-1, 1)区间内

  • ReLU函数(Rectified Linear Unit):在输入大于0时直接输出输入值,否则输出0。它解决了Sigmoid和Tanh的梯度消失问题,计算效率高。

  • Leaky ReLU:允许负值有一个非零的梯度。

  • Softmax函数:通常用于多分类神经网络的输出层,将输出转换为概率分布。

本文参考书籍:

《深度学习入门:基于python的理论与实现》

《图解深度学习与神经网络:从张量到TensorFlow实现》

本文仅为个人学习使用所写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值