以监督学习为例,假设我们有训练样本集(x,y),那么神经网络算法能够提供一种复杂且非线性的假设模型,模型具有参数w,b,可以以此参数来拟合我们的数据。
为了描述神经网络,我们从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,输入,偏置b=1
这里我们把激活函数f选择成sigmoid函数,其导数计算比较简单,模型输出为
,
比较复杂的神经网络模型是由许多单一的“神经元”联接在一起的,
简单起见,用表示第L层第i单元的输入加权和(包含偏置),比如
用表示第L层第i单元的输出。则网络模型输出为
其中,注意下面的指数2,3表示2,3层,而不是平方或立方
我们将上面的计算步骤叫作前向传播。通常,我们用表示输入层的激活值,那么给定第L层的激活值后,第L+1层的激活值就可以按照下面步骤计算得到:
反向传播算法
假设我们有一个样本集(x,y),可以用批量梯度下降法来更新神经网络,具体来讲,对于样本集(x,y),可以计算其损失函数为
可以看出这是一个二次函数,会有全局最小值0存在,函数变量为样本(x,y),函数参数为(w,b),我们期望网络性能很好,理想情况就是J=0,拿什么时候能够取到这个极值呢,自然就是在偏导数=0处,即能够让下面两个
(1)
当然,求解上面的方程计算量很大,而且有可能无解或有无穷多个解。那么换个方式,比如按照下面的公式对参数w,b进行更新
其中是学习率。可以看出,若网络模型已经学习的足够好了,那么就会有(1)成立,则会有
即网络模型的参数不再更新的情况。