首页 > 其他分享 >神经网络的类型分类和结构理解

神经网络的类型分类和结构理解

时间:2022-12-30 17:32:51浏览次数:36  
标签:分类 矩阵 神经网络 理解 100 隐藏 输入 结构


一、序言

神经网络是模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。

在深度学习领域,神经网络就是我们深度学习的灵魂,如果我们想依靠算法实现一些功能,就必须依托不同的神经网络结构,所以很有必要搞懂神经网络的类型和结构。

二、神经网络的类型

神经网络按照不同的分类方式,会有多种形式的划分。

第一种分类方式是按照类型来分,包含两种类型,分别为前馈神经网络和反馈神经网络。

我们分别解释下,首先前馈神经网络(Feedforward Neural Networks),它是我们最常用的神经网络类型。比如我们所说的BP神经网络,DNN网络,CNN网络等,举例如图所示:

前馈神经网络之DNN网络举例

神经网络的类型分类和结构理解_深度学习

前馈神经网络之CNN结构举例

神经网络的类型分类和结构理解_数据_02

这种结构一般定义为一个有向无环图,信号只能沿着最终输出的那个方向传播,每一时刻间的输入互不影响。

然后另一种结构是反馈神经网络(Feedback Neural Networks),也称为递归神经网络(Recurent Neural Networks),它是一个网络中环的结构,如下图所示的RNN网络:

神经网络的类型分类和结构理解_数据_03

 

 

反馈神经网络之RNN网络

可以发现信号不再是沿直线传播,而是有一些环路。这里环路的原因是因为在RNN网络中上一时刻的输出要给到下一时刻,比如图中的Xt-1时刻的输出St-1会作为Xt时刻的输入,时刻间的输入不再是独立的。

第二种分类方式是按照网络的深浅来分类的,包含浅层神经网络和深度神经网络。

浅层神经网络就是我们所说的传统神经网络,这种网络结构包含的层次比较少,一般不会超过两层,所以浅层神经网络最开始的效果并不理想。如下图所示为浅层神经网络。

神经网络的类型分类和结构理解_深度神经网络_04

 

浅层神经网络示例

我们可以发现只有其中只有两个隐藏层。

另外一种就是深度神经网络。所谓深度实际上就是把把层次加深,增加其中的隐藏层。比如下图:

深度神经网络示例

神经网络的类型分类和结构理解_数据_05

 

可以发现深度神经网络中包含着最少两层隐藏层,这些隐藏层经过高阶的特征提取会让我们的神经网络真正去发掘数据内部隐藏的特性。所以深度神经网络的发展和演变让神经网络的枝叶更加枝繁叶茂,从而能够模拟更多的场景,解决更多的算法需求。

三、神经网络的结构

了解完深度学习的类型划分之后,我们再看下神经网络的具体结构。我们现在所说的神经网络是指深度神经网络,即隐藏层大于2层的这种结构

我们以4层的结构为例为大家讲解,包含一个输入层(Input Layer),2个隐藏层,分别为隐藏层1(Hidden Layer1),隐藏层2(Hidden Layer2),和一个输出层(Output Layer)。如图所示:

神经网络结构示意

我们需要了解各个层次之间的参数关系。

首先看下输入层和第一个隐藏层之间的结构,如图所示:

神经网络的类型分类和结构理解_神经网络_06

 

输入层和隐藏层1之间的结构

这里面x1,x2,x3是指样本特征属,相当于有3个特征。假设我们的数据有100条,当数据给到输入层的时候,每个样本有3个特征,所以我们X的形状即为X=(100,3)这样的一个输入矩阵,其中的100为样本个数,3为特征个数。

那这之间的参数个数是多少呢?举个例子来分析下,比如对于其中的一个特征x1来说,连接到下一层的4个节点z1,z2,z3,z4上。如图所示:

神经网络的类型分类和结构理解_深度学习_07

 

X1连接到下一层的4个节点示意

可以发现一个特征对应4个参数,而输入的时候总共有3个特征,所以中间的这种连线总的个数也就是3*4=12个,即我们的输入层和隐藏层之间的W形状为W1=(3,4)这样的一个矩阵。

输入层和隐藏层之间需要按照线性组合WX+b这种形式进行组合。所以输入数据矩阵X和W点乘的结果为(100,3)*(3,4)=(100,4)这样一个形状的矩阵。即100行4列,表示的含义为100个数据经过第一个隐藏层的变化,每个数据转变成4个隐特征相当于隐藏层把我们上一层的输入在本层做了特征的转换和抽取,而这正是隐藏层节点的功能和作用。特征转换完以后再经过激活函数Sigmod的激活输入到下一层。

然后再来看下隐藏层1和隐藏层2之间的结构,如图所示:

神经网络的类型分类和结构理解_数据_08

 

隐藏层1和隐藏层2之间的结构示意

可以发现隐藏层1和隐藏层2之间的结构类似于输入层和隐藏层1之间结构,所以参数个数的分析也是类似的。这里面z1到z4所构成的输入矩阵是由上一层传递过来的,形状为100行4列的矩阵。

那两个隐藏层之间的参数个数为多少呢?我们还是举一个例子来说明下,看下z1的输出,如图所示:

神经网络的类型分类和结构理解_神经网络_09

 

