zoukankan      html  css  js  c++  java
  • Deep Learning 激活函数

    常用:Sigmoid,tanh,Relu

    神经网络中,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来。

    但有时候,特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。

    数据有很多的冗余,而近似程度的最大保留数据特征,可以用大多数元素为0的稀疏矩阵来实现。而Relu,它就是取的max(0,x),因为神经网络是不断反复计算,实际上变成了它在尝试不断试探如何用一个大多数为0的矩阵来尝试表达数据特征,结果因为稀疏特性的存在,反而这种方法变得运算得又快效果又好了。ReLU在0点不可微,大部分情况下由于导数清晰,比sigmoid的边界导数要清晰很多,所以学习效率会高很多。

    (1)Sigmoid函数

    sigmoid及其梯度(红色曲线为梯度)

    sigmoid将输入挤压进0到1区间(这和概率的取值范围一致),这正是分类任务中sigmoid很受欢迎的原因
    (2)Tanh函数
    tanh就是乔装打扮的sigmoid。tanh的形状和sigmoid类似,只不过tanh将“挤压”输入至区间(-1, 1)。因此,中心为零,(某种程度上)激活值已经是下一层的正态分布输入了

    tanh及其梯度(红色曲线为梯度)

    tanh的形状和sigmoid类似,只不过tanh将“挤压”输入至区间(-1, 1)。因此,中心为零,激活值已经类似下一层的正态分布输入了。
    至于梯度,它有一个大得多的峰值1.0(同样位于z = 0处),但它下降得更快,当|z|的值到达3时就已经接近零了。这是所谓梯度消失(vanishing gradients),会导致网络的训练进展变慢。

    (3)ReLU
    只保留正值,并将所有负值转化为零。

    ReLU及其梯度(红色折线为梯度)

    不存在梯度消失,收敛极快,但是,持续输入为负就会造成“死亡神经元”。

    3.损失函数
    损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数可以大致分为两类:分类损失(Classification Loss)和回归损失(Regression Loss)

    (1)回归模型的损失函数
    回归模型是预测连续因变量的
    ①L1正则损失函数(即绝对值损失函数):
    L1正则损失函数是对预测值与目标值的差值求绝对值,函数在目标值附近不平滑,会导致模型不能很好地收敛。

    ②L2正则损失函数(即欧拉损失函数):
    L2正则损失函数是预测值与目标值差值的平方和

    当对L2取平均值,就变成均方误差(MSE, mean squared error)

    L2正则损失函数在目标值附近有很好的曲度,离目标越近收敛越慢
    ③Pseudo-Huber 损失函数
    Huber损失函数经常用于回归问题,它是分段函数

    当残差(预测值与目标值的差值,即y-f(x) )很小的时候,损失函数为L2范数,残差大的时候,为L1范数的线性函数。
    Peseudo-Huber损失函数是Huber损失函数的连续、平滑估计,在目标附近连续

    该公式依赖于参数delta,delta越大,则两边的线性部分越陡峭。

    (2)分类模型的损失函数
    分类损失函数主要用于评估预测分类结果,重新定义预测值(-3至5的等差序列)和目标值(目标值为1)
    ①Hinge损失函数
    Hinge损失常用于二分类问题,主要用来评估向量机算法,但有时也用来评估神经网络算法。当预测值离越近,则损失函数越小

    ②两类交叉熵(Cross-entropy)损失函数
    交叉熵来自于信息论,是分类问题中使用广泛的损失函数。交叉熵刻画了两个概率分布之间的距离,当两个概率分布越接近时,它们的交叉熵也就越小,给定两个概率分布p和q,则距离如下

    对于两类问题,当一个概率p=y,则另一个概率q=1-y,因此代入化简后

    Cross-entropy损失函数主要应用在二分类问题上,预测值为概率值,取值范围为[0,1]

    ③Sigmoid交叉熵损失函数
    将预测值y_pred值通过sigmoid函数进行转换,再计算交叉熵损失。在TensorFlow中有内置了该函数。
    由于sigmoid函数会将输入值变小很多,从而平滑了预测值,使得sigmoid交叉熵在预测值离目标值比较远时,其损失的增长没有那么的陡峭

    ④加权交叉熵损失函数
    加权交叉熵损失函数是Sigmoid交叉熵损失函数的加权,是对正目标的加权
    ⑤Softmax交叉熵损失函数
    Softmax交叉熵损失函数是作用于非归一化的输出结果,只针对单个目标分类计算损失。
    通过softmax函数将输出结果转化成概率分布,从而便于输入到交叉熵里面进行计算(交叉熵要求输入为概率)

    结合前面的交叉熵定义公式,则Softmax交叉熵损失函数公式

    实际使用中,对于回归问题经常会使用MSE均方误差(L2取平均)计算损失,对于分类问题经常会使用Sigmoid交叉熵损失函数

  • 相关阅读:
    js中的原生Ajax和JQuery中的Ajax
    this的用法
    static的特性
    时政20180807
    java compiler没有1.8怎么办
    Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
    分词器
    [数算]有一个工程甲、乙、丙单独做,分别要48天、72天、96天完成
    一点感想
    解析Excel文件 Apache POI框架使用
  • 原文地址:https://www.cnblogs.com/hello-bug/p/12524796.html
Copyright © 2011-2022 走看看