梳理神经网络学习流程

以如图1所示二层神经网络为例,梳理神经网络的学习流程。

1. 说明各变量定义

1. 输入量个数为3:

 梳理神经网络学习流程

2. 输出量个数为2:

 梳理神经网络学习流程

3. 中间层个数为4:

 梳理神经网络学习流程 

4. 权重矩阵W1、W2(不带偏置)的维度分别为3*4, 4*2.

梳理神经网络学习流程  梳理神经网络学习流程

5. 偏置矩阵b1、b2的维度分别为1*4,1*2

梳理神经网络学习流程梳理神经网络学习流程

 

梳理神经网络学习流程
图1 二层神经网络,3输入,2输出,X为输入层,Y为输出层,A为中间层

 

6. 训练数据(X,Y):假设有60000个训练数据,每个训练数据称之为一个样本,样本=[x1,x2,x3, y1, y2].

一般将训练数据放在一个大矩阵中,矩阵的每一行为一个样本。如表1中所示训练数据可写成如下矩阵(60000, 5)

梳理神经网络学习流程

训练数据示意
  梳理神经网络学习流程 梳理神经网络学习流程 梳理神经网络学习流程 梳理神经网络学习流程 梳理神经网络学习流程
1 42.8 56.1 73.0 4.5 2.8
2 35.2 24.6 98.5 5.5 1.9
...          
60000 65.5 75.1 94.6 6.6 3.5

2. 明确神经网络训练的是什么

从第一节可以看出,已知的是输入X和输出Y,未知的是权重W(梳理神经网络学习流程梳理神经网络学习流程)和偏置b(梳理神经网络学习流程梳理神经网络学习流程)。

神经网络要得到的就是权重W和偏置b,我们统称其为神经网络的参数,下文中参数(除非另有说明)均指权重和偏置。

3. 如何利用训练数据训练网络获得合适的参数值

首先,判断参数值是否合适,我们需要一个标准,这个标准在神经网络中就是损失函数(loss function)https://blog.****.net/eowyn0406/article/details/87164864,我们可以用均方误差或者交叉熵误差。

其次,如果当前参数不合适,我们需要一种方法让他变得合适,这种方法可以用梯度下降法。

梯度下降法是一种最优化方法,针对一个目标函数,要求其最小值,就可以使用梯度下降法。


举个简单的例子:目标函数梳理神经网络学习流程,求此函数最小值,其梯度为梳理神经网络学习流程, 取更新步长为梳理神经网络学习流程,更新步骤为梳理神经网络学习流程. 其迭代次数由收敛条件决定,如达到指定收敛条件则停止迭代,否则迭代至最大次数。收敛条件一般取前后两次的y值之差,若其小于一个较小的数,如0.001则满足收敛条件。

1. 取初值x1 = 10, x2 = -5;

2. 迭代第一次梳理神经网络学习流程 ,梳理神经网络学习流程,判断是否满足收敛条件:梳理神经网络学习流程梳理神经网络学习流程,不满足收敛条件,但是可以看出在新的参数下,函数值下降了。

3. 迭代第二次梳理神经网络学习流程梳理神经网络学习流程,判断是否满足收敛条件:

梳理神经网络学习流程梳理神经网络学习流程,不满足收敛条件,但是可以看出函数值继续下降。

4. 重复上述步骤,直至梳理神经网络学习流程或到达最大迭代次数。

本例中为示例方便,选择的步长较大,不一定能收敛,可以选择梳理神经网络学习流程或其他较小的数值,最终x1和x2将收敛至(0,0)点附近。


总之,在这里,梯度下降法的作用是使参数(W, b)往使损失函数最小的方向发展。损失函数就是梯度下降法中的目标函数,要注意这里的未知量是参数W和b,与X和Y无关,X和Y是已知量。这点初学时非常容易困惑,因为一般数学中都习惯用X来表示未知数,这里只要明白,已知未知可以用任何变量名来代替,就不会困惑了。

其实到了这一步就已经完成了神经网络的学习。

最简单粗暴的学习就是把60000个训练样本都输入网络,利用最小梯度法(以损失函数为目标函数进行梯度下降)求出最优参数即可。但是这样做的问题是计算量过大,损失函数值过大,会超过计算机的数据类型最大能计算的值。

因此,可以使用mini-batch的方法。即每次只使用随机少量样本,比如100个,进行梯度下降,求出最优参数,将此参数作为下一次迭代的初始值,如此多次迭代获得最终的最优参数。