神经网络中重要的概念(超参数、激活函数、损失函数、学习率等)

神经网络中重要的概念(超参数、激活函数、损失函数、学习率等)

    在深度学习过程中,涉及到很多基础的概念,往往需要花一些时间将这些重要的概念弄清楚,因此将这些概念一并总结一下,主要包括:超参数、激活函数、损失函数、学习率等。

1.超参数

1.1超参数定义

    在机器学习过程中,经常碰到一个叫超参数的参数(hyperparameter),这个超参数是什么含义,与参数是什么关系?
    在机器学习中,超参数的定义如下: 在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
    简单来说,超参数也是一个参数,是一个未知变量,但是它不同于在训练过程中的参数,它是可以对训练得到的参数有影响的参数,需要训练者人工输入,并作出调整,以便优化训练模型的效果。

1.2超参数的特点

   (1)定义关于模型的更高层次的概念,如复杂性或学习能力。
   (2)不能直接从标准模型培训过程中的数据中学习,需要预先定义。
   (3)可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定。

1.3超参数的一些实例

  1. 聚类中类的个数
  2. 话题模型中话题的数量
  3. 模型的学习率
  4. 深层神经网络隐藏层数
  5. 树的数量或树的深度
  6. 矩阵分解中潜在因素的数量
  7. k均值聚类中的簇数

2.激活函数

2.1激活函数的定义

    激活函数(Activation Function)是在神经网络中负责将神经元的输入映射到输出端的函数。激活函数将非线性特性引入到神经网络中。如下图所示,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
在这里插入图片描述
图来源:https://blog.csdn.net/tyhj_sf/article/details/79932893图来源

2.2在神经网络中引入激活函数的意义

    引入非线性函数作为激活函数之后,深层神经网络才有意义,可以逼近任意函数。

2.3激活函数的特点

    激活函数通常具备下述特征:非线性、可微性、单调性、 f ( x ) ≈ x f(x)\approx x f(x)x、输出值有范围、计算简单、归一化。

2.4常用的激活函数(4种)

    激活函数的种类较多,本文重点介绍常用的四种激活函数,分别是Sigmoid函数、tanh函数、ReLU函数、Leaky ReLU函数,总结这4个函数的特点及使用场景。

2.4.1Sigmoid函数

    Sigmoid函数的表达式为: f ( x ) = 1 1 + e − x f(x)=\tfrac{1}{1+_{e^{-x}}} f(x)=1+ex1,其函数取值范围为(0,1),可以在输出层表示概率值。Sigmoid函数的导数是非0的,计算起来也比较简单。Sigmoid函数的图像如下图所示:
Sigmoid函数图像

    Sigmoid函数的梯度下降十分明显,并且两头过于平坦,容易出现梯度消失的情况,输出的值域不对称。

2.4.2tanh函数

    双曲正切函数(tanh函数)的函数表达式为: f ( x ) = e x + e − x e x − e − x f(x)=\tfrac{_{e^{x}}+_{e^{-x}}}{_{e^{x}}-_{e^{-x}}} f(x)=exexex+ex,函数的取值范围为[-1,1],解决了Sigmoid函数输出值域不对称的问题,对称中心在原点。其输出值域的两头依旧较平坦,梯度消失问题仍然存在,其图像如下所示:
在这里插入图片描述

