深度学习-FNN前馈神经网络概览及反向传播算法推导
神经网络中的反向传播算法分析与优化

神经网络中的反向传播算法分析与优化神经网络是近年来备受关注的一个领域,其在图像识别、语音识别、自然语言处理、智能机器人等领域有着广泛的应用。
其中,反向传播算法是神经网络训练中最常用的方法之一。
本文将对反向传播算法进行分析,并提出一些优化思路。
一、反向传播算法简介反向传播算法(Backpropagation Algorithm)是一种神经网络的学习算法,它的主要思想是通过误差反向传播来更新每一个权值。
具体来说,对于一个输人样本(input),神经网络先进行前向传播(forward propagation),计算出每一个节点的输出值;然后利用误差反向传播(back propagation of error)算法,计算每一个连接的误差,并根据误差大小更新每一个连接的权值,最终使得网络对输人样本的输出结果更加接近期望结果。
反向传播算法可以分为两个阶段:前向传播和误差反向传播。
前向传播即为输入层到隐层和隐层到输出层的计算,隐层与输出层的计算公式如下:第 j 个输出层节点的输出值为:$$O_j=f(\sum\limits_{i=1}^n w_{ji}O_i)$$其中,$f$ 为激活函数,$w_{ji}$ 是连接权重,$O_i$ 是输入层或者隐层的输出值。
误差函数采用均方误差(MSE)或交叉熵(Cross-entropy)。
均方误差定义为:$$E=\frac{1}{2}\sum\limits_{k=1}^n(y_k-\hat{y}_k)^2$$其中,$n$ 是输出节点数,$y_k$ 是期望输出,$\hat{y}_k$ 是神经网络的输出。
交叉熵定义为:$$E=-\sum\limits_{k=1}^n y_k\log\hat{y}_k+(1-y_k)\log(1-\hat{y}_k)$$误差反向传播算法的具体步骤如下:1. 小批量随机采样训练集;2. 前向传播,计算每个节点的输出值,得到整个网络的输出值;3. 根据误差函数,计算整个网络的误差;4. 求出每个节点的误差,即计算偏导数$\frac{\partial E}{\partial O_j}$;5. 根据链式法则,求出每个连接的误差,即计算偏导数$\frac{\partial E}{\partial w_{ji}}$;6. 利用梯度下降法,更新每个连接的权值,有公式$w_{ji}\leftarrow w_{ji}-\eta\frac{\partial E}{\partial w_{ji}}$,其中$\eta$为学习率。
前馈神经网络与反向传播算法

前馈神经网络与反向传播算法在单层感知器的基础上,引入隐藏层即可得到多层感知器和深度神经网络,结构如下在上述网络中,信号从输入层开始,经过线性组合和激活函数的处理,输入到下一层的神经元,信号依次经过各个隐藏层的处理,最终输出到输出层,这样的信号传递是一个正向传递的过程,这种结构的神经网络称之为前馈神经网络。
对比循环神经网络RNN, 更能体会前馈神经网络的这一特性在RNN中,存在一层循环神经元,信号在自身进行递归,而前馈神经网络中信号是层层传递的,从输入层依次传输到输出层。
对于前馈神经网络而言,其参数训练的过程通过反向传播算法来实现。
反向传播,对应的英文为Back proprgation, 与前馈神经网络中信号的正向传递相对应,图示如下反向传播算法将均方误差作为模型训练的代价函数,本质上是梯度下降法。
和信号从输入层到隐藏层到输出层的正向传播相反,误差值从输出层传递到隐藏层再到输入层,这也是其名称中反向传播的由来。
下面通过一个实际的例子来感受下反向传播算法,神经网络结构如下在输入层和隐藏层中,每一层都添加了一个值为1的神经元,这样的神经元称之为bias, 类比线性拟合中随机误差对应的常数项。
首先随机初始化各条边的权重值,结果如下神经网络训练的目标是调整各条边的权重,使得模型输出值与真实值o1,o2的误差最小。
类比机器学习,这个目标可以用损失函数来定量描述,这里采用均方根误差。
根据初始权重值,通过正向传播,可以计算隐藏层h1和h2的值,这里激活函数采用sigmod函数,计算过程如下接着计算输出层的输出根据输出层的计算结构和真实值的差异,可以计算损失函数的值接下来进行反向传播,对于神经网络而言,由于其参数很多,损失函数的求解通过梯度下降法来实现。
以w5这个权重为例,根据链式法则,其偏导数如下依次计算链式展开的各个子项,结果如下学习率设定为0.5,则更新后的w5参数值计算如下其他隐藏层的权重值计算过程是一样的,隐藏层计算完之后,再传播到输入层,按照同样的方式来调整输入层的权重。
一文看懂神经网络中的反传算法

