一、神经网络的优化算法

在BP神经网络的范畴中,一般说到优化算法,指的就是梯度下降。梯度下降的公式可以表示如下,其中J(θn)表示要优化的损失函数,η表示学习率:

                                             

BP神经网络梯度下降相关计算题 神经网络 梯度下降_神经网络优化

因此假设损失函数如下:

                                                    

BP神经网络梯度下降相关计算题 神经网络 梯度下降_BP神经网络梯度下降相关计算题_02

则有:

                                               

BP神经网络梯度下降相关计算题 神经网络 梯度下降_BP神经网络梯度下降相关计算题_03

此时假设损失函数的初始值为5,学习率为0.3,则梯度下降的优化算法过程为:

           

BP神经网络梯度下降相关计算题 神经网络 梯度下降_BP神经网络梯度下降相关计算题_04

从图中可以看出,经过4轮迭代,损失函数从5下降到0.128,这也说明拟合的模型与真实情况的差距越来越小。

 

二、随机梯度下降

随机梯度下降优化算法的本质和梯度下降是一样的,但是当训练数据量很大时,如果对每一条数据在训练时都进行运算,会导致训练速度相当慢。

比如我们有10000条数据,每一个训练的epochs,都要对这10000调数据全部进行一次梯度下降算法。

所以我们在训练模型的过程中,从一批训练数据中随机抽取某一条数据对损失函数进行优化,来代表全局数据,这样训练的速度就大大加快了。

比如我们有10000条数据,每一个训练的epochs,只选取1条数据进行梯度下降算法。

随机梯度下降的缺点也是很明显的,一条数据有时并不能代表一批数据的特征,这往往会导致网络无法达到全局最优,甚至不能达到局部最优。

 

三、分批次梯度下降

根绝上述两种情况的,选取出一种折中方案,就是分批梯度下降。

首先将大量数据分成小批次,用每个小批次的数据对损失函数进行优化,这样不会比随机梯度慢很多,同时计算量比全局数据的梯度下降又要快。

比如我们有10000条数据,将其分成100个batch,每个batch100条数据,每一个训练的epochs中,只用对这一个batch的100条数据使用梯度下降算法。但是整个训练方法要循环100次,将100batch都训练一遍。

 

四、附学习笔记如下

BP神经网络梯度下降相关计算题 神经网络 梯度下降_神经网络优化_05