神经网络的训练是通过调整隐层和输出层的参数,使得神经网络计算出来的结果 与真实结果 y 尽量接近。神经网络的训练主要包括正向传播和反向传播两个过程。正向传播的基本原理是,基于训练好的神经网络模型,输入数据通过权重和激活函数计算出隐层,隐层通过下一级的权重和激活函数得到下一个隐层,经过逐层迭代,将输入的特征向量从低级特征逐步提取为抽象特征,最终输出分类结果。反向传播的基本原理是,首先根据正向传播结果和真实值计算出损失函数 L ( W ),然后采用梯度下降法,通过链式法则计算出损失函数对每个权重和偏置的偏导,即权重或偏置对损失的影响,最后更新权重和偏置。本节将以图2.9中的神经网络为例,介绍神经网络训练的正向传播和反向传播过程。
每个神经网络层的正向传播过程是,权重矩阵的转置乘以输入向量,再通过非线性激活函数得到输出。
图2.9中的神经网络的输入为3个神经元,记为 x =[ x 1 ; x 2 ; x 3 ];隐层包含3个神经元,记为 h =[ h 1 ; h 2 ; h 3 ];输出层包含2个输出神经元,记为 。输入和隐层之间的连接对应的偏置为 b (1) ,权重矩阵为
图2.9 神经网络
隐层和输出层之间的连接对应的偏置为 b (2) ,权重矩阵为
该神经网络采用sigmoid函数作为激活函数
输入到隐层的正向传播过程为,首先权重矩阵 W (1) 的转置乘以输入向量 x ,再加上偏置 b (1) ,得到
然后经过sigmoid激活函数,得到隐层的输出
隐层到输出层的正向传播过程与上述过程类似。
示例
假设该神经网络的输入数据为 x =[ x 1 ; x 2 ; x 3 ]=[0.02;0.04;0.01],偏置向量为 b (1) =[0.4;0.4;0.4], b (2) =[0.7;0.7],期望输出为 。在神经网络训练之前,首先对两个权重矩阵进行随机初始化:
其次计算隐层在激活函数之前的输出
对上面得到的三个数分别做sigmoid计算,得到隐层的输出
然后计算输出层在激活函数之前的输出
对上面的两个数分别做sigmoid运算,得到最终输出