一文看懂神经网络中的反传算法神经网络中的反向传播算法是深度学习中至关重要的一环。
它是一种用于训练人工神经网络的机器学习算法,通过计算误差梯度来更新网络的权重,从而使得网络能够逐渐优化学习并提高预测准确性。
本文将从神经网络结构、反向传播算法原理以及实际案例分析等方面,深入解析神经网络中的反向传播算法。
神经网络结构神经网络是一种受生物神经元启发的人工智能模型,其基本结构由输入层、隐藏层和输出层组成。
输入层接收外部输入数据,隐藏层通过一系列的加权求和和激活函数处理来自输入层的信息,最终输出层将处理后的结果呈现为具体的输出。
这种结构使得神经网络能够学习并理解输入数据的复杂关系,并做出相应的预测。
反向传播算法原理反向传播算法是神经网络中用于训练模型的关键步骤。
其基本思想是通过计算预测输出与实际输出之间的误差,然后沿着网络的反向方向逐层计算梯度并更新权重,以最小化误差并提高模型的预测准确性。
具体来说,反向传播算法利用链式法则计算每一层的误差对权重的影响,然后利用梯度下降法更新权重,使得网络逐渐收敛于最优解。
实际案例分析举例来说,假设我们要训练一个简单的神经网络来识别手写数字。
首先,我们将输入一张手写数字的图像,经过神经网络的前向传播过程,得到模型的预测输出。
然后,通过比较预测输出和实际标签的差异,计算出误差。
接着,利用反向传播算法计算每一层的梯度,并更新权重以减小误差。
重复这个过程直到模型收敛并能够准确地识别手写数字为止。
结语通过本文的介绍,我们对神经网络中的反向传播算法有了更深入的了解。
神经网络的反向传播算法不仅在图像识别、自然语言处理等领域具有广泛应用,而且其核心原理也为深度学习的发展提供了重要的理论基础。
相信随着技术的不断发展,神经网络的反向传播算法将继续在各个领域发挥重要作用,推动人工智能技术的进一步进步与发展。
神经网络之反向传播算法(BP)公式推导(超详细)

神经⽹络之反向传播算法(BP)公式推导(超详细)反向传播算法详细推导反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是⼀种与最优化⽅法(如梯度下降法)结合使⽤的,⽤来训练⼈⼯神经⽹络的常见⽅法。
该⽅法对⽹络中所有权重计算损失函数的梯度。
这个梯度会反馈给最优化⽅法,⽤来更新权值以最⼩化损失函数。
在神经⽹络上执⾏梯度下降法的主要算法。
该算法会先按前向传播⽅式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的⽅式计算损失函数值相对于每个参数的偏导数。
我们将以全连接层,激活函数采⽤Sigmoid函数,误差函数为Softmax+MSE损失函数的神经⽹络为例,推导其梯度传播⽅式。
准备⼯作1、Sigmoid 函数的导数回顾sigmoid函数的表达式:\sigma(x) = \frac{1}{1+e^{-x}}其导数为:\frac{d}{dx}\sigma(x) = \frac{d}{dx} \left(\frac{1}{1+e^{-x}} \right)= \frac{e^{-x}}{(1+e^{-x})^2}= \frac{(1 + e^{-x})-1}{(1+e^{-x})^2}=\frac{1+e^{-x}}{(1+e^{-x})^2} - \left(\frac{1}{1+e^{-x}}\right)^2= \sigma(x) - \sigma(x)^2= \sigma(1-\sigma)可以看到,Sigmoid函数的导数表达式最终可以表达为激活函数的输出值的简单运算,利⽤这⼀性质,在神经⽹络的梯度计算中,通过缓存每层的 Sigmoid 函数输出值,即可在需要的时候计算出其导数。
Sigmoid 函数导数的实现:import numpy as np # 导⼊ numpydef sigmoid(x): # sigmoid 函数return 1 / (1 + np.exp(-x))def derivative(x): # sigmoid 导数的计算return sigmoid(x)*(1-sigmoid(x))2、均⽅差函数梯度均⽅差损失函数表达式为:L = \frac{1}{2}\sum_{k=1}^{K}(y_k-o_k)^2其中y_k为真实值,o_k为输出值。
fpn前向传播和反向传播的公式

