前馈神经网络--前向传播与反向传播计算过程

目录

2、多层感知机(前馈神经网络)

2.1 定义

 2.2 神经元

2.3 激活函数

2.3.1 sigmoid函数

2.3.2 tanh函数

2.3.3 relu函数

2.4 计算

2.4.1 前向传播

2.4.2 反向传播


2、多层感知机(前馈神经网络)

2.1 定义

多层感知机(MLP)是一种前馈神经网络模型。

前馈神经网络(feedforward neural network),又称作深度前馈网络(deep feedforward network)、多层感知机(multilayer perceptron,MLP)

除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:(图片来自《动手学深度学习》

 2.2 神经元

人工神经元简称神经元,是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接受一组信号并产生输出。假设一个神经元接受了一组输入后,这些输入又会分别各自做出加权和偏置操作,最后得出一个值称之为净输入,这时我们的净输入需要经过一个非线性函数f(·)后,得到神经元的活性值a,其中的非线性函数称为激活函数。

2.3 激活函数

  

2.3.1 sigmoid函数

特点:

        它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.

缺点:

        缺点1:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大

        缺点2:Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如x>0, x>0, f= ,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的。

        缺点3:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。

2.3.2 tanh函数

特点:

1.tahn解决了Sigmoid函数的不是zero-centered输出问题,

2.然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。

2.3.3 relu函数

ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient

有以下几大优点:

        1) 解决了gradient vanishing问题 (在正区间)

        2)计算速度非常快,只需要判断输入是否大于0

        3)收敛速度远快于sigmoid和tanh

ReLU问题:

        1)ReLU的输出不是zero-centered

        2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生:

                (1) 非常不幸的参数初始化,这种情况比较少见

                (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。


 参考链接:为什么要使用激活函数,激活函数的作用_贾世林jiashilin的博客-CSDN博客_为什么要用激活函数

2.4 计算

2.4.1 前向传播

例如:

相当于两个向量相乘得到第一个net1和net2

2.4.2 反向传播

参考视频:精华!前向传播和反向传播都讲得很清楚

8分钟搞懂神经网络反向传播算法_哔哩哔哩_bilibili

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前馈神经网络反向传播是一种用于训练神经网络的算法。它通过计算损失函数对网络中每个参数的偏导数来更新网络的参数,从而最小化损失函数。引用中提到了反向传播使用的链式求导法则。 具体来说,反向传播算法的步骤如下: 1. 输入一个训练样本,并将其传递给前馈神经网络进行前向传播计算出网络的输出值。 2. 计算损失函数,将网络的输出值与真实值进行比较,得到网络的误差。 3. 从输出层开始,根据链式求导法则,计算每个参数对误差的偏导数。这可以通过计算损失函数对每个参数的偏导数来完成。 4. 使用计算得到的偏导数来更新网络中的参数。常用的更新规则是梯度下降法,即根据参数的偏导数和学习率来更新参数的值。 5. 重复步骤1-4,直到达到停止条件(例如达到最大迭代次数或误差小于某个阈值)为止。 需要注意的是,在计算偏导数时,可以使用链式求导法则来将误差传播回每一层的参数。这使得即使是多层网络,也可以通过反向传播计算每个参数的梯度。引用中给出的链式求导法则提供了更详细的数学基础。 总结起来,前馈神经网络反向传播是通过计算损失函数对每个参数的偏导数,然后使用梯度下降法来更新参数,从而训练网络并最小化损失函数。这种算法可以有效地在多层网络中传播误差,并逐步优化网络的性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值