网站首页 > 技术文章 正文
神经元
人工神经元(Artificial Neuron),简称神经元,是构成神经网络的基本单元。典型的神经元结构如下:
典型的神经元结构
其中,激活函数在神经元中是非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:
LPRdAl">(1)连续并可导(允许少数点上不可导)的非线性函数。
(2)激活函数及其导函数要尽可能简单。
(3)激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。
接下来介绍几种神经网络常用的激活函数
Sigmoid型函数
Sigmoid型函数是指一类S型曲线函数,为两端饱和函数。常用的Sigmoid型函数有Logistic函数和Tanh函数。
(1)Logistic函数
因为Logistic函数的性质,使得装备了Logistic激活函数的神经元具有以下两点性质:1)其输出可以直接看作概率分布,使得神经网络可以更好地和统计学习模型进行结合。2)其可以看作一个软性门(Soft Gate),用来空值其他神经元输出信息的数量。
(2)Tanh函数
Tanh函数也是一种Sigmoid型函数,其可以看作放大并平移的Logistic函数,其值域是(-1.1)。
Logistic函数和Tanh函数
ReLU函数
ReLU函数 (Rectified Linear Unit, 线性修正单元),也叫做Rectifier函数,是目前深度神经网络中经常使用的激活函数。
优点:
(1)采用ReLU的神经元只需要进行加、乘和比较的操作,计算上更加高效
(2)ReLU函数被认为具有生物学合理性,如单侧抑制、宽兴奋边界、较好的稀疏性,大约有50%的神经元会出于激活状态(Sigmoid型函数会导致一个非稀疏的神经网络)
(3)在优化方面,相比于Sigmoid型函数的两端饱和,ReLU函数为左饱和函数,且在x>0时导数为1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。
缺点:
(1)ReLU函数的输出是非零中心化的,给后一层神经网络引入偏置偏移,会影响梯度下降的效率。此外,ReLU神经元在训练时比较容易“死亡”。在训练时,如果参数在以此不恰当的更新后,第一个隐藏层中的某个ReLU神经元在所有训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是0,在以后的训练过程中永远也不能被激活。这种现象称为死亡ReLU问题。
在实际应用中,为避免上面的情况,有几种ReLU的变种也会被广泛使用。如:ReLU、Leaky ReLU、ELU以及Softplus函数。
Swish函数
Swish函数是一种自门控(Self-Gated)激活函数,定义为:
swish(x)=xσ(β)swish(x)=x\sigma(\beta)
当 σ(β)\sigma(\beta) 接近于1时,门出于“开”状态,激活函数的输出近似于x本身;当 σ(β)\sigma(\beta) 接近于0时,门的状态为“关”,激活函数的输出近似于0。
Swish函数
Maxout单元
Maxout单元也是一种分段线性函数。Maxout单元的输入是上一层神经元的全部原始输出,是一个向量。
网络结构
想要模拟人脑的能力,单一的神经元是远远不够的,需要通过很多神经元一起写作来完成复杂的功能。这样通过一定的连接方式或信息传递方式进行协作的神经元可以看作一个网络,就是神经网络。
到目前为止,常用的神经网络结构有以下三种
(1)前馈网络
前馈网络中各个神经元按接收信息的先后分为不同的组。每一组看作一个神基层。每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播。前馈网络可以看作一个函数,通过简单的非线性函数的多次复合,实现输入空间到输出空间的复杂映射。
前馈网络包括全连接前馈网络和卷积神经网络。
(2)记忆网络
记忆网络也称为反馈网络,网络中的神经元不但可以接收其他神经元的信息,也可以接收自己的历史信息。记忆网络可以看作一个程序,具有更强的计算和记忆能力。
记忆网络包括循环神经网络、Hopfield网络、玻尔兹曼机、受限玻尔兹曼机等。
(3)图网络
前馈网络和记忆网络的输入都可以表示为向量或向量序列,但他们都很难处理图结构的数据。在实际应用中,很多数据都是图结构的数据,比如知识图谱、社交网络、分子网络等。
图网络是定义在图结构数据上的神经网络。图中的每个结点都由一个或一组神经元构成。节点之间可以是有向的,也可以是无向的。每个节点可以收到来自相邻节点或自身的信息。
三种不同的网络结构示例
上图展示了三种网络结构,其中圆形节点表示一个神经元,方形结点表示一组神经元。
前馈神经网络
前馈神经网络(Feedforward Neural Network, FNN) 是最早发明的简单人工神经网络。在前馈神经网络中,各神经元分别属于不同的层,每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。第0层称为输入层,最后一层称为输出层,其他中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。
多层前馈神经网络
将前馈神经网络的记号描述如下:
前馈神经网络的记号
令 a0=xa^{0}=x ,前馈神经网络通过不断迭代下面的公式进行传播:
首先根据第 l?1l-1 层神经元的活性值(Activation) al?1a^{l-1} 计算出第 ll 层神经元的净活性值(Net Activation) zlz^{l} ,然后经过一个激活函数得到第 ll 层神经元的活性值。该式若使用激活函数描述,则也可以写为:
通用近似定理
根据通用近似定理,我们认为前馈神经网络具有很强的拟合能力,常见的连续非线性函数都可以用前馈神经网络来近似。
根据通用近似定理,对于具有线性输出层和至少一个使用“挤压”性质的激活函数的隐藏层组成的前馈神经网络,只要其隐藏层神经元的数量足够,它可以以任意的精度来近似任何一个定义在实数空间中的有界闭集函数。
根据通用近似原理,神经网络在某种程度上可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布。多层前馈神经网络可以看作一个非线性复合函数 ?:RD→RD′\phi:R^{D}→R^{D’} ,将输入 x∈RDx\in R^{D} 映射到输出 ?(x)∈RD′\phi(x)\in R^{D'} 。因此,多层前馈神经网络也可以看成是一种特征转换方法。给定一个训练样本(x,y),先利用多层前馈神经网络将x映射到 ?(x)\phi(x) ,然后再将?(x)\phi(x) 输入到分类器 g(·)g( · ) ,即
其中g(·)g( · )为线性或非线性的分类器, θ\theta 为分类器g(·)g( · )的参数,y^\hat{y} 为分类器的输出。
参数学习
如果采用交叉熵损失函数,对于样本(x,y),其损失函数为
给定训练集为 D={(x(n),y(n))}n=1ND=\{(x^{(n)},y^{(n)})\}^{N}_{n=1} ,将每个样本 x(n)x^{(n)} 输入给前馈神经网络,得到网络输出为 y^(n)\hat{y}^{(n)} ,其在数据集D上的结构化风险函数为
其中 WW 和 bb 分别表示网络中所有的权重矩阵和偏置向量; ||W||F2||W||^{2}_{F} 是正则化项,用来防止过拟合。
有了学习准则和训练样本呢,网络参数可以通过梯度下降法来学习。但梯度下降法需要计算损失函数对参数的偏导数,如果通过链式法则逐一对每个参数进行求偏导比较低效。在神经网络的训练中,经常使用反向传播算法来高效地计算梯度。
反向传播算法
使用误差反向传播算法的前馈神经网络训练过程可以分为以下三步:
(1)前馈计算每一层的净输入 Z(l)Z^{(l)} 和激活值 a(l)a^{(l)} ,直到最后一层;
(2)反向传播计算每一层的误差项 δ(l)\delta^{(l)} ;
(3)计算每一层参数的偏导数,并更新参数。
使用反向传播算法的随机梯度下降训练过程
对公式(4.63)的说明:
其中,误差项由 L(y,y^)L(y,\hat{y}) 对 z(l)z^{(l)} 的偏导数求得,表示第 ll 层神经元(l层神经元的净输入)对最终损失(损失函数)的影响,也反映了最终损失对l层神经元的敏感程度,因此该偏导数一般称为l层神经元的误差项
优化问题
神经网络的参数学习比线性模型更加困难,主要原因有两点:1)非凸优化问题;2)梯度消失问题
非凸优化问题
梯度消失问题
在神经网络中误差反向传播的迭代公式为:
误差从输出层反向传播时,在每一层都要乘以该层的激活函数的导数。由于Sigmoid型函数的饱和性,饱和区的导数更是接近于0。这样,误差经过每一层传递都会不断衰减。当网络层数很深时,梯度就会不停衰减,甚至消失,使得整个网络很难训练。这就是所谓的梯度消失问题(Vanishing Gradient Problem)。
在深度神经网络中,减轻梯度消失问题的方法有很多种,一种简单有效的方式就是使用导数比较大的激活函数,比如ReLU等。
2.6 总结
1.神经网络是一种典型的分布式并行处理模型,通过大量神经元之间的交互来处理信息。
2.神经网络中的激活函数一般为连续可导函数,在神经网络中选择合适的激活函数十分重要。
常见的激活函数及其导数
3.前馈神经网络相邻两层的神经元之间为全连接关系,也成为全连接神经网络
4.前馈神经网络是一种很强的非线性模型,其能力可以由通用近似定理来保证。
- 上一篇: 什么是神经网络的激活函数? 神经网络 激活层
- 下一篇: 深度学习相关问题解析(梯度消失和过拟合)
猜你喜欢
- 2024-10-23 来学习一下概率论基本知识,它能防止你的模型过拟合
- 2024-10-23 神经网络综述 神经网络算法综述
- 2024-10-23 一文了解神经网络的原理 神经网络通俗易懂
- 2024-10-23 深度神经网络的可扩展定量验证 深度神经网络调参数技巧
- 2024-10-23 资源|贝叶斯神经网络简史 贝叶斯网络原理
- 2024-10-23 深度学习相关问题解析(梯度消失和过拟合)
- 2024-10-23 什么是神经网络的激活函数? 神经网络 激活层
- 2024-10-23 科普|贝叶斯概率模型一览 贝叶斯概率公式例题
- 2024-10-23 旋极信息获得发明专利授权:“一种速变信号检测方法和装置”
- 2024-10-23 AI课堂第7讲:ML神经网络——多层感知机MLP
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)