神经网络Neural Networks概述

人工智能(AI)是一类非常广泛的问题,它旨在通过计算机实现类似人类的智能。机器学习(ML)是解决人工智能问题的一个重要方法。深度学习(DL)则是机器学习的一个分支,它在很多领域突破了传统机器学习的瓶颈,将人工智能推向了新的高潮。深度学习是基于人工神经网络(ANN)技术的发展而不断突破和提升,推动了人工智能的发展。相对的另一领域是生物神经网络(Biological Neural Network,BNN)的研究。

神经网络领域内一些简单概念

神经网络中最基本的成分是神经元(neuron)模型。神经元是构成一个神经网络的最小单元。

一个神经元有多个输入和一个输出。每个神经元的输入既可以是其他神经元的输出,也可以是整个神经网络的输入。

神经网络的结构是指不同神经元之间的连接结构。

全连接神经网络(FCN)即相邻两层之间任意两个节点之间都有连接。

一个最简单的神经元结构的输出就是所有输入的加权和,而不同输入的权重就是神经元的参数𝑾。

设置神经网络参数的过程就是神经网络的训练过程。只有经过有效训练的神经网络模型才可以真正地解决分类(Classification)或者回归(Regression)问题前者针对离散型变量,后者针对连续型变量。训练神经网络的过程主要为三个步骤:

  1. 定义神经网络的结构和通过batch训练样例获取前向传播的输出结果。
  2. 定义损失函数以及选择后向传播优化的算法。
  3. 生成会话(tf.Session)并且在训练数据上反复运行反向传播优化算法。

神经网络的优化过程就是优化神经元中参数的取值的过程

一个算法的核心其实只包含两部分:代价梯度。对于神经网络而言,是通过前向传播求代价,反向传播求梯度。即前向传播求损失,反向传播回传误差。每个神经元都可以根据误差修正权重。前向传播算法,用于计算模型最终的输出结果;后向传播算法,用于减小模型输出结果与实际结果之间的误差,通过调整参数权重来优化模型。

神经网络就是通过前向传播与后向传播算法的循环迭代,来训练模型,进而进行预测或者分类。简单来说,反向传播(BP)是学习的过程;而正向传播(FP)是预测的过程。

神经网络发展的三个重要阶段

神经网络技术可以追溯到1943年,美国生理学家沃伦∙麦卡洛克教授和沃尔特∙皮茨教授在论文《神经活动中思想内在性的逻辑演算》提出了最早的神经网络数学模型,模拟人类大脑神经元的结构提出了McCulloch-Pitts Neuron的计算结构,简称M-P神经元

1958年弗兰克·罗森布拉特教授提出了感知机模型。感知机是首个可以根据样例数据来学习特征权重的模型。感知机(Perceptron)由两层神经元组成。

输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)。1969年,Marvin Minsky教授和Seymour Papert教授在论文《感知机:计算几何学》证明了感知机模型只能解决线性可分问题,无法解决异或问题。也指出了在当时的计算能力下,实现多层的神经网络是不可能的事情,随即导致了神经网络研究陷入第一次重大的低潮期,几乎停滞了二十年。

直到20世纪80年代末,第二波神经网络研究因分布式知识表达(distributed representation)和神经网络反向传播算法的提出而再兴起。分布式知识表达大大加强了模型的表达能力,让神经网络从宽度的方向走向了深度的方向,为之后的深度学习奠定了基础。深层的神经网络是可以很好地解决类似异或问题等线性不可分问题的。1986年首次提出了反向传播的算法(back propagation),大幅降低了训练神经网络所需要的时间。同时伴随计算机的飞速发展,神经网络在20世纪80年代末到90年代初又迎来了发展高峰期,比如卷积神经网络和循环神经网络都得到了很好的发展。

然而,由于同时代的传统机器学习算法也有了突破性进展,并在90年代末逐步超越了神经网络,成为当时机器学习领域最常用的方法。以手写体识别为例,在1998年,使用支持向量机(support vector machine)的算法可以把错误率降低到0.8%。这是当时的神经网络无法达到的,在当时的计算资源下,要训练深层的神经网络仍然是非常困难的,当时数据量较小,无法满足训练深层神经网络的需求。

