1.神经网络
神经网络,又称为人工神经网络(ANN)或模拟神经网络(SNN),是深度学习算法的核心,是模仿生物神经元相互传递信号的方式,主要包含一个输入层、一个或多个隐藏层、一个输出层,每个神经元结点连接到另一个结点,并带有关联的权重和阀值。前向传播(Forward Propagation)指的是神经网络从左到右按顺序运行,一直运行至最后一层;反向传播(Back Propagation)根据前向传播从左到右运行的结果,由于输出的结果与期望的实际值存在误差,那么须对里面的权重和偏移量更新,减少这种误差的存在。
2. 通过例子来展示前项传播与反向传播计算过程
如图这是一个简单的神经网络,输入层有两个单元,隐藏层有两个单元,输出层有两个单元。w1,w2,w3……w8代表各自的权重,b为偏移量。h1为单个神经元,在一个单元内发生了加权和,再通过激活函数压缩加权和,这里使用的是常见的Sigmoid函数
2.1前向传播(Forward Propagation)计算
从输入层到输出层,对神经网络从左到右依次计算,先得到sumh1再通过Sigmod函数计算outputh1加权值,再与w5、w6相乘加上偏移量b值,最终得出outputO1,同理得出outputO2,前项传播的计算相对直观,套公式直接得出结果。
2.2计算总误差,这里总误差就是损失函数(Loss function),用的是经典的均方误差(MSE),在这个例子中,我们计算设定的目标值是0.05和0.95,与前向传播输出的0.73492和0.77955存在一定的误差,根据MSE公式分别计算E1和E2相加得出最后总误差。
2.3反向传播(Back Propagation)计算
现在计算在w5对E1的贡献情况(请回看最前面例子的神经网络图),回归一下链式求导公式,根据链式求导公式,对链式每一个部分求导计算,根据梯度下降迭代定义,新的权重w5更新,为0.45187,同理,对w6、w7、w8进行更新,分别为0.55073、0.71056、0.81081(常见的y=ax+b,自变量x的变化引起y的变化,这里链式求导是将里面变化情况进行了进一步的分解,)