训练比特的作用是什么?
我来讲讲这个“训练比特”的实现方法(以Caffe为例),其他框架应该大同小异吧。 这个“训练比特”其实就涉及到一个概念,就是“梯度下降”,关于梯度下降的概念大家可以百度一下,非常简单清晰。 假设我们要想让模型的输出更加接近于我们期望的值(比如图像分类中,希望模型能把图片分类正确,输出的标签是我们希望的标签;物体检测中,希望模型能准确地识别和追踪目标物体的位置),那么就需要对网络的参数(权重、偏置)进行调整,让网络性能变得更好。 而网络参数的调整是通过梯度来计算的,如果知道了梯度的方向,我们就知道该怎么去更新参数了——就是朝梯度的反方向进行调整。而这个计算梯度的过程实际上就是求导的过程。 所以,如果要使用梯度下降的方法来计算该往哪个方向调整参数(或者说如何更新参数),我们就可以借助“训练比特”来计算出目标的梯度。而计算梯度的过程实际上就是对网络进行正向传播的过程。
当然,这里只介绍了如何使用训练比特来计算梯度,而没有介绍怎么生成训练比特(也就是样本数据)以及怎么初始化变量(权值和偏置)的问题。这两个问题其实在大多数框架里都是通过调用一些内置函数就可以轻松解决的。