2.4.3ReLU函数

    ReLU函数是目前神经网络中使用最多的激活函数,ReLU函数的线性特点使得其收敛速度比Sigmoid函数和tanh函数都要快,并且不会出现梯度饱和的情况,计算效率更高。ReLU函数的表达式为: f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x),或者将其表达式写为: f ( x ) = { 0 x < = 0 x x > 0 f(x)=\left\{\begin{matrix} 0 & x<=0\\ x & x>0 \end{matrix}\right. f(x)={0xx<=0x>0,图像如下所示:
ReLU函数图像
    ReLU函数的缺点是所有负值均被截断为结果0,从而导致特征丢失的情形。同时,ReLU函数要求学习率不能太高,如果学习率太大,会使网络中很多的神经元都失效,一般设置一个较小的学习率,为0.005。

2.4.4Leaky ReLU函数

    为了解决ReLU函数中的负值被截断为0的问题,推出带泄露修正的线性单元Leaky ReLU函数,其函数表达式为: f ( x ) = { a x x < = 0 x x > 0 f(x)=\left\{\begin{matrix} ax & x<=0\\ x & x>0 \end{matrix}\right. f(x)={axxx<=0x>0。在ReLU函数中,当x<=0时,函数值为0,而Leaky ReLU函树是给出一个负数梯度值,其中a是一个较小的值,通常为0.01。该函数的图像如下所示:
Leaky ReLU函数图像

3.损失函数

3.1损失函数的含义

    损失函数(loss function)是用来评价模型对样本的拟合程度,当预测结果与实际值越接近,说明模型的拟合能力越强,对应的损失函数的结果就越小,当预测结果与实际值差距越大,损失函数的结果越大。损失函数比较大时,对应的梯度下降比较快。

3.2常用的损失函数

3.2.1softmax函数

    softmax函数的好处是可以将分类问题的预测结果更加明显,不同类别之间的差距更大。针对4×1的向量 a T a^T aT=[5,2,-1,3],softmax函数的计算过程如下:
a = [ 5 2 − 1 3 ] a=\begin{bmatrix} 5\\ 2\\ -1\\ 3 \end{bmatrix} a=5213, t = [ e 5 e 2 e − 1 e 3 ] t=\begin{bmatrix} e^5\\ e^2\\ e^-1\\ e^3 \end{bmatrix} t=e5e2e1e3,t向量表示中间向量,对原始向量进行指数化处理,使其值映射到非负。
g ( a T ) = [ e 5 / ( e 5 + e 2 + e − 1 + e 3 ) e 2 / ( e 5 + e 2 + e − 1 + e 3 ) e − 1 / ( e 5 + e 2 + e − 1 + e 3 ) e 3 / ( e 5 + e 2 + e − 1 + e 3 ) ] = [ 0.842 0.042 0.002 0.114 ] g(a^T)=\begin{bmatrix} e^5/(e^5+e^2+e^-1+e^3)\\ e^2/(e^5+e^2+e^-1+e^3)\\ e^-1/(e^5+e^2+e^-1+e^3)\\ e^3/(e^5+e^2+e^-1+e^3) \end{bmatrix}=\begin{bmatrix} 0.842\\ 0.042\\ 0.002\\ 0.114 \end{bmatrix} g(aT)=e5/(e5+e2+e1+e3)e2/(e5+e2+e1+e3)e1/(e5+e2+e1+e3)e3/(e5+e2+e1+e3)=0.8420.0420.0020.114
    通过softmax函数的计算,最终结果向量的和为1,同时保证结果向量中每一个元素均为非负值。

3.2.2交叉熵

    关于交叉熵(Cross Entropy Loss)损失函数的数学原理可以参照简书中的详细描述,交叉熵原理。本文只是简单的说明交叉熵函数的基本内容,以及其使用场景。
    针对单个样本,损失函数的计算公式为: L = − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] L=-[ylog\hat{y}+(1-y)log(1-\hat{y})] L=[ylogy^+(1y)log(1y^)],其中 y y y表示真实值, y ^ \hat{y} y^表示预测值。
    针对N个样本,只需要将N个损失叠加起来就行了,损失函数的计算公式为: L = − 1 N ∑ i = 1 N [ y i l o g y i ^ + ( 1 − y i ) l o g ( 1 − y i ^ ) ] L=\frac{-1}{N}\sum_{i=1}^{N}[y_{i}log\hat{y_{i}}+(1-y_{i})log(1-\hat{y_{i}})] L=N1i=1N[yilogyi^+(1yi)log(1yi^)],其中 y i y_{i} yi表示真实值, y i ^ \hat{y_{i}} yi^表示预测值。
    针对单个样本,当 y = 1 时: L = − l o g y ^ L=-log\hat{y} L=logy^,绘制其函数图像如下:
在这里插入图片描述
    从函数图像可知,当预测输出越接近真实样本标签 1,损失函数 值L 越小;预测输出越接近 0时,损失函数值L 越大。因此,函数的变化趋势完全符合实际需要的情况。

3.2.3均方差损失函数

    均方损失函数(Mean Square Loss)的基本计算公式如下: M S E = 1 N ∑ i = 1 N ( y i − y i ^ ) 2 MSE=\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})^2 MSE=N1i=1N(yiyi^)2。其中 y i y_{i} yi表示真实值, y i ^ \hat{y_{i}} yi^表示预测值。均方差损失函数主要用于回归问题,对具体的数值进行预测的模型中。

4.学习率

    学习率(Learning rate)是深度学习中的一个超参数,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
    当学习率设置较小时,需要通过较多次的实验才能收敛,如下图所示:学习率较小时的收敛过程
    当学习率设置较大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛,如下图所示:
学习率较大时的收敛过程
    调整学习率的方法包括:基于经验的手动调整、固定学习率、均匀分布降低策略、指数级衰减策略、多项式策略、AdaGrad动态调整、AdaDelta自动调整、动量法动态调整、随机梯度下降、Adam自动调整。
    对于学习率的设置,刚开始更新的时候,学习率尽可能大,当参数快接近最优值的时候,学习率逐渐减小,保证参数最后能够达到极值点。同时希望蝶飞的次数足够少,这样不仅能加快训练的速度,还可以减少资源的消耗。

5.学习小结

    针对机器学习中的部分重要概念,很多时候看过一遍之后,长时间不用,就很容易忘记,因此将部分重要概念进行总结,希望能帮助自己加深理解和记忆。同时,希望通过自我总结和实践,提高机器学习实战能力。

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值