fpn前向传播和反向传播的公式下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!FPN(Feature Pyramid Network)是一种广泛应用于计算机视觉领域的神经网络架构。
神经网络中的反向传播算法

神经网络中的反向传播算法神经网络是一种模仿人脑神经元工作原理的计算模型,具有自主学习和适应能力,已经成为人工智能领域的前沿技术。
然而,神经网络的训练过程需要大量的数据和时间,常常考验着研究人员的耐心和智慧。
其中最重要的一个算法就是反向传播算法,本文将从以下几个方面进行探讨。
一、神经网络的基本结构及工作原理神经网络是由大量人工神经元构成的,每个神经元接收来自其他神经元的输入信号,通过非线性函数(如sigmoid函数)进行加权求和,并生成一个输出信号。
神经网络通常由输入层、隐藏层和输出层组成,其中输入层通过传递输入信号激活隐藏层,隐藏层通过传递激活后的信号影响输出层。
每层神经元都会有一组权重,用于控制输入信号在这一层中的传播和计算。
而反向传播算法就是通过不断调整神经元间相关的权重,来最小化神经网络对训练数据的误差。
二、反向传播算法的基本思想反向传播算法主要分为两部分:前向传播和反向误差传播。
在前向传播过程中,输入信号会经过各个神经元的加权求和和激活函数处理,计算得到网络的输出。
而在反向误差传播过程中,首先计算网络输出误差,然后分别计算每个神经元权重对误差的贡献,最后反向传回网络,以此来更新权重。
三、反向传播算法的实现过程对于一个有n个训练样本的神经网络,我们需要不断迭代调整权重,达到优化网络的目的。
具体步骤如下:1. 首先将训练数据输入到神经网络中,得到网络输出。
2. 根据网络输出和实际标签计算误差,由于常用的误差函数是均方误差函数,所以误差可以通过网络输出与样本标签的差值平方和来计算。
3. 反向计算误差对每个神经元的输出的贡献,然后再根据误差对该神经元相应权重的贡献来计算梯度下降也就是权重的变化量。
4. 根据得到的梯度下降值,更新每个神经元的权重。
(注意反向传播需要使用到链式法则,要将误差从输出层传递回隐藏层和输入层)5. 重复步骤1到4,直到误差满足收敛条件或者达到预设的最大迭代次数。
四、反向传播算法的优化反向传播算法是一种经典的训练神经网络的方法,但是也有一些需要注意的问题。
神经网络——前向传播与反向传播公式推导

