AI智能
改变未来

神经网络中的反向传播


一、损失函数

预测值: 首先我们根据给定的

Xi

,对于一个样本,我们可以得到一个预测
值 y^\\widehat{y}y​ 。

为了衡量我们的预测值与真实值之间的差距,我们引入了一个损失函数,这里
就仅列出交叉熵函数作为举例,而且为什么要用交叉熵,这里最重要的原因是因为采用交叉熵可以避免局部最小值。

交叉熵函数:
L(y,y^)=−(ylogy^+(1−y)log(1−y^)) L(y,\\widehat{y}) = -(ylog\\widehat{y}+(1-y)log(1-\\widehat{y}))L(y,y​)=−(ylogy​+(1−y)log(1−y​))

所以我们可以直观看一下该函数的作用:

  • 如果
    y=1

    ,那么公式中只剩下−logy^-log\\widehat{y}−logy​,如果 y^=0\\widehat{y}=0y​=0,那么此时

    L

    趋于无穷大,如果 y^=1\\widehat{y}=1y​=1,那么此时

    L=0

  • 同理
    y=0

    ,也是一样。

  • 所以通过上述两种情况,我们的目的是为了使误差尽可能地小,从而使我们的预测接近真实值。

二、成本函数

由于损失函数是对于一个样本的,那么在训练一组训练集时,将各个样本的误差相加求和再取平均数,即为成本函数。

三、梯度下降法

通过梯度下降,不断地更新

w、b

参数,从而使预测值更加接近真实值。我们可以直观地看一下,我们的成本函数究竟是什么样子的:

因此我们的目的就是找到那个最低点,即我们要的

w、b

。这样也可以避免局部最优解。

我们来看一下梯度下降究竟干了些什么:

  • 初始化一个
    w、b

    ,此时我们位于该图中随意的一个点上。

  • 从此时开始,这个点沿着梯度一直往下走,直到走到最低端,或者在周围震荡。

那么为什么可以走到最低点,我们来看一下

w、b

究竟是如何变化的。首先给出

w

的更新公式:
w=w−αdJ(w)dw w = w – \\alpha\\frac{dJ(w)}{dw} w=w−αdwdJ(w)​

以该图为例,我们进行分析:

  • 我们知道,导数其实就是一个斜率,那么我们可以分类讨论。
  • 如果导数大于
    0

    ,我们知道此时我们位于该图像的右半部分,那么我们此时的

    w

    应该向左移动,也就是上述的公式。

  • 如果导数小于
    0

    ,那么此时处于左半部分,减去一个负值,相当于

    w

    变大

  • 通过上述公式,我们发现我们正在一步步地往最低点移动。

通过上述讲解,我们应该也注意以下问题:

  • 激活函数必须可导,要不然无法反向传播。(当然
    Relu

    是个例外)

  • 损失函数的选择决定了你的收敛
  • 梯度下降的方法决定了你的收敛
  • 学习率在一定程度上也会决定你的收敛
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 神经网络中的反向传播