计算函数的梯度,用这些题都迭代,更新参数向量。
在计算机上,计算梯度的一个有效方法是有限差分法。
设想W是现在的向量参数,它给了我们当前损失可能是1.25,目标是计算梯度dW,它是和W相同维数的向量梯度上每个元素都会告诉我们在相关方向上每移动一小步损失变化多少,逐维进行一些微小变化,计算有限差分,此后将被改变的那一维数据复原,再在下一维重复此操作。但是这样计算会特别慢,而且结果也不好。
![](https://img.haomeiwen.com/i11402959/2aaadf3bee3fa6e4.png)
![](https://img.haomeiwen.com/i11402959/0c1e2d2f60261669.png)
![](https://img.haomeiwen.com/i11402959/fee3720ec359d1ff.png)
梯度下降算法
在梯度下降算法中,我们首先初始化W为随机值,当为真时 我们计算损失和梯度,然后像梯度相反的方向更新权重值。梯度是指向函数的最大增加方向,所以梯度减小是指向函数最大减小方向,所以我们向梯度减小的方向前进一小步,然后一直重复,最后网络将会收敛。每一步的梯度决定下一步的方向。
![](https://img.haomeiwen.com/i11402959/7f4fc038ba18dba0.png)
但是步长是一个超参数,这个步长也被叫做学习率。它可能是需要设定的最重要的一个超参数。
已经定义了误差函数来计算我们的分类器在训练样本中的每一步表现有多糟,设定数据集的总误差是整个训练集误差的平均值,但是实际中数据集N可能非常大,计算可能会很慢。误差函数的梯度值是每个单项误差梯度值的总和所以如果在此计算梯度,就需要迭代整个数据集,如果N很大,就会变得非常慢,要很长很长时间才能更新一次W,所以实际中往往使用随机梯度下降法。
![](https://img.haomeiwen.com/i11402959/93566477fd3ca6cd.png)
随机梯度下降法
该算法并非计算整个训练集的误差和梯度值,而是在每一次迭代中选取一小部分训练样本成为minibatch,按照惯例这里都取2的幂次方,如32,64,128等,然后利用这一minibatch来估算误差总和以及误差梯度。
该算法即为,为真时,随机取一些minibatch数据评估minibatch的误差值和梯度,然后更新各个参数,甚至基于这一误差值的估计以及梯度的估计。
图像的特征
之前讲过的线性分类器是直接将图片的原始像素直接传入线性分类器,但是由于多模态的问题,这样做表现似乎不太好。
所以当用深度神经网络大规模运用前,常使用两步走策略:首先,计算图片的特征代表;然后 将不同的特征向量合到一块,得到图像的特征表述。
现在这些特征表述会变成输入源,而不是图片像素,传入分类器。
![](https://img.haomeiwen.com/i11402959/154641a652afdd1e.png)
网友评论