神经网络基础

第六章  神经网络基础

1.1  基础概念

1.1.1  神经元

神经元是基本的信息操作和处理单位。

它接受一组输入,将这组输入加权求和后,由激活函数来计算该神经元的输出。

1.1.2  输入

一个神经元可以接受一组张量作为输入

x={x_1,x_2,…,x_n}^⊺

1.1.3  连接权值

连接权值向量为一组张量 W={w_1,w_2,…,w_n}, 其中w_i对应输入x_i的连接权值;

神经元将输入进行加权求和

 

写成向量形式 sum=Wx

1.1.4  偏置

有时候加权求和时会加上一项常数项b作为偏置;其中张量b的形状要与Wx的形状保持一致 sum=Wx+b

1.1.5  激活函数

激活函数f(∙)被施加到输入加权和sum上,产生神经元的输出;这里,若sum为大于1阶的张量,则f(∙)被施加到sum的每一个元素上

o=f(sum)

常用的激活函数SoftMax、Sigmoid、Tanh、ReLU等。

激活函数

在神经网络中,全连接层只是对上层输入进行线性变换,而多个线性变换的叠加仍然是一个线性变换,即含有多个全连接层的神经网络与仅含输出层的单层神经网络等价。

解决问题的一个方法是,在全连接层后增加一个非线性的变换,将非线性变换后的结果作为下一个全连接层的输入。

这个非线性函数被称为激活函数(Activation Function),神经网络可以逼近任意函数的能力与激活函数的使用不可分割。

常见的激活函数有ReLU、Sigmoid、Tanh和Softmax等。

1、ReLU函数

