常用的神经网络如BP神经网络、RBF神经网络等都有三层神经元,即输入层、隐藏层和输出层。我们知道通过不断的修改神经元之间的权值和偏置使网络的输出能够拟合所有的训练输入,为了量化这个目标,引入一个代价函数:
其中w表示所有网络中权值集合,b是所有的偏置,n是训练输入数据的个数,a表示当输入为x时输出的向量。此代价函数是非负的,且值相当小,当a接近y(x)时,C(w,b)约等于0,此时网络可以很好的工作。因此梯度下降法的目标就是找到一系统能让代价尽可能下的权重和偏置。
对于变量w,b,当我们分别改变很小的量∆w,∆b时,由微积分可得C将会有如下变化:
我们要寻找一种选择∆w,∆b使得∆C为负,这样每次改变w,b的值,C都在不断变小直到接近于0。定义,T是转置符号,用∇C梯度向量定义偏导数的向量,即:
则
假设取∆(w,b)等于-n∇C,其中n为很小的正数称为学习速率。则,保证了∆C≤0。因此,只要我们按照上式的规则去改变∆C,那么C会一直减小,∆C就是所需要的梯度。每次改变w和b的值:,然后用它再次更新规则计算下一次移动,反复持续这样做,将持续减小C直到获得全局的最小值。