神经⽹络——前向传播与反向传播公式推导概述对于⼀个最原⽣的神经⽹络来说,BP反向传播是整个传播中的重点和核⼼,也是机器学习中的⼀个⼊门算法。
下⾯将以逻辑回归的分类问题为例,从最简单的单个神经元开始引⼊算法,逐步拓展到神经⽹络中,包括BP链式求导、前向传播和反向传播的向量化。
最后利⽤Python语⾔实现⼀个原始的神经⽹络结构作为练习。
需了解的预备知识:代价函数、逻辑回归、线性代数、多元函数微分参考:《ML-AndrewNg》神经元单个神经元是最简单的神经⽹络,仅有⼀层输⼊,⼀个输出。
【前向传播】\[z={{w}_{1}}\cdot {{x}_{1}}+{{w}_{2}}\cdot {{x}_{2}}+{{w}_{3}}\cdot {{x}_{3}}+b=\left[ \begin{matrix} {{w}_{1}} & {{w}_{2}} & {{w}_{3}} \\\end{matrix} \right]\left[ \begin{matrix} {{x}_{1}} \\ {{x}_{2}} \\ {{x}_{3}} \\ \end{matrix} \right]+b \]若激活函数为sigmoid函数,则\[\hat{y}=a =sigmoid(z) \]【代价函数】\[J(W,b)=-[y\log (a)+(1-y)\log (1-a)] \]【计算delta】\[deleta=a-y=\hat{y}-y \]【计算偏导数】\[\frac{\partial J}{\partial w}=\frac{\partial J}{\partial a}\cdot \frac{\partial a}{\partial z}=-(\frac{y}{a}+\frac{y-1}{1-a})a(a-1)=(a-y)x^T=(\hat{y}-y)x^T \]\[\frac{\partial J}{\partial b}=\frac{\partial J}{\partial a}\cdot \frac{\partial a}{\partial z}\cdot \frac{\partial z}{\partial b}=a-y=\hat{y}-y \]【更新权重】\[w = w-\alpha*\frac{\partial J}{\partial w} \]\[b = b-\alpha*\frac{\partial J}{\partial b} \]拓展到神经⽹络假设⽹络结构如上图所⽰,输⼊特征为2个,输出为⼀个三分类,隐藏层单元数均为4,数据如列表中所⽰,共20条。
神经网络的前向传播和反向传播算法解析