线性整流函数(Rectified Linear Unit,ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。

ReLU函数的表达式如式所示,其中x为神经元的输入值。

ReLU函数的几何表达如图所示。

由图可知,当输入为正时,ReLU函数的输入与输出均始终保持线性关系,当输入趋于正无穷时,输出也趋于正无穷;当输入为负值时,输出为0。

ReLU函数的优点如下。

1、反向传播时,可以避免梯度消失。

2、使一部分神经元的输出为0,形成稀疏网络,减少了参数的相互依存关系,缓解了过拟合问题的发生。

3、求导简单,整个过程的计算量节省很多。

ReLU的缺点如下。

1、左侧神经元为0,导致部分神经元死亡,不再更新。

2、输出非负,所有参数的更新方向都相同,可能导致梯度下降时出现震荡。

2、Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。

在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0到1之间

Sigmoid函数的表达式如式所示,其中x为神经元的输入值。

Sigmoid函数的几何表达如图所示。

由图可知,纵坐标的范围在0~1的区间内,随着横坐标值从左往右增大,曲线的纵坐标值从0无限趋近于1,表示Sigmoid函数的输出范围是0到1,即对每个神经元的输出进行了归一化。

由于概率的取值范围是0到1,因此Sigmoid函数非常适合用在以预测概率作为输出的模型中。

Sigmoid优点如下。

1、Sigmoid的取值范围为(0, 1),而且是单调递增,比较容易优化。

2、Sigmoid求导比较容易,可以直接推导得出。

Sigmoid缺点如下。

1、Sigmoid函数收敛比较缓慢。

2、由于Sigmoid是软饱和,容易产生梯度消失,对于深度网络训练不太适合,由上页图可知,当x趋于无穷大时,会使导数趋于0。

sigmoid类的语法格式如下,其中参数“input”表示输入值。

torch.nn.functional.sigmoid(input)

3、Tanh函数

Tanh函数是双曲正切激活函数。

Tanh函数的表达式如式所示,其中x为神经元的输入值。

Tanh函数的几何表达如图所示。

由图可知,当横坐标值趋于负无穷时,纵坐标值无限趋近于-1。

当横坐标值趋于正无穷时,纵坐标值无限趋近于1。

当输入的绝对值大于5时,输出几乎是平滑的并且梯度较小,不利于权重更新。

Tanh优点如下。

1、函数输出以(0,0)为中心。

2、收敛速度相对于Sigmoid更快。

Tanh缺点如下。

1、 Tanh并没有解决Sigmoid梯度消失的问题。

2、含有较多的幂运算,增加计算所需的时间。

tanh类的语法格式如下,其中参数“input”表示输入值。

torch.nn.functional.tanh(input)

Tanh函数跟Sigmoid函数的区别在于输出间隔,Tanh的输出间隔为2,并且整个函数以0为中心。

在一般的二元分类问题中,Tanh函数常用于隐藏层,而Sigmoid函数常用于输出层。

但这并不是固定的,需要根据特定问题进行调整。

4、Softmax函数

Softmax函数常在神经网络输出层充当激活函数,将输出层的值映射到(0,1)区间,将神经元输出构造成概率分布,用于多分类问题中,Softmax激活函数映射值越大,则真实类别可能性越大。 Softmax函数的表达式如式所示,其中i为输入神经元的第i个元素。

由式可知,Softmax函数为指数形式的函数,且映射后的数值受映射前所有数值的影响。

Softmax优点如下

1、指数函数求导的时候比较方便,加快模型的训练。

2、能够将输出值拉开距离,使不同类间的区别更明显。

Softmax缺点如下

1、通过Softmax函数计算得到的数值有可能会变得过大从而导致溢出。

2、输入均为负时,可能会出现梯度为0。

1.1.6  输出

激活函数的输出o即为神经元的输出。

一个神经元可以有多个输出O_1,O_2,…,O_m对应于不同的激活函数f_1,f_2,…,f_m

1.1.7  神经网络

神经网络是一个有向图,以神经元为顶点,神经元的输入为顶点的入边,神经元的输出为顶点的出边。

因此神经网络实际上是一个计算图,直观地展示了一系列对数据进行计算操作的过程。

神经网络是一个端到端的系统,这个系统接受一定形式的数据作为输入,经过系统内的一系列计算操作后,给出一定形式的数据作为输出;系统内的运算可以被视为一个黑箱子,这与人类的认知在一定程度上具有相似性。

通常地,为了直观起见,人们对神经网络中的各顶点进行了层次划分。

神经网络的层次划分


(1)输入层:接受来自网络外部的数据的顶点,组成输入层。

(2)输出层:向网络外部输出数据的顶点,组成输出层。

(3)隐藏层:除了输入层和输出层以外的其他层,均为隐藏层。

(4)训练:神经网络中计算操作被预定义,而要使得输入数据通过这些操作之后得到预期的输出,则需要根据一些实际的例子,对神经网络内部的参数进行调整与修正;这个调整与修正内部参数的过程称为训练,训练中使用的实际的例子称为训练样例。

(5)监督训练:在监督训练中,训练样本包含神经网络的输入与预期输出;对于一个训练样本〈X,Y〉, 将X输入神经网络,得到输出Y′;我们通过一定的标准计算Y^′与Y之间的训练误差,并将这种误差反馈给神经网络,以便神经网络调整连接权重及偏置。

(6)非监督训练:在非监督训练中,训练样本仅包含神经网络的输入。

1.2  感知器

1.2.1  单层感知器

考虑一个包含一个神经元的神经网络。这个神经元有两个输入x1、x2,权值为w1、w2。其激活函数为符号函数:

根据感知器训练算法,在训练过程中,若实际输出的激活状态o与预期输出的激活状态y不一致,则权值按一下方式更新:

1.2.2  多层感知器

而基于统计的连接主义的模型将认知所需的功能属性结合到模型中来,通过模拟生物神经网络的信息处理方式来构建具有认知功能的模型

类似于生物神经元与神经网络,这类模型具有三个特点:

 这一类模型被称为人工神经网络,多层感知器是最为简单的一种。

1.3  BP神经网络

1.3.1  梯度下降

为了使得误差可以反向传播,梯度下降(gradientdescent)的算法被采用,其思想是在权值空间中朝着误差下降最快的方向搜索,找到局部的最小值。

其中,w为权值,α为学习率,Loss(•)为损失函数(lossfunction)。损失函数的作用是计算实际输出与期望输出之间的误差。

梯度下降

常用的损失函数如下:

(1)均方误差,实际输出为oi,预期输出为yi:

(2)交叉熵(Cross Entropy, CE):

由于求偏导需要激活函数是连续的,而符号函数不满足连续的要求,因此通常使用连续可微的函数,如sigmoid作为激活函数。特别地,sigmoid具有良好的求导性质:

o'=o(1-o)
sigmoid 函数使得计算偏导时较为方便,因此被广泛应用。

1.3.2  反向传播

使得误差反向传播的关键在于利用求偏导的链式法则。我们知道,神经网络是直观展示的一系列计算操作,每个节点可以用一个函数f(.)来表示。

链式法则与反向传播

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值