TensorFlow入门-10.经典损失函数-原理介绍

引言:

“函数”不陌生,小时候我们曾经学过,函数表达的是一个对应关系。这种表述是相对宽泛的,也是相对准确的。宽泛是指客观来说这种表述对于数学也好,对于编程也好都是适用的。准确指的是,我主观上觉得它准确。“损失”就比较生活了,比如钱包被偷了,里面有五块钱现金,一张没有钱没来得及注销的银行卡,一包价值五毛钱的面巾纸及一张女朋友的照片。那么我们评估一下损失,发现这次损失了二十万零五块五,因为女朋友的照片我觉得差不多值二十万。这个过程就是在“评估损失”,说人话就是看看亏了多少钱。我记得一位伟大的管理学家说过“没有统计,就没有管理”,机器学习的目的其实就是提升自身的能力,提升能力这本身就是一个自身能力的定向管理过程,因此统计自然就是少不了的了。统计的核心之一就是量化,也就是用数字说话。否则记录和表达都会很烦,比如,今天丢了一丁点钱,可是今天赚了一点钱,这么算下来,我到底是亏了还是赚了呢?没有数字,就很难回答这个问题,这就是量化的作用。其实说到这里,我们会发现,其实损失函数的意义就是一个用来描述损失了多少的对应关系。

1.经典损失函数:交叉熵(cross entropy)

概念:

交叉熵常用来判断一个输出向量和期望的向量有多接近,即:刻画两个概率分布之间的距离,它是分类问题中使用比较广      的损失函数。

(交叉熵原本是信息论中的概念,可以用来估算平均编码长度)

公式:H(p,q)=-\sum_{x}{p(x)\log q(x)}

注意:

交叉熵刻画的是两个概率分布之间的距离,然而神经网络的输出却不一定是概率分布。概率分布刻画了不同事件发生的概      率。当事件总数有限的情况下,概率分布函数p(X=x)满足:

事件模型:

任意事件发生的概率都在0~1之间,且总有某一个事件发生如果将分类问题中“一个样例属于某一个类别”看成一个概率事件,那么训练数据的正确答案就符合一个概率分布。因为事件“一个样例属于不正确的类别”的概率为0,而“一个样例属于正确的类别”的概率为1。如何将神经网络前向传播得到的结果也变成概率分布呢?Softmax回归就是一个非常常用的方法。

2.概率分布生成器:Softmax回归

概念:

Softmax回归本身可以作为一个学习算法来优化分类结果,但在TensorFlow中,Softmax回归的参数被去掉了,它只是一层额外的处理层,将神经网络的输出变成一个概率分布。

TensorFlow入门-10.经典损失函数-原理介绍_第1张图片

原始的神经网络输出为y1,y2,...,yn,那么经过Softmax回归处理之后的输出为:

softmax(y)_i = y_i'=\frac{e^{y_i}}{\sum_{i=1}^{l-1}e^{y_j}}

即:原始神经网络输出被用作置信度来生成新的输出,而新的输出满足概率分布的所有要求。这个新的输出可以理解为经过神经网络的推导,一个样例为不同类别的概率是多大。这样就把神经网络的输出也变成了一个概率分布,从而可以通过交叉熵来计算预测的概率分布和真是答案的概率分布之间的距离了。

由于交叉熵函数是非对称函数,因为:

H(p,q)\neq H(q,p)

它刻画的是通过概率分布q来表达概率分布p的困难程度。因为正确答案是希望得到的结果,所以当交叉熵作为神经网络的损失函数时,p代表的是正确答案,q代表的是预测值。交叉熵刻画的是两个概率分布的距离,也就是说交叉熵值越小,两个概率分布越是接近。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器智能,损失函数,AI,TensorFlow)