• 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交叉熵损失函数

  • 相关阅读:
    HBase 使用与原理总结
    Java8 的一些使用总结
    对Redis的一些理解
    BERT模型源码解析 -- 转载
    BERT原理解析 -- 转载
    SQL 多表查询之 where和INNER JOIN
    Spark 数据处理相关代码
    Sql实战 1.单表复用进行比较排名
    LeetCode 47.括号生成 DFS递归
    LeetCode 46.机器人的运动范围
  • 原文地址:https://www.cnblogs.com/hello-bug/p/12524796.html
Copyright © 2020-2023  润新知