神经网络的前向传播和反向传播算法解析神经网络是一种模拟人脑神经系统的计算机算法,它通过构建一个包含多个神经元的网络结构,通过学习数据集,能够对未知数据进行预测和分类。
神经网络的核心算法包括前向传播和反向传播。
本文将对神经网络的前向传播和反向传播算法进行详细解析。
一、前向传播算法前向传播是神经网络中的一个重要步骤,用于将输入数据通过网络结构传递到输出层。
它是一种顺序计算的方法,通过多次迭代计算每一层的输出。
1. 输入层神经网络的输入层负责接收外部输入数据,通常为一组特征值。
输入层中的每个神经元都与下一层中的神经元相连。
2. 隐藏层隐藏层是介于输入层和输出层之间的一层或多层神经元。
每个隐藏层神经元接收上一层的输出作为输入,并通过激活函数进行处理。
激活函数通常使用ReLU(Rectified Linear Unit)或Sigmoid函数。
3. 输出层输出层负责产生神经网络的最终输出结果。
输出层的神经元数量通常与问题的类别数量相匹配。
常用的激活函数有Sigmoid函数、Softmax函数等。
4. 权重与偏置每个连接都有一个权重和一个偏置值,它们用于调整每个神经元的输入值。
权重表示神经元之间的连接强度,而偏置值则用于调整激活函数的输出范围。
在前向传播过程中,权重和偏置值会不断进行调整以优化网络的性能。
二、反向传播算法反向传播算法是神经网络中的一个关键步骤,通过计算误差来更新网络中的权重和偏置值。
它通过反向计算梯度,从输出层到隐藏层再到输入层,逐层进行参数的调整。
1. 损失函数在反向传播算法中,我们需要选择一个损失函数来度量网络的预测输出与实际输出之间的差异。
常用的损失函数包括均方误差(MSE)和交叉熵。
2. 计算梯度通过误差反向传播的方式计算梯度,即从输出层向输入层逐层计算每个神经元的梯度值。
梯度告诉我们在误差函数中,每个权重和偏置值对误差的影响程度。
3. 更新权重通过梯度下降算法,使用计算得到的梯度信息来更新网络中的权重和偏置值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FNN—Output Units—Sigmoid Units
● 所以我们选择一个更加平滑的对于基于梯度的训练更有
意义的输出单元形式,sigmoid函数,如右图,其实可以 把其看成两部分,还是先进行线性运算求出wh,然后再 对wh应用sigmoid函数,即得到(0,1)之间的p。Sigmoid函 数形式如下:
FNN—Output Units—Sigmoid Units
● 以上两个输出单元,linear unit和sigmoid unit分别用于输出是自然数或者0,1,分别 用于回归和二分类,当然还有多分类,输出单元数据服从多项式分布,多项式分布 其实是二项分布的推广,采用的输出单元是softmax unit。
监督
非监督
Deep Learning
Cognitive Science Boltzmann Machine-1983 Backpropagation-1986 Deep Learning-2006 University of California San Diego Cambridge Carnegie Mellon University University College London University of Toronto Google-2013(DNNresearch) Geoffrey Hinton-1947.12.6(age 68)
前馈神经网络(Feedforward neural networks) 模型(Model) 损失函数(Strategy-cost function) 输出单元(Strategy-output units) 隐藏单元(Strategy-hidden units) 神经网络结构(Architecture) 反向传播算法(Back propagation algorithm) 随即梯度下降(Stochastic gradient descent)
● 所以就有如下式子:
FNN—Output Units—Linear Units
我们有最大似然的概率模型推导出 这个结果,其实也解释了为什么在 训练很多线性模型得时候直接就采 用均方差作为损失函数,其实是和 模型假设以及输出结果的分布有关 的。
FNN—Output Units—Sigmoid Units
我现在理解大脑是怎样工作的了
Perceptron
● 感知机(Perceptron)由两层神经元组成,第一层
为输入层,第二层为输出层。若三个神经元的值 表示布尔值的真和假,那么感知机能容易地表示 与、或、非三个基本的布尔函数。
θ
输出层
输入层
● 感知机能表示三个基本的逻辑运算,即与或非,事实上其能力很有限,只能处理线性
784=28*28
这里可以使用softmax函数
FNN—Gradient-Based Learning
● 由于神经网络的非线性的性质导致了它和线性模型的主要差异,就是FNN的损失函数是 非凸函数,所以损失函数只能采用基于梯度的迭代的方式来优化,而不能像逻辑回归和 支持向量机一样保证收敛到最值。
● 另外凸函数在给定任意初始参数的时候都能保证收敛,但是FNN的损失函数是非凸函数, 它对于初始化参数是敏感的,整个网络不同的初始化权值可能得到不同的优化结果,其实 就是落入了不同的局部最小值。一般来说训练FNN初始化权值为较小的随机数。当然也有 专门的算法,这里不展开,其主要目的是为了避免梯度消失现象。 ● 所以现在重点就是明白神经网络的训练策略,也是基于损失函数的梯度下降,从这个角度 看来它和SVM和LR也没什么太大的不同,就是梯度的形式要复杂一些。
FNN—Goal
● 训练学习一个FNN的目的是近似 一个函数 f* ,例如训练一个分类器:
y = f*( x )
这个分类器将输入x映射到类别y, 而FNN也是定义一个映射:
y = f ( x; θ )
所以我们训练的目的就是学习参数θ, 使得 f 能最大程度的逼近 f * ,这里的 参数其实就是权值。在训练FNN时, 训练数据(training data)会提供给我们 来自 f * 的有噪声的近似样本。每个 样本 x 都有一个类别标签 y ,每一 个训练样本(x, y)直接指定了给定输 入下输出层的输出 。但是其他层的 神经元表现却不是由训练样本直接决定 的,这就要求FNN的训练算法必须确定 怎么使用隐藏层来逼近函数 f * 使得整 个网络产生正确的输出。
Feedforward Neural Networks
江南大学-数媒学院-许鹏
Outline
深度学习概况(Deep learning) 神经元模型(Neuron model) 感知机(Perceptron) 感知机训练(Perceptron training) 多层感知机(Multi-Layer Perceptrons)
Θ=-1
例:训练一个能完成与逻辑运算的感知机的权值,设η为0.5。 随机初始化三个权值分别为 -0.5,0.6,0.6,则训练样例为((-1,1,-1),-1),((-1,-1,+1),-1) ((-1,+1,+1),+1), ((-1,-1,-1),-1)
Multi-Layer Perceptions(MLPs)
一下式子:
wh
● 为了满足概率p的限制条件,我们仍然使用线性单元,
但是限制它输出的范围,即最后wh大于1的部分都看 成是1,小于0的部分看为是0,其余部分不变,以这 个结果作为p的值。如下式和右图:
● 虽然这个形式满足了条件,但是可由图中看出,这种形式的输出单元是无法有效的训练神
经网络的,因为如果wh的值不在(0,1)范围内,那么梯度就为0, 这对于参数训练没有意义。
FNN—Output Units—Linear Units
● 一种简单的输出单元形式是线性单元,即这种unit没有非线性变换,假设输出层的前一层的 权值为w,神经元输出为h,则输出就是一个
……
……
……
中间层
输入层/第一层
FNN—Output Units—Linear Units
● 右图加了一层隐层,则实现了异或的效果,实际上
加这一层的效果是使得整个神经网络模型所表示的 函数由线性变成了非线性。
0.5 输出层 1 1
● 假如没有激活函数的存在,即使是多层神经网络,
每一层传递到下一层后直接用结果作为再下一层的 输入,那么整个模型还是线性的。但是激活函数的 引用使得神经网络模型的表征能力很强,任意函数 可以被一个四层的神经网络以任意精度逼近。
Deep Learning
浅层结构:
支持向量机(SVM) 逻辑回归(LR) 高斯混合模型(GMM) ……
模型有一层到两层非线性 变换,属于传统机器学习 一般会结合特征选择或者 降维方法等方法进行数据 预处理。
深度结构: 前馈神经网络(FNN) 卷积神经网络(CNN) 循环神经网络(RNN) 深度置信网络(DBN) 深度玻尔兹曼机(DBM) 对抗神经网络(Adversarial Nets) …… 模型有多层非线性变换, 属于深度学习,一般会在 网络的前几层进行类似特 征学习的工作,最后几层 和传统机器学习一样,可 以进行二分类,多分类和 回归问题。
0.5 1
0.5
1
隐层
● 注意这里激活函数的选取不是唯一的,到目前为止
我们一直选择了阶跃函数,它直观易于理解,但是 在学习多层网络模型的时候往往选择其他可微的激 活函数。另外多层感知机可以有任意多层,每一层 有任意多个神经元,其实一个大型的网络就是一个 复杂的函数,完成了一个映射工作,由输入向量映 射到输出向量。
cost function
Gradient-Based Learning algorithm
output units
hidden units
Architecture
FNN—Cost Function
第一个式子其实是一个联合概率分 又因为这些样本是独立同分布的, 所以才可以写成第二个式子相乘的 形式。为了求解方便,对函数取对 数,取对数以后不会影响最大值的 求解。
FNN—Cost Function
● 最大似然估计能够很自然地推广到条件概率p(y | x; θ)的最大似然估计,这种条件概率的情况 太常见了,因为这是监督学习的基础,X代表输入,Y代表观察结果。所以这时候的条件概率 的最大似然估计就是:
i.i.d.的m个样本
● 注意:讨论到现在我们其实还对cost function的具体形式一无所知,只是明白了要采用最大似然 估计的思想,导出了无论是负对数似然还是交叉熵的最小化都是对损常函数的最小化,并且在 最小化损失函数的时候要采用基于梯度下降的方法。 我们在一开始接触感知机的时候假设了神经元的激活函数是一个阶跃函数,可是在真正设计一 神经网络的时候,又可以分为隐藏神经元(hidden units)的输出形式和输出神经元(outputs units)的 输出形式,还有输出神经元服从的概率分布,这些都直接决定着cost function的具体形式。
问题,即感知机只能表示线性可分训练样本集对应的逻辑运算,同或和异或逻辑运算的 训练样本集是非可分的,所以它们不能由简单的两层感知机表示。
同或运算
+
异或运算
+ -
+
+
-
Perceptron Training Rule
输出层
● 对于训练样例 (x, y),若当前感知机输出为
感知机权重将这样调整:
则
输入层
输出层/第四层
第二隐层/第三层
RNN
第一隐层/第二层
输入层/第一层
FNN是一个有向无环图(directed acyclic graph)
● 之所以叫前馈神经网络是因为信息由输入层x通过函数向前流动到输出层y, y没有反馈连接使得模型的输出重新反馈为输入的一部分。如果模型扩展添 加了反馈连接,那么这种网络就叫递归神经网络(Recurrent neural networks)