在了解神经网络之前我们需要对感知机进行一个初步的了解。
首先感知机是作为神经网络(深度学习) 的起源的算法。
而感知机的具体作用是感知机接收多个输入信号, 输出一个信号。
信号简单来说就是一个值。
我们把其中一个步骤单独提取出来可以得到下图
再这个图中。我们可以理解未
x1、 是输入信号,y 是输出信号, w 是权重, weighted sum是“神经元” 或者叫节点,输入信号被送往神经元时, 会被分别乘以固定的权重,也叫加权 求和,神经元会计算传送过来的信号的总和。
在了解了感知机后我们开始进行bp神经网络的学习。
首先我们要了解什么是bp神经网络,
bp神经网络是神经网络中最为重要的一种。
BP(BackPropagation) 算法是神经网络深度学习中最重要的算法之一,是一种按照误 差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一 。了 解BP算法可以让我们更理解神经网络深度学习模型训练的本质,属于内功修行的部 分。
神经网络的传播具体
BP算法的核心思想是:学习过程由信号的正向传播和误差的反向传播两个过程组成。
他们的具体含义如下
正向传播:输入层的神经元负责接受外界发来的各种信息,并将信息传递给中间层 神经元,中间隐含层神经元负责将接收到的信息进行处理变换,根据需求处理信息, 实际应用中可将中间隐含层设置为一层或者多层隐含层结构,并通过最后一层的隐含 层将信息传递到输出层,这个过程就是BP神经网络的正向传播过程。
反向传播:当实际输出与理想输出之间的误差超过期望时,就需要进入误差的反向 传播过程。它首先从输出层开始,误差按照梯度下降的方法对各层权值进行修正,并 依次向隐含层、输入层传播。通过不断的信息正向传播和误差反向传播,各层权值会 不断进行调整,这就是神经网络的学习训练。当输出的误差减小到期望程度或者预先 设定的学习迭代次数时,训练结束,BP神经网络完成学习。
在了解基础概念后
我们来推到bp神经网络
具体流程图如下
下图第一层输入,第二次隐含层,第三层输出层,最后一行为偏置项(控制感知机可激活容易程度)。如果隐含层神经元过少可能不收敛,过多造成浪费计算资源和时间且普适性降低。
隐含层神经元可通过输入与输出和的开方加1-9其中一个整数计算得出,最后加的数字有相关算法。
第二层与第三层感知机的激活函数一般用sigmoid函数( 1 /(1+ e^( -x ) ) ),让极端数据变得普通并且不改变多个值的大小关系。
推到流程
隐含层与输出层都相当于一层感知机,每个神经元都有自己的输入,经过各自权重和后的net以及经过激活函数计算后的out。
推到过程中对 过程进行了一定的简化
具体我参考了b站视频BP神经网络原理及编程实现_哔哩哔哩_bilibili
反向传播;
隐含层---->输出层的权值更新:
隐含层---->隐含层的权值更新:
方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对 w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新 时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的 误差,所以这个地方两个都要计算。
具体推导流程如上
总结:
利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。这里的误差估计可以理解为某种偏导数,我们就是根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数溢出设定值