当前位置 : 主页 > 编程语言 > java >

前馈神经网络与反向传播算法

来源:互联网 收集:自由互联 发布时间:2022-06-23
在单层感知器的基础上,引入隐藏层即可得到多层感知器和深度神经网络,结构如下 在上述网络中,信号从输入层开始,经过线性组合和激活函数的处理,输入到下一层的神经元,信号


在单层感知器的基础上,引入隐藏层即可得到多层感知器和深度神经网络,结构如下

前馈神经网络与反向传播算法_数据分析

在上述网络中,信号从输入层开始,经过线性组合和激活函数的处理,输入到下一层的神经元,信号依次经过各个隐藏层的处理,最终输出到输出层,这样的信号传递是一个正向传递的过程,这种结构的神经网络称之为前馈神经网络。

对比循环神经网络RNN, 更能体会前馈神经网络的这一特性

前馈神经网络与反向传播算法_权重_02

在RNN中,存在一层循环神经元,信号在自身进行递归,而前馈神经网络中信号是层层传递的,从输入层依次传输到输出层。

对于前馈神经网络而言,其参数训练的过程通过反向传播算法来实现。反向传播,对应的英文为Back proprgation, 与前馈神经网络中信号的正向传递相对应,图示如下

前馈神经网络与反向传播算法_神经网络_03

反向传播算法将均方误差作为模型训练的代价函数,本质上是梯度下降法。和信号从输入层到隐藏层到输出层的正向传播相反,误差值从输出层传递到隐藏层再到输入层,这也是其名称中反向传播的由来。

下面通过一个实际的例子来感受下反向传播算法,神经网络结构如下

前馈神经网络与反向传播算法_权重_04

在输入层和隐藏层中,每一层都添加了一个值为1的神经元,这样的神经元称之为bias, 类比线性拟合中随机误差对应的常数项。首先随机初始化各条边的权重值,结果如下

前馈神经网络与反向传播算法_数据分析_05

神经网络训练的目标是调整各条边的权重,使得模型输出值与真实值o1,o2的误差最小。类比机器学习,这个目标可以用损失函数来定量描述,这里采用均方根误差。

根据初始权重值,通过正向传播,可以计算隐藏层h1和h2的值,这里激活函数采用sigmod函数,计算过程如下

前馈神经网络与反向传播算法_数据分析_06

接着计算输出层的输出

前馈神经网络与反向传播算法_数据分析_07

根据输出层的计算结构和真实值的差异,可以计算损失函数的值

前馈神经网络与反向传播算法_神经网络_08

接下来进行反向传播,对于神经网络而言,由于其参数很多,损失函数的求解通过梯度下降法来实现。以w5这个权重为例,根据链式法则,其偏导数如下

前馈神经网络与反向传播算法_数据分析_09

依次计算链式展开的各个子项,结果如下

前馈神经网络与反向传播算法_神经网络_10

前馈神经网络与反向传播算法_数据分析_11

前馈神经网络与反向传播算法_数据分析_12

学习率设定为0.5,则更新后的w5参数值计算如下

前馈神经网络与反向传播算法_数据分析_13

其他隐藏层的权重值计算过程是一样的,隐藏层计算完之后,再传播到输入层,按照同样的方式来调整输入层的权重。在每次迭代中,信号正向传播,利用更新后的权重值来计算输出层的总体误差,然后误差反向传播,依次更新更层神经元对应的权重值。

·end·

前馈神经网络与反向传播算法_数据分析_14

一个只分享干货的

生信公众号


上一篇:2020推文合集
下一篇:没有了
网友评论