• 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • 个人主页:有梦想的程序星空
  • 个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • 如果文章对你有帮助,欢迎关注点赞收藏订阅。

1.神经网络的分类

神经网络可以分为三种主要类型:前馈神经网络、反馈神经网络和图神经网络。

2.前馈神经网络

前馈神经网络(feedforward neural network)是一种简单的神经网络,也被称为多层感知机(multi-layer perceptron,简称MLP),其中不同的神经元属于不同的层,由输入层-隐藏层-输出层构成,信号从输入层往输出层单向传递,中间无反馈,其目的是为了拟合某个函数,由一个有向无环图表示,如下所示:

图1 前馈神经网络结构图

前馈神经网络中包含激活函数(sigmoid函数、tanh函数等)、损失函数(均方差损失函数、交叉熵损失函数等)、优化算法(BP算法)等。

常用的模型结构有:卷积神经网络、BP神经网络、RBF神经网络、感知器网络等。

下面介绍下经典的卷积神经网络:

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积运算且具有深度结构的前馈神经网络(Feedforward Neural Networks)。

相比早期的BP神经网络,卷积神经网络最重要的特性在于“局部感知”与“参数共享”。

整体架构:输入层——卷积层——池化层——全连接层——输出层

图2 卷积神经网络结构图

输入层:以图片为例,输入的是一个三维像素矩阵,长和宽表示图像的像素大小,深度表示色彩通道(黑白为1,RGB彩色为3)。

卷积层:卷积层也是一个三维矩阵,它的每个节点(单位节点矩阵)都是上一层的一小块节点(子节点矩阵)加权得来,一小块的尺寸一般取3*3或5*5。此层的作用是对每一小快节点进行深入分析,从而提取图片更高的特征。

池化层:池化层不会改变三维矩阵的深度,其作用是缩小矩阵,从而减少网络的参数。

全连接层:跟全连接神经网络作用一样。

Softmax层:得到当前样例属于不同种类的概率分布,并完成分类。

CNN的整个训练过程如下所示

(1)首先是随机初始化所有滤波器以及其他参数和权重值;

(2)输入图片,进行前向传播,也就是经过卷积层,ReLU和pooling运算,最后到达全连接层进行分类,得到一个分类的结果,也就是输出一个包含每个类预测的概率值的向量;

(3)计算误差,也就是代价函数,这里代价函数可以有多种计算方法,比较常用的有平方和函数:

其中,y'为实际值,y为预测值。

(4)使用反向传播来计算网络中对应各个权重的误差的梯度,一般是使用梯度下降法来更新各个滤波器的权重值,目的是为了让输出的误差,也就是代价函数的值尽可能小。

(5)重复上述第二到第四步,直到训练次数达到设定好的值。

卷积神经网络是一种特殊的多层神经网络,像其它的神经网络一样,卷积神经网络也使用一种反向传播算法来进行训练,不同之处在于网络的结构。

卷积神经网络(CNN)具有一些传统技术所没有的优点

(1)良好的容错能力、并行处理能力和自学习能力,可处理环境信息复杂,背景知识不清楚,推理规则不明确情况下的问题;

(2)它允许样本有较大的缺损、畸变,运行速度快,自适应性能好,具有较高的分辨率;

(3)它是通过结构重组和减少权值将特征抽取功能融合进多层感知器,省略识别前复杂的图像特征抽取过程。

3.反馈神经网络

反馈神经网络(feedback neural network)的输出不仅与当前输入以及网络权重有关,还和网络之前的输入有关。它是一个有向循环图或是无向图,具有很强的联想记忆能力和优化计算能力。

常用的模型结构有:RNN、Hopfield网络、玻尔兹曼机、LSTM等。

图3 反馈神经网络结构图

下面介绍下经典的循环神经网络:

