
- 外文名
- Neural Networks,NN
- 反映
- 人脑功能的许多基本特征
- 中文名
- 神经网络模型
- 性 质
- 数学方法
-
2021-03-03 09:32:29
神经网络基本原理
文章目录
前言
神经网络是一门重要的机器学习技术,它是目前最为火热的研究方向----深度学习的基础。本文以一个生活中的小场景切入,不去调用别人训练好的神经网络模型,手撸每一行代码,详细的介绍了人工神经网络的本质基本原理。
一、神经网络是什么?
神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
1.1 神经网络的分类
- 前馈神经网络:在网络中,当前层的输入只依赖于前一层的节点输出,与更早的网络输出状态无关;
- 反馈神经网络:将输出经过一步时移再接入到输入层,输入不仅仅取决于上一层节点的输出
图1-1 神经网络的分类 1.2 神经网络结构图
一个经典的神经网络,一般包含三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元。
图1-2 神经网络结构图 几点说明:
1️⃣ 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
2️⃣ 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
3️⃣ 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。1.3 神经元
下图为生物神经网络中一个神经元。
图1-3 生物神经元基本结构图 我们的人工神经网络也可以类比生物神经网络,神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。
下图是一个典型的神经元模型:包含有3个输入,1个输出,以及2个计算功能。中间的箭头线称为“连接”,每个箭头线上都有一个“权值”。一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。
图1-4 神经元计算 我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成aw,因此在连接的末端,信号的大小就变成了aw,最终神经元计算得到的输出信号z=g(a1w1+a2w2+a3*w3)。
1.4 为什么神经网络能预测?
从宏观上来理解:根据历史数据(即训练集),利用神经网络,建立从输入到输出之间的映射关系,并且假定该映射关系在未知的预测集上也同样成立,从而在给定预测集输入的基础上给出输出,实现预测。
具体到上图的神经元模型就是利用三个已知属性的值a1,a2,a3,通过神经元计算公式,计算出未知属性的值z。这里,已知的属性称之为特征,未知的属性称之为目标。假设特征与目标之间确实是线性关系,并且我们已经得到表示这个关系的权值w1,w2,w3(训练集训练得到的)。那么,在遇到未知数据集时,我们就可以输入未知数据集的特征(已知属性a1,a2,a3),通过神经元模型预测新样本的目标(未知属性z)。
二、 一个最简单的神经网络模型
人脑中的神经网络是一个非常复杂的组织,成人的大脑中估计有1000亿个神经元之多。今天我们只用一个神经元对案例中的问题进行信息处理。
1.去不去爬山?
为了能说清楚神经网络的本质和实际意义,我们首先引入生活中的一个场景——去不去爬山?
小A、小B、小C、小D是登山爱好者,经常相约一起去爬山。我们用数字“1”表示去爬山了,数字“0”表示没去爬山,前五次的结果如下表:小A 小B 小C 小D 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 今天四个人又相约去爬山,结果如下:
小A 小B 小C 小D 0 1 0 ? 现在我们根据上面的几组数据找一下规律,预测下小D今天去不去爬山呢?
我们可能已经发现了,小D是不是喜欢小B呢?因为每次小B去,小D也会去。今天小B决定去爬山,所以我们预测小D也会去爬山。刚刚我们动用了1000亿个神经元的人脑神经网络对上述问题进行信息收集、处理和计算,最终得到小D会去爬山的结果,待会我们用只有一个神经元的人工神经网络对上述问题进行预测。
2.案例代码
针对上述问题,我们构建一个最简单的神经网络对小D今天是否去爬山做个预测。
2.1 引入类库
from numpy import array,exp,random,dot
2.2 创建数据
然后创建一个矩阵X,将小A、小B、小C三个人前五次的数据放到矩阵中去;创建一个装置矩阵y,将小D前五次的数据放到矩阵中去。注意矩阵X是3x5的,所以这里需要将1x5的矩阵y转置一下成5x1的矩阵,才能进行矩阵运算。
X = array([[0,1,0],[1,1,0],[1,0,1],[0,0,1],[0,1,1]]) y = array([[1,1,0,0,1]]).T
2.3 初始假设
下面利用随机数做一个假设,假设小D去不去爬山与小A、小B、小C三人去不去爬山的相关关系的数值(权重)为weights。
random.seed(1) weights = 2 * random.random((3,1))-1
2.4 神经元计算
接下来进入循环,使用假设的weights算出output(output数值越接近“0”,代表小D去不去爬山的可能性越大,output数值越接近“1”,代表小D去爬山的可能性越大),前五次小D的数据y - 利用假设关系得到的output数值=得到误差 error,通过循环不断调整假设关系weights,减小误差,最终得到误差最小的一组关系系数weights。
for it in range(100000): output = 1/(1+exp(-dot(X,weights))) error = y - output delta = error * output *(1-output) weights += dot(X.T,delta)
2.5 运行结果
为了便于理解中间数据的计算过程,这里我们可以打印下“error”和“weights”的计算结果
最后根据上面得到的关系系数weights,预测今天(第六次)小D去爬山的概率print("误差为:\n",error) print("相关系数为:\n",weights) climbing_probability = 1/(1+exp(-dot([[0,1,0]],weights))) print("小D会去爬山的概率为:\n",climbing_probability)
运行结果如下:
图2-1 运行结果图 可以看出小D去不去爬山与小A去不去爬山的相关系数为-1.5662,与小B去不去爬山的相关系数为11.31693,与小C去不去爬山的相关系数为-5.56755,小D今天(第六次)去爬山的概率为0.999。
2.6 小结
上述过程可以概述为以下几个步骤:
图2-2 代码流程 3.神经网络的自我学习
对于上述问题,我们经过简单的分析我们也可以写下面一段程序,同样也可以准确预测小D今天(第六次)去不去爬山。
if(小B去) 小D去 else 小D不去
这样一看,好像这种方法更简单呢。但是这种代码是死的,不会根据数据的变化自我学习。如果数据集变成下面这样的:
小A 小B 小C 小D 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 ? 通过我们人脑神经网络分析,小D好像移情别恋喜欢上小A了,因为小D去不去爬山跟小A去不去爬山的关系非常大,跟小B去不去爬山几乎没什么关系,而今天(第六次)小A不去爬山,从而我们预测今天(第六天)小D也不去爬山。所以上述简单的if,else判断程序很显然就不适用于新场景了,那么神经网络是如何自我学习的呢?
我们把数据集替换下,新数据集下神经网络预测的结果是否和我们人脑预测的一致呢?
from numpy import array,exp,random,dot X = array([[0,1,0],[1,1,0],[0,0,0],[0,0,1],[1,0,1]]) y = array([[0,1,1,0,1]]).T random.seed(1) weights = 2 * random.random((3,1))-1 for it in range(100000): output = 1/(1+exp(-dot(X,weights))) error = y - output delta = error * output *(1-output) weights += dot(X.T,delta) climbing_probability = 1/(1+exp(-dot([[0,1,0]],weights))) print("误差为:\n",error) print("相关系数为:\n",weights) print("小D会去爬山的概率为:\n",climbing_probability)
预测结果如下:
图2-3 新数据集预测结果图 可以看出,即使替换了数据集,神经网络因为具有自我学习的能力,所以仍然具有很好的预测效果。
总结
各位的鼓励就是我创作的最大动力,如果哪里写的不对的,欢迎评论区留言进行指正,如有收获请给博主一个免费的赞鼓励下呗📝
————————————————
版权声明:本文为CSDN博主「放点花椒~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/N2O_666/article/details/113992551更多相关内容 -
神经网络模型结构图.visio格式
2021-01-18 16:09:54三个用visio画的神经网络模型结构图,保存一下,下次直接可以修改。 -
25种人工神经网络模型matlab源码
2017-04-21 20:39:1725种人工神经网络模型matlab源码 -
(周开利)神经网络模型及其MATLAB仿真程序设计PDF
2012-06-06 09:49:226.4 径向基网络的MATLAB仿真程序设计 第7章 竞争型神经网络 7.1 竞争型神经网络模型 7.2 竞争型神经网络的学习 7.3 竞争型神经网络存在的问题 7.4 竞争型神经网络的MATLAB仿真程序设计 第8章 自组织神经网络 8.1 自... -
神经网络模型分类总结
2021-11-28 19:55:27一般的,神经网络模型基本结构按信息输入是否反馈,可以分为两种:前馈神经网络和反馈神经网络。 1.1 前馈神经网络 前馈神经网络(Feedforward Neural Network)中,信息从输入层开始输入,每层的神经元接收前一级...一、神经网络类别
一般的,神经网络模型基本结构按信息输入是否反馈,可以分为两种:前馈神经网络和反馈神经网络。
1.1 前馈神经网络
前馈神经网络(Feedforward Neural Network)中,信息从输入层开始输入,每层的神经元接收前一级输入,并输出到下一级,直至输出层。整个网络信息输入传输中无反馈(循环)。即任何层的输出都不会影响同级层,可用一个有向无环图表示。
常见的前馈神经网络包括卷积神经网络(CNN)、全连接神经网络(FCN)、生成对抗网络(GAN)等。
1.2 反馈神经网络
反馈神经网络(Feedback Neural Network)中,神经元不但可以接收其他神经元的信号,而且可以接收自己的反馈信号。和前馈神经网络相比,反馈神经网络中的神经元具有记忆功能,在不同时刻具有不同的状态。反馈神经网络中的信息传播可以是单向也可以是双向传播,因此可以用一个有向循环图或者无向图来表示。
常见的反馈神经网络包括循环神经网络(RNN)、长短期记忆网络(LSTM)、Hopfield网络和玻尔兹曼机。
二、经典神经网络模型介绍
全连接神经网络(FCN)
全连接神经网络是深度学习最常见的网络结构,有三种基本类型的层: 输入层、隐藏层和输出层。当前层的每个神经元都会接入前一层每个神经元的输入信号。在每个连接过程中,来自前一层的信号被乘以一个权重,增加一个偏置,然后通过一个非线性激活函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。
卷积神经网络(CNN)
图像具有非常高的维数,因此训练一个标准的前馈网络来识别图像将需要成千上万的输入神经元,除了显而易见的高计算量,还可能导致许多与神经网络中的维数灾难相关的问题。卷积神经网络提供了一个解决方案,利用卷积和池化层,来降低图像的维度。由于卷积层是可训练的,但参数明显少于标准的隐藏层,它能够突出图像的重要部分,并向前传播每个重要部分。传统的CNNs中,最后几层是隐藏层,用来处理“压缩的图像信息”。
残差网络(ResNet)
深层前馈神经网络有一个问题,随着网络层数的增加,网络会发生了退化(degradation)现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当再增加网络深度的话,训练集loss反而会增大。为了解决这个问题,残差网络使用跳跃连接实现信号跨层传播
生成对抗网络(GAN)
生成对抗网络是一种专门设计用于生成图像的网络,由两个网络组成: 一个鉴别器和一个生成器。鉴别器的任务是区分图像是从数据集中提取的还是由生成器生成的,生成器的任务是生成足够逼真的图像,以至于鉴别器无法区分图像是否真实。随着时间的推移,在谨慎的监督下,这两个对手相互竞争,彼此都想成功地改进对方。最终的结果是一个训练有素的生成器,可以生成逼真的图像。鉴别器是一个卷积神经网络,其目标是最大限度地提高识别真假图像的准确率,而生成器是一个反卷积神经网络,其目标是最小化鉴别器的性能。
变分自动编码器(VAE)
自动编码器学习一个输入(可以是图像或文本序列)的压缩表示,例如,压缩输入,然后解压缩回来匹配原始输入,而变分自动编码器学习表示的数据的概率分布的参数。不仅仅是学习一个代表数据的函数,它还获得了更详细和细致的数据视图,从分布中抽样并生成新的输入数据样本。
Transformer
Transformer是Google Brain提出的经典网络结构,由经典的Encoder-Decoder模型组成。在上图中,整个Encoder层由6个左边Nx部分的结构组成。整个Decoder由6个右边Nx部分的框架组成,Decoder输出的结果经过一个线性层变换后,经过softmax层计算,输出最终的预测结果。
循环神经网络 (RNN)
循环神经网络是一种特殊类型的网络,它包含环和自重复,因此被称为“循环”。由于允许信息存储在网络中,RNNs 使用以前训练中的推理来对即将到来的事件做出更好、更明智的决定。为了做到这一点,它使用以前的预测作为“上下文信号”。由于其性质,RNNs 通常用于处理顺序任务,如逐字生成文本或预测时间序列数据(例如股票价格)。它们还可以处理任意大小的输入。
长短期记忆网络(LSTM)
LSTM结构是专门为解决RNN在学习长的的上下文信息出现的梯度消失、爆炸问题而设计的,结构中加入了内存块。这些模块可以看作是计算机中的内存芯片——每个模块包含几个循环连接的内存单元和三个门(输入、输出和遗忘,相当于写入、读取和重置)。信息的输入只能通过每个门与神经元进行互动,因此这些门学会智能地打开和关闭,以防止梯度爆炸或消失。
Hopfield网络
Hopfield神经网络是一种单层互相全连接的反馈型神经网络。每个神经元既是输入也是输出,网络中的每一个神经元都将自己的输出通过连接权传送给所有其它神经元,同时又都接收所有其它神经元传递过来的信息。
-
神经网络模型介绍
2019-04-03 22:44:14本文在介绍神经网络算法模型基础知识的同时,详细阐述了正向传播神经网络的计算过程。 斯坦福大学教授Andrew Ng(吴恩达)在Coursera网课平台上开设的Machine Learning课程,非常适合机器学习新手入门,看过之后有...本文在介绍神经网络算法模型基础知识的同时,详细阐述了正向传播神经网络的计算过程。
斯坦福大学教授Andrew Ng(吴恩达)在Coursera网课平台上开设的Machine Learning课程,非常适合机器学习新手入门,看过之后有种豁然开朗的感觉。但这门课程是英文讲解的,况且对于快速理解神经网络算法来讲,观看视频课程全面学习Machine Learning的知识体系,效率自然不如阅读专题文章。这是我花费精力写这篇文章的主要原因。本文结构与算法描述方式也主要借鉴于Andrew Ng的课程。只是在细节的地方做了些调整和补充。在这里提前做出说明,避免误被控诉为抄袭。
写本文之前,我查阅了大量网络上相关的文章。发现这些文章大多存在两个极端:一部分太注重于解释神经网络的感性理解,忽略了数学基础,太过简单;另一部分则又过于学术化,大量的复杂公式推导,让很多感兴趣的读者望而却步。我以为,尽管神经网络听上去很深奥,但其实要理解并掌握它的算法原理,并非那么困难。因此,本文想要从感性理解和理性认知两者中间找到合适的平衡,暂且跳过复杂的参数求解过程,从简单的理论出发,一步步阐述神经网络的基本计算方式,让读者可以快速对神经网络算法有个比较直观的认识。
建议英文基础较好,并且有精力的读者学习Andrew的这门课程,我将链接附在这里:https://www.coursera.org/learn/machine-learning
1.神经网络算法的创造缘由
在基础机器学习中,Linear Regression和Logistic Regression都能够拟合输入和输出之间的定量关系,并根据新的输入预测输出值或者进行分类。那为什么还需要神经网络这样的复杂算法呢?主要有两方面的原因:一是现实生活中的很多问题并非线性的。二是在Linear Regression和Logistic Regression模型中,当输入特征的数量比较大时,模型参数的解算效率会非常低。并且随着输入特征数量的增长,参数解算效率以指数形式降低,非常不利于模型学习和应用。
1.1 非线性问题
非线性问题比线性问题要复杂的多,但却是现实世界中的最常见的问题形式。对于非线性问题,Linear Regression和Logistic Regression不能达到很好的效果。简单举个例子。假设有两个输入要素,分别是 x 1 , x 2 ∈ R x_1, x_2 ∈ R x1,x2∈R,下图表示了 x 1 x_1 x1和 x 2 x_2 x2构成的两个不同类别的点分布情况。可以看到,这两个类别是没有办法用一条直线进行分割的。现为了区分开这两个类别,在Logistic Regression模型中,就需要引入高阶变量,例如 x 1 x 2 , x 1 2 x 2 , x 1 x 2 2 x_1x_2, x_1^2x_2, x_1x_2^2 x1x2,x12x2,x1x22等等作为新的输入要素加入模型,这首先会带来输入要素的数量增加,且高阶变量自然会让模型变得更加复杂,同时容易引起Overfitting的问题。
1.2 大量特征带来的问题
除了上面讲到的非线性问题导致的特征数量增多的情况,现实生活中的很多问题,其特征本来就是非常多的。计算机视觉问题就是典型的例子。图像通过像素矩阵来表示现实世界的物体,像素矩阵中的点往往非常多,将这些像素点的值作为特征输入模型,庞大的特征数量是显而易见的。而当特征数量上升时,线性回归和逻辑回归模型会让求解变得非常慢。事实上,这个关系根据使用的输入特征阶数的不同,线性回归和逻辑回归模型的参数求解会有 O ( n 2 ) 、 O ( n 3 ) O(n^2)、O(n^3) O(n2)、O(n3)等时间复杂度。传统的输入特征为1~1000时尚可接受,而一个普通 50 ∗ 50 50*50 50∗50的灰度图像像素矩阵,输入特征都是2500个,更别说更大、更复杂的图像了,
2.神经网络模型表示
2.1 神经网络的结构和数学定义
(1)模型结构
神经网络模型包含三个部分:input layer(输入层)、hidden layer(中间层或隐藏层)、output layer(输出层)。其中,hidden layer的层数不固定,在某些简单问题中,hidden layer的层数可能为0,仅有input layer和output layer;在复杂问题中,hidden layer的层数也可能成百上千。
模型中每一层的节点称为“神经元”。位于input layer的神经元对应着训练数据的特征。hidden layer和output layer中的神经元由activation function(激活函数)表达,我们用字母 g g g表示。Activation function有很多种类型,最常用是sigmoid函数,它的表达式如下:
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+e−x1
sigmoid函数图像如下图所示。当 x > > 0 x>>0 x>>0时, f ( x ) f(x) f(x)无限逼近于1;当 x < < 0 x<<0 x<<0时, f ( x ) f(x) f(x)无限逼近于0;当 x = 0 x=0 x=0时, f ( x ) = 0.5 f(x)=0.5 f(x)=0.5。(2)训练样本数据
为了深入阐述神经网络模型算法过程,我们来定义一些需要用到的数学变量和符号。
我们用 x x x表示输入的特征向量, x i x_i xi表示单独的特征变量。 y y y表示真实类别标签向量, y i y_i yi对应单独的真实类别,为了简单起见,我们先从二元分类讲起,也就是说 y ∈ { 0 , 1 } y∈\{0,1\} y∈{0,1}。假如,我们想训练一个神经网络模型,根据房子的某些特征自动判断该房子是否为别墅,那么特征向量 x x x就可以表示为:
x = [ x 1 = 卧 室 数 目 x 2 = 客 厅 面 积 x 3 = 总 体 面 积 . . . ] x=\begin{bmatrix}x_1=卧室数目\\x_2=客厅面积\\x_3=总体面积\\...\end{bmatrix} x=⎣⎢⎢⎡x1=卧室数目x2=客厅面积x3=总体面积...⎦⎥⎥⎤
其中,卧室数目、客厅面积、总体面积等等数据都是特征变量,它们共同衡量了房子的属性。并且,我们定义当 y = 1 y=1 y=1时,表示该房子为别墅;当 y = 0 y=0 y=0时,表示房子为其他类型。这样,我们就可以收集整理一些如下表所示的训练样本数据:卧室数目( x 1 x_1 x1) 客厅面积( x 2 x_2 x2 ) 总体面积( x 3 x_3 x3) … 别墅? 8 60 300 … 1 2 20 90 … 0 … … … … … 10 80 400 … 1 (3)模型数学表示
为了方便使用数学表示,我们不单独为input layer、hidden layer和output layer定义数学表示,而是使用 a = { a ( 1 ) , a ( 2 ) , a ( 3 ) , . . . , a ( n ) } a=\{a^{(1)}, a^{(2)}, a^{(3)},...,a^{(n)}\} a={a(1),a(2),a(3),...,a(n)}来表示从左到右的各个层。例如在简单的三层神经网络模型中, a ( 1 ) a^{(1)} a(1)表示输入层, a ( 2 ) a^{(2)} a(2)表示中间层, a ( 3 ) a^{(3)} a(3)表示输出层。用 θ j ( i ) \theta_j^{(i)} θj(i)来表示各层对应的权重参数, i i i表示层号, j j j表示该层中的神经元。由此,一个简单的三层神经网络模型中,各个结构的数学可以表示如下图:
2.2 Forward Propagation
我们以Forward Propagation(正向传递)计算过程为例,详细介绍神经网络模型当中的数学计算。为了简单起见,我们以下图中展示的神经网络模型为例。这里我们先暂时不介绍模型参数求解相关方法,而是假设已经计算得到了所有的模型参数值。
在这个模型中,第一层有2个神经元,分别用 x 1 , x 2 x_1, x_2 x1,x2表示;第二层包含2个神经元,分别用 a 1 ( 2 ) , a 2 ( 2 ) a_1^{(2)}, a_2^{(2)} a1(2),a2(2)表示;第三层只有1个神经元,用 h θ ( x ) h_\theta(x) hθ(x)表示(我们用 y y y表示了数据的真实类型,这里便用 h θ ( x ) h_\theta(x) hθ(x)表示模型的输出值,以示区别);各神经元之间的连接权重参数 θ \theta θ在图中有详细表示。由于神经网络模型计算需要使用到Linear Regression的参数乘积运算,而在参数乘积运算中:
h θ ( x ) = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n 其 中 , x = [ x 1 x 2 ] , θ = [ θ 0 θ 1 θ 2 ] h_\theta(x)=\theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\\ 其中,\\ x=\begin{bmatrix}x_1\\x_2\end{bmatrix}, \theta=\begin{bmatrix}\theta_0\\\theta_1\\\theta_2\end{bmatrix} hθ(x)=θTx=θ0+θ1x1+θ2x2+...+θnxn其中,x=[x1x2],θ=⎣⎡θ0θ1θ2⎦⎤
为了让 x x x和 θ \theta θ两个向量“对齐”,便于方便地使用向量运算方法表示计算过程,我们人为加入值为1的常量 x 0 x_0 x0,于是上面的式子就变为:
h θ ( x ) = θ T x = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n 其 中 , x = [ x 0 x 1 x 2 ] , θ = [ θ 0 θ 1 θ 2 ] h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\\ 其中,\\ x=\begin{bmatrix}x_0\\x_1\\x_2\end{bmatrix}, \theta=\begin{bmatrix}\theta_0\\\theta_1\\\theta_2\end{bmatrix} hθ(x)=θTx=θ0x0+θ1x1+θ2x2+...+θnxn其中,x=⎣⎡x0x1x2⎦⎤,θ=⎣⎡θ0θ1θ2⎦⎤
同样,我们也在神经网络模型中,需要进行参数乘积运算的地方加入bias神经元,如下图所示:
最后,我们假设使用的activation function为sigmoid函数,也就是 g ( x ) = s i g m o i d ( x ) g(x)=sigmoid(x) g(x)=sigmoid(x),于是Forward Propagation的计算过程如下:-
计算第一层变量与对应参数的乘积,作为第二层的输入。
( θ 1 ( 1 ) ) T x = θ 10 ( 1 ) x 0 + θ 11 ( 1 ) x 1 + θ 12 ( 1 ) x 2 ( θ 2 ( 1 ) ) T x = θ 20 ( 2 ) x 0 + θ 21 ( 1 ) x 1 + θ 22 ( 1 ) x 2 (\theta_1^{(1)})^Tx=\theta_{10}^{(1)}x_0+\theta_{11}^{(1)}x_1+\theta_{12}^{(1)}x_2 \\ (\theta_2^{(1)})^Tx=\theta_{20}^{(2)}x_0+\theta_{21}^{(1)}x_1+\theta_{22}^{(1)}x_2 (θ1(1))Tx=θ10(1)x0+θ11(1)x1+θ12(1)x2(θ2(1))Tx=θ20(2)x0+θ21(1)x1+θ22(1)x2 -
使用sigmoid函数计算第二层中各神经元的值:
s i g m o i d ( θ T x ) = 1 1 + e − θ T x a 1 ( 2 ) = s i g m o i d ( θ 1 ( 1 ) ) T x a 2 ( 2 ) = s i g m o i d ( θ 2 ( 1 ) ) T x sigmoid(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} \\ a_1^{(2)}=sigmoid(\theta_1^{(1)})^Tx \\ a_2^{(2)}=sigmoid(\theta_2^{(1)})^Tx sigmoid(θTx)=1+e−θTx1a1(2)=sigmoid(θ1(1))Txa2(2)=sigmoid(θ2(1))Tx -
将第二层计算结果与对应参数的乘积,作为第三层的输入:
( θ 1 ( 2 ) ) T a = θ 10 ( 2 ) a 0 ( 2 ) + θ 11 ( 2 ) a 1 ( 2 ) + θ 12 ( 2 ) a 2 ( 2 ) (\theta_1^{(2)})^Ta=\theta_{10}^{(2)}a_0^{(2)}+\theta_{11}^{(2)}a_1^{(2)}+\theta_{12}^{(2)}a_2^{(2)} (θ1(2))Ta=θ10(2)a0(2)+θ11(2)a1(2)+θ12(2)a2(2) -
使用sigmoid函数计算第三层的值:
h θ ( x ) = s i g m o i d ( ( θ 1 ( 2 ) ) T a ) = 1 1 + e − ( θ 1 ( 2 ) ) T a h_\theta(x)=sigmoid((\theta_1^{(2)})^Ta)=\frac{1}{1+e^{-(\theta_1^{(2)})^Ta}} hθ(x)=sigmoid((θ1(2))Ta)=1+e−(θ1(2))Ta1 -
根据 h θ ( x ) h_\theta(x) hθ(x)的值,做出判断。
是的,尽管神经元增加了以后,整个运算会看起来很复杂,但是模型当中的计算过程实际上就是这么简单。使用不同的activation function,只需要替换以上算法过程中的sigmoid函数就可以。增加hidden layer的层数,也不过是重复以上迭代过程而已。
2.3 神经网络模型表示逻辑关系
为什么神经网络模型按照上文介绍的计算方法,就能够表示非线性问题?下面我们通过神经网络模型表示逻辑关系的例子,来看看神经网络模型的“奇妙”之处。
逻辑关系包含“AND”、“OR”、“NOT”、“XOR”4种简单运算。现实世界中错综复杂的问题,常常可以用这些简单逻辑运算的排列组合来表达。
(1)“AND”关系的表示
“AND”关系定义为:
x 1 , x 2 ∈ { 0 , 1 } , y = x 1 A N D x 2 x_1, x_2 ∈ \{0,1\},\ \ \ \ y=x_1\ AND\ x_2 x1,x2∈{0,1}, y=x1 AND x2
只有 x 1 x_1 x1和 x 2 x_2 x2同时为1时, h θ ( x ) h_\theta(x) hθ(x)才为1,否则 h θ ( x ) h_\theta(x) hθ(x)为0。用下图所示的神经网络就可以表示“AND”关系:
图中表示的参数并不是唯一的。根据Forward Propagation,这个神经网络的计算结果可以表示为:
h θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 ) h_\theta(x)=g(-30+20x_1+20x_2) hθ(x)=g(−30+20x1+20x2)
实际上,这样的简单神经网络模型等同于logistic regression。代入 x 1 , x 2 x_1,x_2 x1,x2的值检验一下模型计算结果,可以得到如下表所示关系:x 1 x_1 x1 x 2 x_2 x2 h θ ( x ) h_\theta(x) hθ(x) 0 0 g ( − 30 ) ≈ 0 g(-30)≈0 g(−30)≈0 0 1 g ( − 10 ) ≈ 0 g(-10)≈0 g(−10)≈0 1 0 g ( − 10 ) ≈ 0 g(-10)≈0 g(−10)≈0 1 1 g ( + 10 ) ≈ 1 g(+10)≈1 g(+10)≈1 可以看到,只有 x 1 , x 2 x_1,x_2 x1,x2同时为1时, h ( θ ) h(\theta) h(θ)才能等于1。因此,这个神经网络模型正确表示出了“AND”逻辑运算。
(2)“OR”关系的表示
“OR”关系定义为:
x 1 , x 2 ∈ { 0 , 1 } , y = x 1 O R x 2 x_1, x_2 ∈ \{0,1\},\ \ \ \ y=x_1\ OR\ x_2 x1,x2∈{0,1}, y=x1 OR x2
当 x 1 x_1 x1和 x 2 x_2 x2有一个等于1时, y y y就等于1,否则 y y y等于0。我们定义一个如下图所示的神经网络模型:
这个模型同样简单,可以表示为:
h θ ( x ) = g ( − 10 + 20 x 1 + 20 x 2 ) h_\theta(x)=g(-10+20x_1+20x_2) hθ(x)=g(−10+20x1+20x2)
代入 x 1 , x 2 x_1,x_2 x1,x2,可以发现该模型能正确表示“OR”逻辑运算。具体计算结果如下表所示:x 1 x_1 x1 x 2 x_2 x2 h θ ( x ) h_\theta(x) hθ(x) 0 0 g ( − 10 ) ≈ 0 g(-10)≈0 g(−10)≈0 0 1 g ( + 10 ) ≈ 1 g(+10)≈1 g(+10)≈1 1 0 g ( + 10 ) ≈ 1 g(+10)≈1 g(+10)≈1 1 1 g ( + 10 ) ≈ 1 g(+10)≈1 g(+10)≈1 (3)“NOT”关系的表示
“NOT”即“非”或“否”,关系表示为:
x 1 ∈ { 0 , 1 } , y = N O T x 1 x_1∈ \{0,1\},\ \ \ \ y=NOT\ x_1 x1∈{0,1}, y=NOT x1
也就是当 y y y值总是 x x x值的反面。用神经网络模型表示“NOT”关系就更容易了,如下图所示:
这个神经网络可以表示为:
h θ ( x ) = g ( 10 − 20 x 1 ) h_\theta(x)=g(10-20x_1) hθ(x)=g(10−20x1)
代入 x 1 x_1 x1的值,可以发现该模型能正确表示“NOT”逻辑运算。具体计算结果如下表所示:x 1 x_1 x1 h θ ( x ) h_\theta(x) hθ(x) 0 g ( + 10 ) ≈ 1 g(+10) ≈ 1 g(+10)≈1 1 g ( − 20 ) ≈ 0 g(-20) ≈ 0 g(−20)≈0 (4)“XNOR”关系的表示
“XNOR”在中文中常被翻译为“异或”,它的数学定义如下:
x 1 , x 2 ∈ { 0 , 1 } , y = x 1 X O R x 2 x_1, x_2 ∈ \{0,1\},\ \ \ \ y=x_1\ XOR\ x_2 x1,x2∈{0,1}, y=x1 XOR x2
当 x 1 , x 2 x_1, x_2 x1,x2同为0或者同为1时, y = 1 y=1 y=1;当 x 1 , x 2 x_1, x_2 x1,x2中有一个为1,另一个为0时, y = 0 y=0 y=0。在表示“AND”、“OR”和“NOT”关系时,我们都仅仅使用了结构非常简单的神经网络模型。而在表示“XNOR”关系时,以上的简单神经网络模型就不够用了,需要加入其他的神经元。如下图所示:
我们来计算一下:
a 1 ( 2 ) = g ( − 30 + 20 x 1 + 20 x 2 ) a 2 ( 2 ) = g ( 10 − 20 x 1 − 20 x 2 ) 并 且 h θ ( x ) = a 1 ( 3 ) = g ( − 10 + 20 a 1 ( 2 ) + 20 a 1 ( 2 ) ) a_1^{(2)} = g(-30+20x_1+20x_2) \\ a_2^{(2)} = g(10-20x_1-20x_2) \\ 并且\\ h_\theta(x) =a_1^{(3)}= g(-10+20a_1^{(2)}+20a_1^{(2)}) a1(2)=g(−30+20x1+20x2)a2(2)=g(10−20x1−20x2)并且hθ(x)=a1(3)=g(−10+20a1(2)+20a1(2))同样,用表格的形式分别代入 x 1 , x 2 x_1, x_2 x1,x2的值,对应关系如下:
x 1 x_{1} x1 x 2 x_2 x2 a 1 ( 2 ) a_1^{(2)} a1(2) a 2 ( 2 ) a_2^{(2)} a2(2) h θ ( x ) h_\theta(x) hθ(x) 0 0 g ( − 30 ) ≈ 0 g(-30) ≈ 0 g(−30)≈0 g ( + 10 ) ≈ 1 g(+10) ≈ 1 g(+10)≈1 g ( + 10 ) ≈ 1 g(+10) ≈ 1 g(+10)≈1 0 1 g ( − 10 ) ≈ 0 g(-10)≈0 g(−10)≈0 g ( − 10 ) ≈ 0 g(-10)≈0 g(−10)≈0 g ( − 10 ) ≈ 0 g(-10)≈ 0 g(−10)≈0 1 0 g ( − 10 ) ≈ 0 g(-10)≈ 0 g(−10)≈0 g ( − 10 ) ≈ 0 g(-10) ≈ 0 g(−10)≈0 g ( − 10 ) ≈ 0 g(-10) ≈ 0 g(−10)≈0 1 1 g ( + 10 ) ≈ 1 g(+10) ≈ 1 g(+10)≈1 g ( − 30 ) ≈ 0 g(-30) ≈ 0 g(−30)≈0 g ( + 10 ) ≈ 1 g(+10) ≈ 1 g(+10)≈1 通过上面的几个神经网络实现逻辑运算的例子可以看出,即便是不使用中间层,神经网络就能够正确表示出“AND”、“OR”和“NOT”逻辑运算关系。“XNOR”关系的表达也仅仅只需要引入两个中间层的神经元而已。那么,当中间层的数目不断增加,神经元的数量不断增加,这些简单逻辑关系不断组合,就能够表达出错综复杂的“非线性”关系。这正是神经网络模型的奥妙之处。当然,这并不表示神经元越多、结构越复杂,就一定越好。结构越复杂,运算所需要的代价就越大。面向不同的应用、不同的数据,选择“最优”的神经网络模型结构,才是最佳策略。选择“最优”的过程实际上就是神经网络的参数调节过程,常被称为“调参”。具体如何对神经网络模型进行“调参”,本文就不作展开了,感兴趣的朋友可以通过机器学习课程,或者网络上的学习资源进行深入研究。
3. 多类别分类
上面我们讨论的都是二元分类问题,输出层只有一个神经元,输出结果要么是1,要么是0。现实世界中的分类应用要复杂的多。例如,一幅图片有可能被分类为猫、狗、大象等等类别。那么,如何用一个神经网络模型来同时得出多种不同的分类结果呢?
事实上,我们采用的策略非常简单,即在输出层中设置多个神经元,每个输出层代表一个类别。如下图所示。
在上图所示的神经网络结构中,输出层中的每个神经元都会有一个计算结果,我们综合比较每个结果数值,选择值最大的那个神经元所对应的类别,作为最终的计算类别。例如,假设我们输入某个新图像 x i x_i xi,模型计算得到如下结果:
h ( θ ) = [ 0.2 0.3 0.7 ] h(\theta)=\begin{bmatrix}0.2\\0.3\\0.7\\\end{bmatrix} h(θ)=⎣⎡0.20.30.7⎦⎤
那么,我们就取0.7那个神经元所对应的类别,作为图像 x i x_i xi的类别。这里这个类别为“大象”。本文暂且假设所有参数已知,详细介绍了神经网络内部是如何进行运算并作出类别判断的。具体涉及的cost function, gradient descent等参数求解的算法,将在未来作出补充。有较好英文基础的朋友,也可以直接学习Andrew Ng的课程视频。
-
-
【Pytorch神经网络理论篇】 06 神经元+神经网络模型+全连接网络模型
2022-03-03 15:28:25通过神经元,人工神经网络可以以数学模型模拟人脑神经元活动,继而进行高效的计算以及其他处理。 1.2 计算机中的神经元系统 1.2.1 简单的神经元系统 神经元模型便是模拟大脑神经元的运行过程,其包含输入,...1 神经元
1.1 概述
1.1.1 神经网络
神经网络:一种人工模仿动物中枢系统的数学模型,用于对函数进行近似估计
1.1.2 神经元
神经网络的基本单位是神经元。
神经元是一种处理单元,是对人脑组织的神经元的某种抽象、简化和模拟。通过神经元,人工神经网络可以以数学模型模拟人脑神经元活动,继而进行高效的计算以及其他处理。
1.2 计算机中的神经元系统
1.2.1 简单的神经元系统
神经元模型便是模拟大脑神经元的运行过程,其包含输入,输出与计算功能,输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。下图是一个典型的神经元模型:包含有m个输入,1个输出,以及2个计算功能。
1.2.2 一句话理解神经网络
所以一句话理解就是:制造一个神经网络就是在定义一个函数集合。而训练一个神经网络就是在这个函数集合中找到 唯一一个函数。这个函数代表了训练样本的共性特征。这种共性特征称为目标。
一个神经元的功能是求得输入向量与权向量的内积后,经一个非线性传递函数得到一个标量结果。
1.2.3 神经网络的形成
当前主要使用反向传播的算法将模型的误差作为刺激的信号,并沿着神经元处理信号的反方向进行逐层传播,并更新当前层中节点的权重。
1.2.4 神经网络的特点
神经网络的结构与功能,使得其天生具有编程与实现各种高级功能的能力,只不过该编程不需要通过人脑拟合现实来实现,而是通过模型学习的方式,通过现实的表象来优化其所需要的结构。
1.3 深度学习中的基础神经网络模型
- 全连接神经网络:用来处理与数值相关的任务
- 卷积神经网络:用来处理与计算机视觉相关的任务
- 循环神经网络:用来处理与序列相关的任务
1.4 神经网络(深度学习)到底是在干什么
1.4.1 玩色子
应该都接触过摇色子赌大小得游戏,微信表情包就有这个,总共有六个点数,如下:
一般电视剧里用两只碗扣在一块,里面有三个色子,最大是18点,最小是3点,所以这里暂且以11为中位数,大于等于11的为大,小于11的为小,刚好8个大点、8个小点。1.4.2 建模型
神经网络包括三个部分——输入层、隐藏层和输出层。我们建立一个神经网络模型来让机器识别我们摇出来的点数是大还是小。
先摇三个点。。。
很明显的是1+3+4 = 8 <11,
问题是隐藏层 “
”到底做了什么?该怎么做?
1.4.3 出结果
其实这个隐藏层的函数(或者叫矩阵)就是三个值为1的常数函数。
计算方式为点对点相乘然后相加(相当于深度学习里面的全连接层)
1×1+3×1+4×1 = 8 < 11,然后只需要一个判断函数就可以将“小”作为结果输出。同样:
3×1+5×1+6×1 = 14 >11,输出“大”。当然了,这个只是一个很简单的分类模型,而且只有两个分类结果。
一般用于实现数字识别或者图像识别的隐藏层比较复杂,甚至需要很多个隐藏层,分别命名为卷积层(一个模型中可能会多次使用)、池化层(一个模型中可能会多次使用)、全连接层,还会有对应的激活函数。看吧,其实就是一个很简单的模型而已,只是名字唬人罢了。
2 全连接神经网络,又称作多层感知机(MLP)
2.1 网络结构
- 输入层:[特征维度,n]
- 隐含层:权重矩阵 [输出维度,输入维度] 或者说 [这层维度,上层维度]
- 输出层:[类别数,n]
2.1.1 全连接层的本质
① 全连接神经网络的本质是将低维数据向高维数据的映射,通过增加数据所在的维度空间,使得数据变得线性可分
② 可以对任何数据进行分类,缺点是需要更多的参数进行训练。但更多的参数参与运算,将会导致训练过程难以收敛
2.2 全连接神经网络的设计思想
2.2.1 输入节点根据外部的特征数据来确定
2.2.2 隐藏层的节点数,隐藏层的数量都是可以自定义设计的,但需要遵循以下两个原则
2.2.3 设计原则
- 隐藏层的节点数决定模型的拟合能力,但是过多的节点带了拟合能力的同时,也会使得模型的泛化能力下降。
- 隐藏层的层数决定模型的泛化能力,层数越多,模型的推理能力越强,但是随着层数的变多,会对拟合效果产生影响
2.3 全连接神经网络在模型中的位置
一般处于整个深层模型的最后部分,由其具有的调节维度的作用,通过指定输入层与输出层的节点数,就可以实现从原维度向任意维度的变化,一般前后层的维度控制在5倍以内。
2.3.1 小技巧
搭建多层全连接神经网络时,对隐藏层的节点设计,应遵循先将维度扩大再缩小的方式进行,会使得模型的拟合效果更好。
-
经典神经网络模型整理
2020-07-03 01:37:32经典神经网络模型整理神经网络基础知识BP神经网络的概念单个神经元的结构CNN...本周主要对于神经网络的相关知识进行了学习,本文先整理神经网络学习中所需的一些基础知识,而后整理了四个经典的神经网络模型以作记录 -
机器学习笔记(四)BP神经网络模型
2021-01-26 21:49:02标题1、基础概念2、结构特点3、网络模型4、人工神经网络简介4.1、神经元4.2、单层神经网络4.3、双层神经网络4.4、多层神经网络5、Bp神经网络6、实战 1、基础概念 人工神经网络的概念:其从信息处理角度对人脑神经元... -
RNN神经网络模型综述
2019-05-12 09:32:39简单循环神经网络 RNN的基本结构 RNN的运算过程和参数更新 RNN的前向运算 RNN的参数更新 一.前言 前馈神经网络不考虑数据之间的关联性,网络的输出只和当前时刻网络的输入相关。然而在解决很多实际问... -
常见的卷积神经网络模型
2020-11-15 16:56:55文章目录一、LeNet二、AlexNet2.1 AlexNet的优点三:VGGNet3.1 VGG的特点...LeNet诞生于1994年,由深度学习三巨头之一的Yan LeCun提出,他也被称为卷积神经网络之父。 LeNe -
神经网络模型可视化工具 Netron | 每日工具推荐
2021-09-15 17:27:59今天要给大家介绍的是神经网络模型可视化工具 Netron,Netron 支持 ONNX, TensorFlow Lite, Keras, Caffe, Darknet, ncnn, MNN, PaddlePaddle, Core ML, MXNet, RKNN, MindSpore Lite, TNN, Barracuda, Tengine, ... -
机器学习——人工神经网络模型LSTM
2019-12-03 15:20:32在谈人工神经网络模型之前我们先来了解一下生理上的神经网络。 下面是个对比图: Neural Science Computer Science 人工神经网络实际上就是模仿人类的神经元之间连结,就像图灵模型也是基于人类运算行为而提出的一... -
【神经网络】MP神经网络模型(附实例代码讲解)
2021-03-14 17:42:06MP神经网络模型 1.MP模型介绍 2.实例 导入需要的包。 import numpy as np import pandas as pd import matplotlib.pyplot as plt 将会使用sklearn的帮助完成实验。 import sklearn.datasets from sklearn.metrics ... -
数学建模系列-预测模型(一)---神经网络模型
2021-08-25 10:08:11规划)、图论模型、排队论模型、神经网络模型、现代优化算法(**遗传算法、模拟退火算法、蚁群算法、**禁忌搜索算法)等等。 三、模糊综合评价法、层次分析法、聚类分析法、主成分分析评价法、 灰色综合评价 -
卷积神经网络发展历史及各种卷积神经网络模型简介
2019-06-17 16:53:491.前言 我的毕设做的是基于opencv和卷积神经网络的人脸识别项目。...2.卷积神经网络模型概览 ** 从一开始的LeNet到后来的VGGNet,再到google的Inception系列,再到ResNet系列,每一种神经网络模型都有其创新... -
一文看懂25个神经网络模型
2017-06-17 10:26:08光是知道各式各样的神经网络模型缩写(如:DCIGN、BiLSTM、DCGAN……还有哪些?),就已经让人招架不住了。因此,这里整理出一份清单来梳理所有这些架构。其中大部分是人工神经网络,也有一些完全不同的怪物。尽管... -
神经网络模型结构框架可视化的在线与软件绘图方法
2021-05-12 23:02:54之前向大家介绍了一种基于Python第三方ann_visualizer模块的神经网络可视化方法,大家可以直接点击博客:基于Python的神经网络模型结构框架可视化绘图简便方法...这一基于代码的方法可以适用于 ... -
神经网络模型训练基本流程
2019-11-19 15:27:31简单的神经网络模型是:前向回馈神经网络(feed-forward), 其包括以下几层: 输入、多个层次的对输入的回馈以及最终的输出。 简单的神经网络的训练过程包括以下几个步骤: 定义一个包含多个可学习参数(权重)的... -
常见深度神经网络模型图
2020-01-09 10:11:29from 《tensorflow learn in one day》 by Krishna Rungta -
通过云端自动生成openmv的神经网络模型,进行目标检测
2021-07-30 19:46:14OpenMV训练神经网络模型(目标识别) 一、准备材料: 1.OpenMV4 Plus(低版本的openmv可能算力不够不支持) 2.一根micro usb的数据线 3.电脑、网络 二、软件下载 在openMV官网下载openmv IDEhttps://book.openmv.cc/... -
BP神经网络模型
2020-05-01 10:27:14在我看来BP神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。举一个例子:比如某厂商生产一种产品,... -
盘点2021-2022年出现的CV神经网络模型
2022-02-19 00:07:15在transformer席卷CV领域之后,掀起了一股新型神经网络模型的涌现热潮。短短一两年时间,研究者们从不同结构领域冲击着SOTA,有ViT的,有CNN的,甚至还有纯MLP的。其中,不乏有一些启发性和奠基性的模型出现,隐约... -
神经网络学习----如何利用训练好的神经网络模型进行预测
2022-02-06 11:01:57预测会用到两个文件,分别是yolo.py和predict.py。 yolo.py里面修改model_path以及classes_path,这两个参数必须要修改。 model_path指向训练好的权值文件,在logs文件夹里。 classes_path指向自己目标类别所对应的... -
神经网络模型地评估
2018-07-16 17:15:47当训练好一个神经网络模型时,首先看准确率如何,如果准确率很低即偏差很高,甚至无法拟合数据,则先检查训练集的性能,如果没问题,则需要选择一个新的网络模型(更大的网络或者训练更长的时间)重新训练。... -
深度学习与神经网络系列之 --- 神经网络模型的保存
2020-01-03 16:18:15Python 提供了许多方法来保存神经网络模型,以下是使用 pickle 来完成这项任务: import pickle pickle.dump(fit, open('Boston_fit.pkl', 'wb')) 其中,fit 表示训练好的神经网络模型 以下是打开之前保存的网络,... -
深度学习入门(5)如何对神经网络模型训练结果进行评价
2020-12-09 15:26:54如何对神经网络模型训练结果进行评价 上一篇文章《深度学习入门(4)【深度学习实战】无框架实现两层神经网络的搭建与训练过程》介绍了基于mnist的手写体数字集的两层神经网络的搭建与训练过程,通过损失函数的训练... -
matlab训练神经网络模型并导入simulink详细步骤
2022-03-20 21:32:34之前的神经网络相关文章: Matlab-RBF神经网络拟合数据 Matlab RBF神经网络及其实例 4.深度学习(1) --神经网络编程入门 本文介绍一下怎么把训练好的神经网络导入到simulink并使用,假定有两个变量,一个输出... -
MLP入门:多层人工神经网络模型及算法公式推导(正向传播与逆向传播过程详解)
2020-05-11 01:25:271. 多层人工神经网络模型 由输入层、隐藏层(可有多层)和输出层组成。神经网络中最基本的成分是神经元(neuron)。其中,输入层神经元仅接收外界输入,不进行函数处理;隐藏层和输出层则包含功能神经元,能将接收...