【Deep Learning】深度学习中的函数类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjssharpsword/article/details/80007757


神经网络包含四类函数:组合函数(Combination Function)、激活函数(Activation Function)、误差函数(Error Function)、目标函数(Object Function)。

1、组合函数

在神经网络中,输入层之后的网络,每个神经元的功能是将上一层产生的向量通过自身的函数生成一个标量值,这个标量值就是下一层神经元的网络输入变量。组合函数是网络中间将向量映射为标量的函数,即∑。

常见的组合函数包括线性组合函数和基于欧氏空间距离的函数。

2、激活函数

神经元将一维向量的网络输入变量通过一个函数映射为另外一个一维向量的数值,这个函数称为激活函数,其产生的值称为激活状态。除输出层外,激活状态的值通过神经网络的链接输入到下一层的一个或者多个神经元里面。

激活函数将一个实数域上的值映射到一个有限域中,也称为坍缩函数,如常见的tanh或logistic函数,都将无限的实数域上的数值压缩到(-1,1)或(0,1)之间的有限域中。如果这个激活函数不做任何变换,则被成为Identity或者线性激活函数。

激活函数的主要作用是为隐含层引入非线性。一个只有线性关系隐含层的多层神经网络不会比一般的只包含输入层和输出层的两层神经网络更强大,因为线性函数的函数仍然是一个线性函数。但是加入非线性之后,多层神经网络的预测能力就得到显著提高。

对于后向传播算法,激活函数必须可微,而且如果这个函数是在有限域中的话,则效果更好,因此像logistic、tanh、高斯函数是比较常见选择,这类函数也统称为sigmoid函数。类似于tanh或arctan这样包含正和负的值域的函数通常收敛速度更快,因为数值条件(conditioning number)更好。

早起的理论认为sigmoid函数通常比threshold激活函数(如ReLU等激活函数)好。理由是因为采用threshod激活函数后误差函数是逐级常数(stepwise constant),从而不能使用高效的后向传播算法来计算一阶导数(gradient)。即使不采用梯度算法,而是采用如simulated annealing或基因算法,sigmoid激活函数也被认为是一个较好的选择;因为sigmoid函数是连续可微的,参数的微小变化就会带来输出的变化,有助于判断参数的变动是否有利于最终目标函数的优化。如果采用threshold激活函数,参数的微小变化并不能在输出产生变动,因此算法收敛会慢很多。

但sigmoid函数存在梯度消亡(gradient vanishing)问题(Sepp Hochreiter的1991年硕士 论文提出)。梯度消亡是指梯度(误差的信号)随着隐层数的增加成指数减小。这是因为在后向传播算法中,对梯度的计算使用链式法则,因此在第n层时要将前面各层的梯度都相乘,但由于sigmoid函数的值域在(-1,1)或(0,1)之间,因此多个很小的数相乘以后第n层的梯度会接近于0,造成模型训练的困难。而threshold激活函数的值域不在(-1,1)之间,如ReLU的取值范围是[0,+inf),因此没有这样的问题。

另外,如Hard Max这样的threshold激活函数:max(0,x),可以在隐藏层中引入稀疏性(sparsity),也有助于模型的训练。

对于输出层,应尽量选择适合因变量分布的激活函数:

1)对于只有0、1取值的双值因变量,logistic是较好的选择;

2)对于有多个取值的离散因变量,如0到9数字的识别,softmax激活函数是logistic激活函数的自然衍生;

3)对于有有限值域的连续因变量,logistic或tanh激活函数都可用,但要将因变量的值域伸缩到logistic或tanh对应的值域中;

4)如果因变量取值为正,但没有上限,则指数函数是一个较好的选择;

5)如因变量没有有限值域,或者虽然是有限值域但边界未知,可采用线性函数作为激活函数。

输出层的激活函数选择,和对应的统计学模型应用有类似地方,可理解为广义线性模型中的联结函数(Link Function)的功能。

3、误差函数

监督学习的神经网络需要一个函数来测度模型输出值p和真实的因变量值y之间的差异,即残差或误差。衡量模型质量是误差偏离0的相对值,即误差函数的值越接近于0,模型性能越好。

误差函数也称为损失函数,常用的函数如下:

1)均方差MSE:用在实数值域连续变量的回归问题上,并且对于残差较大的情况给予更多的权重;

2)平均绝对差MAE:和均方差应用场景一样,在时间序列预测问题中也常用,MAE每个误差点对总体误差的贡献与其误差绝对值成线性比例关系,而MSE没有这特特性;

3)交叉熵损失(cross-entropy):也叫做对数损失函数,是针对分类模型的性能比较设计的,用于二分类或多分类,即二分类交叉熵和多分类交叉熵,交叉熵可解释为映射到最可能的类别的概率的对数,因此当预测值的分布和实际因变量的分布尽可能一致时,交叉熵最小。

4、目标函数

目标函数在训练阶段最小化的对象。神经网络的训练表现为在最小化训练集上估计值和真实值之间的误差。如采用正则化来规范模型,减少过拟合情况,则目标函数是误差函数和正则函数的和。如采用权重衰减(weight decay)方法,正则函数为权重的平方和,和岭回归(ridge regression)使用的技巧一样。如运用贝叶斯思路,可将权重的先验分布的对数作为正则项。如不采用正则项,则目标函数和总的或平均误差函数一样。


展开阅读全文

没有更多推荐了,返回首页