随着计算机性能的进一步提高,以及云计算、GPU的出现,到2010年左右,计算量不再是阻碍神经网络发展的问题。随着互联网+的发展,获取海量数据也不再困难,这让神经网络面临的几个最大问题都得到了解决,于是神经网络的发展也又一次迎来新的高潮。2012年ImageNet举办的图像分类竞赛ILSVRC中,深度学习系统AlexNet赢得了冠军。自此之后,深度学习(Deep Learning)作为深层神经网络(DNN)的代名词被大家所熟识。如今,深度学习已经从最初的图像识别领域扩展到了机器学习的各个领域(图像识别、语音识别、音频处理、自然语言处理NLP、机器人、生物信息处理、化学、电脑游戏、搜索引擎、网络广告投放、医学自动诊断、金融等领域)。

特征向量是神经网络的输入。目前主流的神经网络都是分层的结构,第一层是输入层,代表特征向量中每一个特征的取值。同一层的节点不会相互连接,而且每一层只和下一层连接(即目前大部分神经网络结构都只是相邻两层有连接),直到最后一层作为输出层得到计算的结果。在输入和输出层之间的神经网络叫做隐藏层,一般一个神经网络的隐藏层越多,这个神经网络越“深”。隐藏层是神经网络的一个重要概念。

神经网络则在感知机的模型上做了扩展,总结下主要有三点:

  • 加入了隐藏层,隐藏层可以有多层,增强模型的表达能力。(多层感知机 Multi-Layer Perceptron, MLP

  • 输出层的神经元也可以不止一个输出,可以有多个输出,这样模型可以灵活的应用于分类回归,以及其他的机器学习领域比如降维和聚类等。

  • 对激活函数做扩展,感知机的激活函数是sign(z),虽然简单但处理能力有限,因此神经网络中一般使用的其他的激活函数,比如在逻辑回归使用过的Sigmoid函数,还有后来出现的tanx, softmax,和ReLU等。

神经网络的结构拓扑图中的关键不是圆圈节点(代表“神经元”),每个节点也是一种特定的输出函数,称为激励函数。而是连接线(代表“神经元“之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。

神经网络其实就是一个输入𝑿到输出𝒀的映射函数:𝒇(𝑿)=𝒀,函数的系数就是我们所要训练的网络参数𝑾,只要函数系数确定下来,对于任何输入𝒙𝒊都能得到一个与之对应的输出𝙮𝒊,至于𝙮𝒊是否符合预期,这属于如何提高模型性能方面的问题。

深度神经网络(DNN)的基本结构

从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。

 层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。DNN看似复杂,但从小的局部模型来说,还是和感知机一样,即一个线性关系𝑧=∑𝑤𝑖𝑥𝑖+𝑏加上一个激活函数𝜎(𝑧)。由于DNN层数多,则我们的线性关系系数𝑤和偏倚𝑏的数量也就是很多了。

使用神经网络解决分类问题主要可以分为以下4个步骤:

  1. 提取问题中实体的特征向量作为神经网络的输入。
  2. 定义神经网络的结构,并定义如何从神经网络的输入得到输出。—— 前向传播算法
  3. 通过训练数据来调整神经网络中参数的取值,这就是训练神经网络的过程。
  4. 使用训练好的神经网络来预测未知的数据。

神经网络的兴起与应用成功推动了模式识别和数据挖掘的研究。许多曾经严重依赖于手工提取特征的机器学习任务(如目标检测、机器翻译和语音识别),如今都已被各种端到端的深度学习模型(如卷积神经网络CNN、长短期记忆LSTM和自动编码器)彻底改变了。实践证明诸如语音、图像、文本都是简单的序列或网格数据,是很结构化的数据,深度学习很善于处理此类欧式结构数据。

传统的深度学习方法被应用在提取欧式空间(Euclidean Structure)数据的特征方面取得了巨大成功,而在处理非欧式空间(较常见的是图Graph和流型Flow)数据上的表现却难以使人满意。近年来,人们对深度学习方法在图上的扩展越来越感兴趣。在多方因素的成功推动下,研究人员借鉴了卷积网络、循环网络和深度自动编码器的思想,定义和设计了用于处理图数据的神经网络结构,由此一个新的研究热点——“图神经网络(Graph Neural Networks,GNN)”应运而生。GNN使深度学习模型能够应用在图这种非欧几里德空间结构上:GNN的概念最早是Scarselli等人在2009年提出的,它扩展了现有的神经网络,用于处理图(graph)中表示的数据。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值