循环神经网络(recurrent neural network,简称RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络。

循环神经网络,是指在全连接神经网络的基础上增加了前后时序上的关系,可以更好地处理比如机器翻译等的与时序相关的问题。

RNN的目的就是用来处理序列数据的。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题都无能无力。比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。

RNN之所以称为循环神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

RNN用于解决训练样本输入是连续的序列,且序列的长短不一的问题,比如基于时间序列的问题。基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。

RNN神经网络的结构如下:

图4 循环神经网络的结构图

循环神经网络的输入是序列数据,每个训练样本是一个时间序列,包含多个相同维度的向量。网络的参数如何通过训练确定?这里就要使用解决循环神经网络训练问题的 Back Propagation Through Time 算法,简称BPTT

循环神经网络的每个训练样本是一个时间序列,同一个训练样本前后时刻的输入值之间有关联,每个样本的序列长度可能不相同。训练时先对这个序列中的每个时刻的输入值进行正向传播,再通过反向传播计算出参数的梯度值并更新参数。

RNN包含四个步骤,简述如下

(1)正向计算每个神经元的输出值;

(2)反向计算每个神经元的误差项 ,它是误差函数对神经元的加权输入的偏导数;

(3)计算每个权重的梯度;

(4)用随机梯度下降算法更新权重。

循环神经网络在进行反向传播时也面临梯度消失或者梯度爆炸问题,这种问题表现在时间轴上。如果输入序列的长度很长,人们很难进行有效的参数更新。通常来说梯度爆炸更容易处理一些。梯度爆炸时我们可以设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取。

有如下三种方法解决梯度消失的问题:

(1)合理的初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。

(2) 使用 ReLu 代替 sigmoid 和 tanh 作为激活函数。

(3) 使用其他结构的RNNs,比如长短时记忆网络(LSTM)和 门控循环单元 (GRU),这是最流行的做法。

4.图神经网络

图(graph)是一种在拓扑空间内按图结构组织来关系推理的函数集合,包括社交网络、知识图谱、分子图神经网络等。

图5 图结构示例

近年来,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点。GNN处理非结构化数据时的出色能力使其在网络数据分析、推荐系统、物理建模、自然语言处理和图上的组合优化问题方面都取得了新的突破。

图神经网络通常有以下几种网络模型:图卷积网络、图自编码器、图生成网络、图循环网络、图注意力网络

相关论文A Comprehensive Survey on Graph Neural Networks
论文地址:https://arxiv.org/pdf/1901.00596v1.pdf

GNN是直接在图数据结构上运行的神经网络。GNN的典型应用便是节点分类

图神经网络就是将图数据和神经网络进行结合,在图数据上面进行端对端的计算。

单层的神经网络计算公式:

相比较于神经网络最基本的网络结构全连接层(MLP),特征矩阵乘以权重矩阵,图神经网络多了一个邻接矩阵。计算形式很简单,三个矩阵相乘再加上一个非线性变换:

图6 图神经网络的结构示例

图神经网络的计算过程总结起来就是聚合邻居。图神经网络是直接在图上进行计算,整个计算的过程,沿着图的结构进行,这样处理的好处是能够很好的保留图的结构信息。而能够对结构信息进行学习,正是图神经网络的能力所在。图数据无处不在,图神经网络的应用场景自然非常多样。

图7 图神经网络的应用场景

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!​​​​​​​

深入浅出讲解神经网络的种类及举例说明相关推荐

  1. 【LSTM】深入浅出讲解长短时记忆神经网络(结构、原理)

    本文收录于<深入浅出讲解自然语言处理>专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! ​​个人主页:有梦想的程序星空 ​​个人介绍:小编是人工智能领域硕士,全 ...

  2. 如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分

    https://www.zhihu.com/question/22553761 如何简单形象又有趣地讲解神经网络是什么? 有网友在 Quora 上提问:对于那些非计算机科学行业的人,你会如何向他们解释 ...

  3. 深入浅出讲解语言模型

    转载自  深入浅出讲解语言模型 深入浅出讲解语言模型 1.什么是语言模型呢? 简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率? 那么如何计算一个句子的概率呢?给定 ...

  4. 【seq2seq】深入浅出讲解seq2seq神经网络模型

    本文收录于<深入浅出讲解自然语言处理>专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅! 个人主页:有梦想的程序星空 个人介绍:小编是人工智能领域硕士,全栈工程师 ...

  5. 如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分_kebu12345678的博客-CSDN博客_神经网络知乎

    如何简单形象又有趣地讲解神经网络是什么?(知乎) 说的人很多,理解很充分_kebu12345678的博客-CSDN博客_神经网络知乎 如何简单形象又有趣地讲解神经网络是什么? - 知乎

  6. pytorch系列 ---5以 linear_regression为例讲解神经网络实现基本步骤以及解读nn.Linear函数

    本文主要讲述最简单的线性回归函数: y = w x + b y=wx+by=wx+b在pytorch的实现,主要包括神经网络实现的基本步骤和nn.Linear的源码解读. 1. nn.Linear 源 ...

  7. 深入浅出讲解LDA主题模型(一)

    本文转自:深入浅出讲解LDA主题模型(一)_欢迎来到我的酒馆-CSDN博客 原文格式更适合阅读,本文主要是为了备忘. 最近总是遇到主题模型LDA(Latent Dirichlet Allocation ...

  8. 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习

    深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 文章目录 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 表示学习 表示学习的意义 离散表示与分布式表示 端到端学习 基于重构损 ...

  9. 深入浅出讲解FOC控制与SVPWM技术

    深入浅出讲解FOC控制与SVPWM技术 0.前言 0.1 什么是FOC 0.2 FOC驱动器和无刷电调的区别 1.从电机原理说起 1.1 一些基础知识 1.2 无刷电机原理 1.3 关于BLDC和PM ...

最新文章

  1. [C] 层层递进——C语言实现广度优先搜索
  2. PHP 笔记——操作MySQL数据库
  3. Java基础-初识面向对象编程(Object-Oriented-Programming)
  4. 大数据在医疗保健中的真正愿景
  5. 大开眼界!终于等到这部每一帧都是壁纸的纪录片!
  6. 【模式识别】Fisher线性判别实验报告之MATLAB仿真
  7. BeJavaGod - 如何正确使用数据字典进行分类统一操作(一)
  8. linux环境下编译llvm源码
  9. 初始Hibernate-关于hibernate的三种状态
  10. Xcode12.3 、12.4 运行 iOS15 :The code signature version is no longer supported
  11. 使用redis保存验证码
  12. vbs刷屏代码。复制粘贴即可用
  13. 一些提高工作效率的黑科技软件
  14. mac上的android模拟器下载安装,Mac电脑上安装安卓模拟器,Mac如何安装Android模拟器...
  15. 微信小程序网易云音乐获取视频列表数据(需要登录获取携带cookie)
  16. 这些好玩的 GitHub 项目,你知道几个?
  17. 运行不了cracker.jar?激活MyEclipse
  18. 腾讯游戏10大经典案例(二):天堂等于天下
  19. Cisco Packet Tracer 思科模拟器SSH配置
  20. php的样式怎么设置字体大小,css中如何改变字体大小

热门文章

  1. uni-app 自定义复选框/单选框
  2. gawk linux,精通awk系列(1):安装新版本的gawk
  3. 常见电路结构分析七:三相电的使用与接法
  4. 小米总参php面试题_前端面试题2019年小米工程师面试题及答案解析
  5. 全面解析人、机、料、法、环、测!
  6. iphonex美版型号对照表_美版iPhoneX价格是多少?美版iPhoneX国内可以用吗
  7. Bean对象为什么要交给Spring框架来管理?
  8. tensorflow编码错误:TypeError: unsupported operand type(s) for *: ‘float‘ and ‘NoneType‘
  9. 关于TCOOP-M005降压模块的详细介绍
  10. 腾讯工蜂(TGit)之代码上传