在神经网络中使用导数用于称为反向传播的训练过程。该技术使用梯度下降来找到最佳的模型参数集,以最小化损失函数。在您的示例中,您必须使用S形导数,因为这是您的单个神经元正在使用的激活。
损失函数
机器学习的本质是优化成本函数,以便我们可以最小化或最大化某些目标函数。这通常称为损失或成本功能。我们通常要最小化此功能。成本函数根据模型参数将数据传递通过模型时,基于产生的错误来关联一些惩罚。C
让我们看一下我们尝试标记图像包含猫还是狗的示例。如果我们有一个完美的模型,我们可以给模型一个图片,它会告诉我们它是猫还是狗。但是,没有任何模型是完美的,并且会出错。
当我们训练模型以能够从输入数据中推断出含义时,我们希望最大程度地减少犯下的错误。因此,我们使用训练集,该数据包含许多狗和猫的图片,并且具有与该图片相关的地面真相标签。每次我们运行模型的训练迭代时,我们都会计算模型的成本(错误数量)。我们将希望最小化此成本。
存在许多成本函数,每个函数都有其自己的目的。常用的成本函数是二次成本,它定义为
。C=1N∑Ni=0(y^−y)2
这是我们训练过的幅图像的预测标签和地面真实标签之间差异的平方。我们将以某种方式将其最小化。N
最小化损失函数
实际上,大多数机器学习只是一系列框架,它们能够通过最小化某些成本函数来确定分布。我们可以问的问题是“如何最小化功能”?
让我们最小化以下功能
。y=x2−4x+6
如果绘制此图,我们可以看到处存在最小值。为了进行分析,我们可以将此函数的导数作为x=2
dydx=2x−4=0
。x=2
但是,通常无法通过分析找到全局最小值。因此,我们改为使用一些优化技术。这里也存在许多不同的方式,例如:Newton-Raphson,网格搜索等。其中包括梯度下降。这是神经网络使用的技术。
梯度下降
让我们使用一个著名的类比来理解这一点。想象一个2D最小化问题。这相当于在旷野中进行山区远足。您想回到最底端的村庄。即使您不知道村庄的主要方向。您需要做的就是不断沿着最陡峭的路下去,最终您将到达村庄。因此,我们将根据坡度的陡度向下倾斜表面。
让我们发挥功能
y=x2−4x+6
我们将确定为其Ÿ最小化。梯度下降算法首先说,我们将为x选择一个随机值。让我们在x = 8处初始化。然后,该算法将迭代执行以下操作,直到达到收敛为止。xyxx=8
xnew=xold−νdydx
其中是学习率,我们可以将其设置为我们想要的任何值。但是,有一种明智的选择方式。太大了,我们将永远无法达到最小值。太大了,我们将浪费很多时间才能到达那里。它类似于您要沿着陡峭的斜坡走下的台阶的大小。一小步,您将死在山上,您永远不会跌倒。太大一步,您就有冒险射击村庄并最终到达山的另一边的风险。导数是我们沿着这个斜率向最小值移动的方法。ν
dydx=2x−4
ν=0.1
迭代1:
x n e w = 6.8 − 0.1 (2 * 6.8 − 4 )= 5.84 x n e w = 5.84 − 0.1 (2 * 5.84 − 4 )= 5.07 X ñ ë 瓦特 = 5.07 - 0.1xnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
X Ñ ë 瓦特 = 4.45 - 0.1 (2 * 4.45 - 4 )= 3.96 X Ñ ë 瓦特 = 3.96 - 0.1 (2 * 3.96 - 4 )= 3.57 X Ñ ë 瓦特 = 3.57 - 0.1 (2 * 3.57 - 4 )xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
X Ñ ë 瓦特 = 3.25 - 0.1 (2 * 3.25 - 4 )= 3.00 X Ñ ë 瓦特 = 3.00 - 0.1 (2 * 3.00 - 4 )= 2.80 X Ñ ë 瓦特 = 2.80 - 0.1 (2 * 2.80 - 4 )= 2.64 X ñ ë 瓦特 =xnew=3.57−0.1(2∗3.57−4)=3.25
xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
X Ñ ë 瓦特 = 2.51 - 0.1 (2 * 2.51 - 4 )= 2.41 X Ñ ë 瓦特 = 2.41 - 0.1 (2 * 2.41 - 4 )= 2.32 X Ñ ë 瓦特 = 2.32 - 0.1 (2 * 2.32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
x n e w = 2.26 − 0.1 (2 ∗ 2.26 − 4 )= 2.21 x n e w = 2.21 − 0.1 (2 ∗ 2.21 − 4 )= 2.16 x n e w = 2.16 − 0.1 (2 ∗ 2.16 − 4 )= 2.13 x nxnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
X Ñ ë 瓦特 =2.10-0.1(2*2.10-4)=2.08 X Ñ ë 瓦特 =2.08-0.1(2*2.08-4)=2.06 X ñ Ë 瓦特 =2.06-0.1(xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
X Ñ ë 瓦特 = 2.05 - 0.1 (2 * 2.05 - 4 )= 2.04 X Ñ ë 瓦特 = 2.04 - 0.1 (2 * 2.04 - 4 )= 2.03 X Ñ ë 瓦特 = 2.03 - 0.1 (2 * 2.03 - 4 )=xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
And we see that the algorithm converges at x=2! We have found the minimum.
Applied to neural networks
The first neural networks only had a single neuron which took in some inputs x and then provide an output y^. A common function used is the sigmoid function
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
where w is the associated weight for each input x and we have a bias b. We then want to minimize our cost function
C=12N∑Ni=0(y^−y)2.
How to train the neural network?
We will use gradient descent to train the weights based on the output of the sigmoid function and we will use some cost function C and train on batches of data of size N.
C=12N∑Ni(y^−y)2
y^ is the predicted class obtained from the sigmoid function and y is the ground truth label. We will use gradient descent to minimize the cost function with respect to the weights w. To make life easier we will split the derivative as follows
∂C∂w=∂C∂y^∂y^∂w.
∂C∂y^=y^−y
and we have that y^=σ(wTx) and the derivative of the sigmoid function is ∂σ(z)∂z=σ(z)(1−σ(z)) thus we have,
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b)).
So we can then update the weights through gradient descent as
wnew=wold−η∂C∂w
where η is the learning rate.