梳理神经网络学习流程

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

1. 说明各变量定义

1. 输入量个数为3:

 \bold{X}=[x_1,x_2, x_3]^T

2. 输出量个数为2:

 \bold{Y}=[y_1,y_2]^T

3. 中间层个数为4:

 \bold{A}=[a_1,a_2, a_3, a_4]^T 

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

\bold{W}_1=\begin{bmatrix} w_{11}^{(1)} & w_{21}^{(1)} & w_{31}^{(1)} & w_{41}^{(1)}\\ w_{12}^{(1)} & w_{22}^{(1)} & w_{32}^{(1)} & w_{42}^{(1)} \\ w_{13}^{(1)} & w_{23}^{(1)} & w_{33}^{(1)} & w_{43}^{(1)} & \end{bmatrix}  \bold{W}_2 = \begin{bmatrix} w_{11}^{(2)} & w_{21}^{(2)}\\ w_{12}^{(2)} & w_{22}^{(2)} \\ w_{13}^{(2)} & w_{23}^{(2)} \\ w_{14}^{(2)} & w_{24}^{(2)} \end{bmatrix}

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

\bold{b}_1 = [b_1^{(1)},b_2^{(1)},b_3^{(1)},b_4^{(1)}]\bold{b}_2=[b_1^{(2)},b_2^{(2)}]

 

图1 二层神经网络,3输入,2输出,X为输入层,Y为输出层,A为中间层

 

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

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

\begin{bmatrix} 42.8 & 56.1& 73.0 &4.5 &2.8 \\ 35.2 & 24.6 & 98.5 &5.5 &1.9 \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ 65.5 & 75.1 & 94.6 & 6.6 &3.5 \end{bmatrix}

训练数据示意
 x_1x_2x_3y_1y_2
142.856.173.04.52.8
235.224.698.55.51.9
...     
6000065.575.194.66.63.5

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

从第一节可以看出,已知的是输入X和输出Y,未知的是权重W(\bold{W}_1\bold{W}_2)和偏置b(\bold{b}_1\bold{b}_2)。

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

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

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

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

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


举个简单的例子:目标函数y=x_1^2+x_2^2,求此函数最小值,其梯度为[\frac{\partial y}{\partial x_1},\frac{\partial y}{\partial x_2}] = [2x_1,2x_2], 取更新步长为\eta = 0.1,更新步骤为\begin{bmatrix} x_1\\x_2 \end{bmatrix} _{new} =\begin{bmatrix} x_1\\x_2 \end{bmatrix} _{old} - \eta \begin{bmatrix} 2x_1\\2x_2 \end{bmatrix}. 其迭代次数由收敛条件决定,如达到指定收敛条件则停止迭代,否则迭代至最大次数。收敛条件一般取前后两次的y值之差,若其小于一个较小的数,如0.001则满足收敛条件。

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

2. 迭代第一次x_1 = 10-0.1*2*10 = 8 ,x_2 = -5-0.1*2*(-5)= -4,判断是否满足收敛条件:y_{old} = 10^2+(-5)^2=125y_{new} = 8^2+(-4)^2 = 80,不满足收敛条件,但是可以看出在新的参数下,函数值下降了。

3. 迭代第二次x_1 = 8-0.1*2*8 = 6.4x_2 = -4-0.1*2*(-4)= -3.2,判断是否满足收敛条件:

y_{old} = 80y_{new} = 6.4^2+(-3.2)^2 = 51.2,不满足收敛条件,但是可以看出函数值继续下降。

4. 重复上述步骤,直至|y_{old}-y_{new}| < 0.001或到达最大迭代次数。

本例中为示例方便,选择的步长较大,不一定能收敛,可以选择\eta = 0.01或其他较小的数值,最终x1和x2将收敛至(0,0)点附近。


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

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值