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

news2024/11/16 13:55:29

一、序言

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

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

二、神经网络的类型

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

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

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

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

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

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

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

 

 

反馈神经网络之RNN网络

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

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

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

 

浅层神经网络示例

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

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

深度神经网络示例

 

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

三、神经网络的结构

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

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

神经网络结构示意

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

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

 

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

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

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

 

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之间的结构,如图所示:

 

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

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

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

 

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和输出层之间的结构,如图所示:

 

隐藏层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列的形式。同理其它层之间也是如此。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF 3D 使用3D Tools简单实现鼠标控制模型

CSDN上下载一个资源, 3D模型导入wpf_wpf加载obj模型光线和相机配置-C#代码类资源-CSDN下载 从VS中打开,运行如下; 出来一个模型; 可以用鼠标旋转,翻转模型,从不同角度方位查看模型; 项目结构…

python-(6-4-4)爬虫---bs解析案例---爬取图片

文章目录一 需求二 操作思路1 拿到主页面的源代码,提取链接地址href2 通过href拿到子页面的内容,并找到图片下载地址 img ---> src3 下载图片三 分析步骤1 拿到主页面的源代码,提取链接地址href2 通过href拿到子页面的内容,并找…

sketch基础教程大全,对象、图层、画板常见技巧

sketch对象、图层、画板的使用技巧 1.通过快捷键调整图形的形状 选择图形,按住Command按键,然后通过上、下、左、右方向键按1像素调整图形形状。同时按住按钮。CommandShift方向键,可调整方向键。 ​2.复制元素 选择一个元素,按…

计算机毕业设计——基于Android的真人社交游戏辅助应用开发

编号 本科生毕业设计(论文) 题目: 真人社交游戏辅助应用开发 专业 学 号 学生姓名 指导教师 摘 要 时至今日,社交已成为人们生活中必不可少的一部分,社交网络的盛行已经成为一种必然趋势.与此同时&a…

语音识别之Kaldi学习GMM-HMM

语音识别之Kaldi kaldi语音识别理论与实践课程学习。 前面的博客介绍了语音识别的基础知识及原理。现在开始学习实战。以Kaldi框架为基础。 Kaldi是一个有全套的语音识别代码的工具,由Dan Povey博士和捷克的BUT大学联合开发,最早发布于2011年&#xf…

文献检索工具 | 计算机类英文文献检索数据库DBLP

文章目录1.什么是DBLP?2.DBLP文献检索的3种方式2.1.检索指定会议/期刊的论文2.2.检索指定作者的论文2.3.检索指定题目的论文3.Tips:DBLP中各个颜色模块含义1.什么是DBLP? 定义: DBLP(DataBase systems and Logic Programming&…

JS 数组去重的多种方法

1. 前言 2. 普通方法数组去重 3. filter indexOf 4. ES6 的 new Set() 5. 需要注意的问题 1. 前言 本文提供两个数组变量供测试使用 const array [html, css, js, css]const resArr [html, css, css, [1], [1]]2. 普通方法数组去重 下面列举几种数组去重的方法思路都一…

JavaScript大作业 制作简单的程序员个人博客网站(web前端网页制作课作业)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

花钱去IT培训班学习几个月软件测试真的值得吗?

为什么网上一问去IT培训机构报班学软件测试,一大堆人就会跳出来说不建议、劝退、建议自学? 为什么IT培训机构那么多坑,还有那么多学生愿意花几万块钱去学软件测试? 有人说:网上那么多的视频资料,很多都是…

五、输入输出管理(二)I/O管理概述

目录 2.1 I/O 软件层次结构 2.1.1用户层 I/O 软件 2.1.2设备独立软件 2.1.3设备驱动程序 2.2应用程序与I/O接口 2.2.1字符设备接口 2.2.2块设备接口 2.2.3网络设备接口 2.2.4阻塞/非阻塞 I/O I/O系统概述、I/O接口、I/O控制的四种方式(程序直接控制方式、程…

Trimble Tekla Structures支持14种不同的语言

Trimble Tekla Structures支持14种不同的语言 Tekla Structures被称为前Xsteel,是Trimble Software的产品,Trimble软件是一种强大的BIM机器。该软件为用户提供的环境,用户可以绘制接下来的三个模型并从中提取接下来的两个模型。该软件制作的模…

linux下pycharm运行错误解决办法

错误1: Inspection info:this inspection detects names that should resolve but dont.due to dynamic dispatch 重新设置虚拟环境即可,前面几篇文章有如何配置虚拟环境的教程 错误2: 有时候即使我们配好环境后在代码中也会出…

【玩转c++】c++内存管理 new/delete

本期主题:c/c内存管理。 博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限,出现错误希望大家不吝赐身为程序员 ,不会有人没有女朋友吧。 目录 🍁1. 了解c/c内存区域划分 🍁2.…

hbuilderx升级3.6.5版本后运行到手机端同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

问题1: hbuilderx升级3.6.5版本后运行到手机端同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示。 解决问题指路。 https://uniapp.dcloud.net.cn/tutorial/run/run-app-faq.html#node https://un…

在线考试系统毕业设计,线上考试系统设计与实现,毕业设计论文源码开题报告需求分析

项目背景和意义 目的:本课题主要目标是设计并能够实现一个在线考试的java系统,整体使用了基于浏览器的B/S架构,技术上使用了基于java的springboot框架;使用浏览器,通过后台添加考试题目,学生通过浏览器登录…

一文解决网络系统调用接口到内核的请求

网络套接字入口函数 //所有的网络套接字系统调用函数(socket bind listen connect )都使用一个共同的入口函数:sys_socketcall /* 第一个参数call表示被调用的应用层接口函数,第二个参数是一个指针,指向具体被调用函数…

【综合案例】原生JS实现购物商城

目录一、案例说明1、目录结构2、conf文件夹3、用户名密码的正则和ajax的封装二、登录页的实现1、案例效果2、登录页逻辑3、接口文档4、代码实现5、返回信息显示三、首页的实现1、案例效果2、首页的逻辑3、接口文档4、代码实现5、返回信息显示四、个人中心1、案例效果2、个人页的…

springboot车辆管理系统的设计与实现毕业设计源码031034

车辆管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&…

Runtime源码解析-alloc

Runtime源码解析-alloc 前言alloc 通过汇编查看调用流程1. objc_alloc方法2. callAlloc方法 首次进入非首次进入LLVM优化 3. _objc_rootAllocWithZone方法4. _class_createInstanceFromZone方法 instanceSize:计算内存大小 fastInstanceSizealignedInstanceSize mal…

TS201的DMA通信基本原理以及IIR的加深理解(含源代码)

实验目的: 了解DMA通信基本原理,掌握内存与SDRAM间一维DMA通信方式、二维DMA通信方式以及相关控制方法。学习数字滤波器设计方法,掌握其调试步骤,使学生加深对IIR的理解,进一步提高对数字信号处理理论的认识。 实验任…