多层网络和BP反向传播算法

神经元数学模型

一个具有R个输入的基本神经元如下图所示。每个输入都用适当的w加权,加权输入和偏置形成传递函数f的输入,神经元可以使用任何可微传递函数f生成输出。

 

多层网络和BP反向传播算法_第1张图片

多层网络通常使用log-sigmoid传递函数logsig。(还有其他激活函数,如relu函数)
当神经元的输入从负无穷到正无穷时,函数logsig产生0到1之间的输出 。

多层网络和BP反向传播算法_第2张图片

 

前馈网络

一个由R输入的S个logsig神经元组成的单层网络如下图所示,左边是完整的细节,右边是一个层图。

多层网络和BP反向传播算法_第3张图片

 

前馈网络通常有一个或多个隐藏层,然后是线性神经元的输出层。具有非线性传递函数的多层神经元允许网络学习输入和输出向量之间的非线性和线性关系。线性输出层让网络产生在-1到+1范围之外的值。另一方面,如果您希望约束网络的输出(如0到1之间),那么输出层应该使用sigmoid传递函数(如logsig)。

多层网络和BP反向传播算法_第4张图片

 

反向传播算法(BP)

下面描述了使用反向传播算法的多层神经网络过程。为了说明这个过程,使用了三层神经网络,两个输入和一个输出,如下图所示:

多层网络和BP反向传播算法_第5张图片

 每个神经元由两个单元组成。第一个单元添加权重、系数和输入信号的乘积。第二个单元实现非线性函数,称为神经元传递(激活)函数。信号e为加法器输出信号,y = f(e)为非线性元件输出信号。信号y也是神经元的输出信号。

多层网络和BP反向传播算法_第6张图片

 神经网络的学习需要训练数据集,样本由输入和对应的标签输出组成。神经网络的训练是一个迭代的过程,每次迭代,利用训练数据集的新数据来更新节点的权重。

下图演示了输入信号在神经网络中的传播过程,符号w(xm)n表示网络输入xm与输入层神经元n之间连接的权值。符号yn表示神经元n的输出信号。

多层网络和BP反向传播算法_第7张图片

多层网络和BP反向传播算法_第8张图片

多层网络和BP反向传播算法_第9张图片

 信号在隐层中的传播。符号wmn表示下一层神经元m的输出与n的输入之间连接的权值。

 

多层网络和BP反向传播算法_第10张图片

信号通过输出层:

多层网络和BP反向传播算法_第11张图片

多层网络和BP反向传播算法_第12张图片 在接下来的算法步骤中,将网络y的输出信号与训练数据集中期望的输出值(目标)进行比较,这种差异称为输出层神经元的误差信号d

多层网络和BP反向传播算法_第13张图片

其思想是将误差信号d(在单个训练步骤中计算)传播回所有神经元,这些神经元输出信号作为相应神经元的输入。 

多层网络和BP反向传播算法_第14张图片

用于将错误传播回来的权系数wmn等于在计算输出值时使用的权系数wmn。只改变数据流的方向(信号依次从输出传播到输入)。这种技术适用于所有网络层。如果传播错误来自少数神经元,它们就会被加入。图示如下:

多层网络和BP反向传播算法_第15张图片

在计算每个神经元的误差信号时,可以修改每个神经元输入节点的权系数。下面的公式中df(e)/de表示神经元激活函数的导数(权值被修改)。

多层网络和BP反向传播算法_第16张图片

在计算每个神经元的误差信号时,可以修改每个神经元输入节点的权系数。下面的公式中df(e)/de表示神经元激活函数的导数(权值被修改)。 

多层网络和BP反向传播算法_第17张图片

多层网络和BP反向传播算法_第18张图片

你可能感兴趣的:(机器学习,深度学习,BP,反向传播,神经网络)