z1输出结构示意

可以发现,对于z1来说,与下一层的每个节点h1到h4都相连,所以对应4个参数。而像z1这样的输出节点有z1到z4,总共4个。所以隐藏层1和隐藏层2之间对应的参数矩阵W2为W2=(4,4)的形状,即每个特征对应4个输出,总共4个特征输入。

同样这两层结构也需要满足线性组合的方式,所以X和W相乘后即为(100,4)*(4,4)=(100,4),即从隐藏层2输出时为100行4列的矩阵形式。相当于隐藏层又做了一次特征转换,转换为新的4个特征。然后再做一次非线性变换函数的激活例如Sigmod函数后传递给下一层。

最后再来看下隐藏层2和输出层之间的结构,如图所示:

神经网络的类型分类和结构理解_深度学习_10

 

隐藏层2和输出层之间结构示意图

此时隐藏层2输出的形状为100行4列的矩阵 ,以h1为例,看下隐藏层2和输出层之间的参数矩阵W3。如图所示:

h1节点到下一层结构示意

可以发现h1分别连线到输出层节点的y1和y2上,对应2个参数。而类似h1这样的结构总共有4个,所以对应的参数矩阵为W3=(4,2)的形状。

然后再经过线性组合的原理XW+b=(100,4)*(4,2)+(100,2)=(100,2)。即100个样本,每个样本由两个预测输出。这也刚好符合我们的理解,对于二分类来说,每一个样本需要有各个类别的预测。

这里需要提醒一点的是在最后一个隐藏层和输出层之间,我们也要做一次非线性变化,只不过此时的非线性变换函数为SoftMax函数,区别于前面几层的Sigmod函数。这里之所以是SoftMax函数,是因为SoftMax函数可以将最后预测结果做概率化的输出,表示每个类别的概率。

四、结论

经过以上分析,我们对神经网络结构做下总结,可以得出以下几个结论。

1、隐层到隐层之间是非线性变换,对应Sigmod函数。隐层到输出之间是分类或者是回归变化,不做激活,因此需要SoftMax函数。

2、层与层之间的矩阵参数为上一层节点的个数和下一层节点个数之间所组成的矩阵。比如上面案例中输入层有3个节点,隐藏层1有4个节点,所以中间对应的参数矩阵形状为(3,4),即3行4列的形式。同理其它层之间也是如此。

所以掌握神经网络层与层之间的结构后,会有助于我们对神经网络的理解,从而更好的理解参数模型,找到算法合适的参数。

标签:分类,矩阵,神经网络,理解,100,隐藏,输入,结构
From: https://blog.51cto.com/u_11936913/5980867

相关文章

  • 大白话5分钟带你走进人工智能-第34节神经网络之多神经网络概念(2)
    目录​​1、回顾:​​​​2、常见的激活函数都有哪些?​​​​3、多层神经网络里面故事:​​​​4、如何训练神经网络?​​1、回顾:回顾下之前学习的内容。人工神经网络里面有重......
  • Rust生命周期的理解
    前言这篇文章的目的是让读者最快最直观的了解什么是生命周期,以及为什么有生命周期,为了达到这个目的——即降低复杂性,本篇文章的用词可能不够严谨,见谅。引用和所有者所有......
  • 【李宏毅深度学习】(task5)分类Classification
    学习心得(1)从optimization的角度,来说明相较於MeanSquareError,交叉熵Cross-entropy是被更常用在分类上(2)网络设计技巧文章目录​​学习心得​​​​1.较长的教学版本​​​......
  • 【GNN】图神经网络学习小结 and 笔记汇总
    0.背景简述GNN的本质,是要学习网络中每个节点的表达的,这些潜在的表达对图中每个节点的“社交”关系进行了编码,把离散值的节点编码成稠密向量,后续可用于分类回归,或者作为下游......
  • Qt总结_对象模型_组件parent的理解
    标准C++对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Q......
  • 转载:调用规范stdcall、cdecl、fastcall、thiscall 、naked call的汇编理解 (https://ww
    当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作......
  • 智能制造 | AIRIOT智慧工厂管理解决方案
    工厂生产运转中,设备数量多,环境复杂、企业往往需要承担很高的维修、保养、备件和人力成本。传统的工厂改革遇到了诸多前所未有的挑战:1、管理系统较多,数据隔离,系统集成困难重......
  • 理解iOS端的WebView同层组件
    理解iOS端的WebView同层组件一起始同层渲染是利用原生技术来优化Web渲染一种技术,很多人了解它是起于微信开放社区发布的一篇关于小程序渲染原理剖析的文章。我将链接附上......
  • Dubbo 3 之 Triple 流控反压原理解析
    作者:顾欣Triple是Dubbo3提出的基于HTTP2的开放协议,旨在解决Dubbo2私有协议带来的互通性问题。Triple基于HTTP/2定制自己的流控,支持通过特定的异常通知客户......
  • 18个面向初学者的经典开源计算机视觉项目-图像分类篇(一)
    18个经典开源计算机视觉项目分为以下几类:图像分类人脸识别用GANs进行神经风格转换场景文本检测基于DETR的目标检测语义分割自动驾驶车辆的车道检测图像字幕人体姿势估计项目......