深度学习之神经网络(2)

前馈神经网络 (Feedforward Neural Networks, FNN)

信息单向传播,从输入层到隐藏层,最后到输出层

也可以叫前向传播。它由一个或多个层组成,每一层都包含多个神经元,并且各层之间是前向连接的,即信息只能从前一层流向后一层,不会形成回路

损失函数 (Loss Function)

用于评估神经网络的预测与实际值之间的差异,用于指导网络的训练过程

代价函数(Cost Function)或损失函数(Loss Function)是深度学习模型中用于衡量模型预测值与真实值之间差异的函数,是深度学习模型中重要的一部分。而在不同的任务和模型可能会选择不同的代价函数。以下是几种常用的代价函数及其特点:

  1. 均方误差(Mean Squared Error, MSE)
  • 数学表达式: M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 \mathrm{MSE}=\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2} MSE=N1i=1N(yiy^i)2
  • 求导形式: ∂ M S E ∂ y ^ i = 2 N ( y ^ i − y i ) \frac{\partial \mathrm{MSE}}{\partial \hat{y}_{i}}=\frac{2}{N}\left(\hat{y}_{i}-y_{i}\right) y^iMSE=N2(y^iyi)
  • 应用场景:回归问题,如房价预测等。
  • 优点:易于计算和理解,对异常值敏感。
  • 缺点:对异常值敏感,可能导致梯度爆炸或梯度消失。
  1. 交叉摘损失(Cross Entropy Loss):
    一 二分类交叉熵:
  • 数学表达式: C E = − 1 N ∑ i = 1 N ( y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) \mathrm{CE}=-\frac{1}{N} \sum_{i=1}^{N}\left(y_{i} \log \left(\hat{y}_{i}\right)+\left(1-y_{i}\right) \log \left(1-\hat{y}_{i}\right)\right) CE=N1i=1N(yilog(y^i)+(1yi)log(1y^i))
  • 求导形式: ∂ C E ∂ y ^ i = − 1 N ( y i y ^ i − 1 − y i 1 − y ^ i ) \frac{\partial \mathrm{CE}}{\partial \hat{y}_{i}}=-\frac{1}{N}\left(\frac{y_{i}}{\hat{y}_{i}}-\frac{1-y_{i}}{1-\hat{y}_{i}}\right) y^iCE=N1(y^iyi1y^i1yi)
  • 多分类交叉熵:
  • 数学表达式: C E = − 1 N ∑ i = 1 N ∑ c = 1 C y i , c log ⁡ ( y ^ i , c ) \mathrm{CE}=-\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i, c} \log \left(\hat{y}_{i, c}\right) CE=N1i=1Nc=1Cyi,clog(y^i,c)
  • 求导形式: ∂ C E ∂ y ^ i , c = − 1 N y i , c y ^ i , c \frac{\partial \mathrm{CE}}{\partial \hat{y}_{i, c}}=-\frac{1}{N} \frac{y_{i, c}}{\hat{y}_{i, c}} y^i,cCE=N1y^i,cyi,c
  • 应用场景:分类问题,如图像分类、语音识别等。
  • 优点:适用于分类问题,对异常值不敏感,能够更好地衡量分类结果的概率分布。
  • 缺点:相对均方误差计算量较大。
  1. 对数损失(Log Loss) :
  • 数学表达式: LogLoss ⁡ = − 1 N ∑ i = 1 N ( y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) \operatorname{LogLoss}=-\frac{1}{N} \sum_{i=1}^{N}\left(y_{i} \log \left(\hat{y}_{i}\right)+\left(1-y_{i}\right) \log \left(1-\hat{y}_{i}\right)\right) LogLoss=N1i=1N(yilog(y^i)+(1yi)log(1y^i))
  • 求导形式: ∂ LogLoss ⁡ ∂ y ^ i = − 1 N ( y i y ^ i − 1 − y i 1 − y ^ i ) \frac{\partial \operatorname{LogLoss}}{\partial \hat{y}_{i}}=-\frac{1}{N}\left(\frac{y_{i}}{\hat{y}_{i}}-\frac{1-y_{i}}{1-\hat{y}_{i}}\right) y^iLogLoss=N1(y^iyi1y^i1yi)
  • 应用场景:二分类问题。
  • 优点:适用于二分类问题,与交叉熵损失类似。
  • 缺点:相对均方误差计算量较大。
  1. Hinge Loss:
  • 数学表达式: H i n g e L o s s = 1 N ∑ i = 1 N max ⁡ ( 0 , 1 − y i ⋅ y ^ i ) HingeLoss =\frac{1}{N} \sum_{i=1}^{N} \max \left(0,1-y_{i} \cdot \hat{y}_{i}\right) HingeLoss=N1i=1Nmax(0,1yiy^i)
  • 求导形式: ∂  HingeLoss  ∂ y ^ i = { − 1 N y i ,  if  y i ⋅ y ^ i < 1 0 ,  otherwise  \frac{\partial \text { HingeLoss }}{\partial \hat{y}_{i}}=\left\{\begin{array}{ll}-\frac{1}{N} y_{i}, & \text { if } y_{i} \cdot \hat{y}_{i}<1 \\ 0, & \text { otherwise }\end{array}\right. y^i HingeLoss ={N1yi,0, if yiy^i<1 otherwise 
  • 应用场景:支持向量机(SVM)等分类问题。
  • 优点:适用于二分类问题,对异常值不敏感
  • 缺点:不适用于概率估计,只适用于线性分类器。

反向传播 (Backpropagation)

一种训练神经网络的算法,通过计算损失函数关于网络参数的梯度,并利用这些梯度来更新网络的权重

基本步骤:

  1. 计算输出层的误差: 首先,根据损失函数,计算损失函数对输出的导数,也就是所谓的误差。对于二分类问题,通常使用交叉熵损失函数,因此输出层的误差可以直接计算为预测值与真实标签的差异。
  2. 反向传播梯度: 将输出层的梯度向后传播到隐藏层,通过链式法则计算每个隐藏层的梯度。
  3. 更新参数: 使用梯度下降或其他优化算法来更新每个参数,以最小化损失函数。更新规则通常形式为:新参数值 = 旧参数值 - 学习率 * 参数梯度。

补充一个小点:

  1. 在反向传播中计算每个隐藏层的梯度无疑是难度最大的一个点,如果想手撕神经网络,弄清楚链式法则是关键点。调用深度学习框架的话就可以使用自动求导来简化我们的工作。

梯度下降 (Gradient Descent)

一种优化算法,用于最小化损失函数,通过调整网络的权重来减少预测误差

常用的优化器及其特点:

  1. 随机梯度下降(Stochastic Gradient Descent,SGD):

    • 基本思想:在每次迭代中,随机选择一个样本来计算梯度并更新参数。
    • 特点:简单易用,但可能会陷入局部最优点,收敛速度较慢。
    • 参数:学习率(learning rate)。
  2. 带动量的随机梯度下降(SGD with Momentum):

    • 基本思想:在更新参数时,考虑上一次梯度的影响,从而加速收敛。
    • 特点:能够加速收敛,减少震荡。
    • 参数:学习率(learning rate)、动量(momentum)。
  3. 自适应学习率优化器(Adaptive Learning Rate Optimizers):

    • 基本思想:根据梯度的大小动态调整学习率,使得不同参数有不同的学习率。
    • 常见的优化器:
      • AdaGrad:根据参数的历史梯度调整学习率,适用于稀疏数据。
      • RMSprop:使用指数加权移动平均来调整学习率,解决了AdaGrad学习率不断减小的问题。
      • Adam:结合了动量和自适应学习率的优点,同时具有较好的性能。
  4. 带动态调整学习率的优化器(Learning Rate Schedulers):

    • 基本思想:在训练过程中动态调整学习率,根据模型的训练情况来更新学习率。
    • 常见的学习率调度方法:
      • StepLR:在指定的步数上调整学习率。
      • ReduceLROnPlateau:在验证集上表现不佳时减小学习率。
      • CosineAnnealingLR:以余弦函数的形式调整学习率,周期性地降低学习率。
  5. 其他优化器:

    • Adadelta:对AdaGrad的扩展,解决了学习率不断减小的问题。
    • Nadam:Adam优化器的一种变种,结合了Nesterov动量和Adam的优点。
  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值