您的位置:首页 > Web前端

caffe study(3) 关于激活函数以及loss function

2015-07-14 09:33 393 查看
loss 是估计值和真实值之映射到某一空间的误差,而loss function就是这种误差的描述形式,loss function反映出了对于问题的定义。在caffe中,包含了常用的loss function,主要有以下几种:

MULTINOMIAL_LOGISTIC_LOSS

SIGMOID_CROSS_ENTROPY_LOSS

SOFTMAX_LOSS

EUCLIDEAN_LOSS

HINGE_LOSS

INFOGAIN_LOSS

下面来看一下他们的具体形式(公式和世界的代码有些出入,下面材料的绝大部分来自于wiki)

1. EUCLIDEAN_LOSS

这个loss的具体含义就是所有样本估计值和预测值的欧式距离平方的均值,也就是均方根误差(MSE)。





假设模型结果与测量值 误差满足,均值为0的高斯分布,即正态分布。这个假设是靠谱的,符合一般客观统计规律。

数据x与y的条件概率:





若使 模型与测量数据最接近,那么其概率积就最大。概率积,就是概率密度函数的连续积,这样,就形成了一个最大似然函数估计。对最大似然函数估计进行推导,就得出了求导后结果: 平方和最小公式

MSE误差的优点是执行简单,较容易理解,缺点就是强制预测和标注要exactly的匹配,也就是一个非0即1的概念,本节点和其他节点是独立的,这样带来的问题是会导致最后的train出来的model有可能并不是那么准确。

2. MULTINOMIAL_LOGISTIC_LOSS

如果一个事件发生的概率为:





那么事件几率的概念是指的发生的概率与不发生的概率的比值,取对数则称为对数几率(log odds)。

the logit




对于对元的分布,采用base-line logit,如下所示。(从某种意义上二元的logit是多元的一个特例)





通过概率和为1这样一个约束,可以得到Pr(Y=K)的表示,从而推导出K-1个分布的公式,如下所示:





所有样本的概率和就是最后使用到的MULTINOMIAL_LOGISTIC_LOSS

3. SOFTMAX_LOSS





下面看一下基本的softmax的推导过程

在概率论中,一个归一化常数的的作用让所有的密度函数满足和为1这样一个条件




此处采用log的形式描述,其中Z为归一化的常数









得到





根据和为1这样的约束可以得到





softmax 则采用了连续函数来进行函数的逼近,最后采用概率的形式进行输出,这样就弱化了EUCLIDEAN_LOSS中带来的问题。





softmax中,各个节点的输出是一个归一化后的概率值,这个值随着每次迭代是动态变化的。

4. softmax和multinomial logistic的统一性

最后得到softmax的形式,在所有的beta参数中,只有K-1个是独立的,对于所有添加一个常量C不改变softmax的值,证明如下:





如果这个把最后一个第K个样本的beta设置为常数,得到如下的变换





带入原来的公式,可以得到:





这个输出就是multinomial logistic.

5. INFOGAIN_LOSS

信息熵是对于信息的一种量化,是对于某种系统信息的一种量度,熵就是系统的平均信息量,也可以理解为某种信息出现的概率。





信息增益是在加入一个条件后,所得到的熵和原来的熵的差,具体形式如下:





6. SIGMOID_CROSS_ENTROPY_LOSS





7. HINGE_LOSS




求和后便成了Hinge loss

这个loss就是SVM用到的loss。Hinge loss就是0-1 loss的改良版,这个改良主要在两个方面,一个是在t.y在【0 1】之间不再是采用hard的方式,而是一个soft的方式。另外一个就是在【-inf,0】之间不再采用固定的1来定义能量的损失,而是采用一个线性函数对于错误分类的情况进行惩罚。

下面是两个常用的激活函数

8. TANH









9. ReLU

relu是rectified linear unit的简写





对于ReLU函数的近soft-plus函数





他们的函数曲线如下图所示





和其他的函数比较起来,ReLU函数更符合生物学的激活模型。

a.ReLU是单方向的

b.在激活方面,这个函数强制阈值下的值为0,因此可以不使用l1正则就可以达到稀疏的目的。

c.可以有效的缓解vanishing gradient problem,原来的vanishing gradient problem主要因为在backward过程中gradient随着深度的增加不断的连乘,如果每部分都小于1的话,随着层数的增加这个值会越来越小,从而导致vanishing gradient的问题。而ReLU函数由于没有上限,因此其导数在很大层度上缓解了这个问题。而sigmod以及tanh函数都没有这样的一个性质。

d.计算速度快。

因此ReLU是现在DNN模型中比较常用的激活函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: