softmax函数与交叉熵损失函数

在这里插入图片描述

本文主要介绍了当前机器学习模型中广泛应用的交叉熵损失函数与softmax激励函数。

这个损失函数主要应用于多分类问题,用于衡量预测值与实际值之间的相似程度。

交叉熵损失函数定义如下: L C E ( y ^ , y ∗ ) = − ∑ i = 1 N c l a s s e s y i ∗ l o g ( y i ^ ) L_{CE}(\hat{y}, y^*) = - \sum_{i=1}^{Nclasses} y_i^*log(\hat{y_i}) LCE(y^,y)=i=1Nclassesyilog(yi^)

其中 y ^ \hat{y} y^ 为预测向量, y ∗ y^* y为真实标签向量。在多分类问题机器学习中, y ∗ y^* y 一般使用独热编码。例如,在一个三分类问题中, y ∗ y^* y向量的维度就是三维,对应属于某一类则该位为1,其余位为0。第一类对应的真实标签向量即为 [ 1 , 0 , 0 ] T [1, 0, 0]^T [1,0,0]T,第二类对应的真实标签向量为 [ 0 , 1 , 0 ] [0,1,0] [0,1,0] 等等以此类推。

很显然,对于这个损失函数而言,取到最小值的时候就是当求和部分取得最大值,即预测向量与标签向量相似度最大时,其乘积也最大。以下图为例,例如该类真实标签为Class2,当向量 y ^ \hat{y} y^的第二项趋向于于1,此时损失函数取得最小值,我们也保证了预测值与真实值之间的误差最小了。

在这里插入图片描述
很显然,这里我们有两个问题,其一是为什么要使用预测值的log函数值与真实的标签相乘而不直接使用两者原始值相乘。其原因在于,由于我们的概率范围总是在0-1之间,直接获取乘积往往会使得不同的损失之间的差别不大,不利于我们进一步通过这个误差来优化我们的模型。

第二个问题是,如何保证预测向量满足概率分布。我们都知道标签向量 y ∗ y^* y 由于使用了独热编码,因此他永远满足概率分布即 ∑ p ( x ) = 1 \sum p(x) = 1 p(x)=1,但是我们的预测向量 y ^ \hat{y} y^ 却不一定。这里就要用到我们的softmax激励函数了。简单的来说,softmax函数就帮助我们将一个随机数值的向量,转化为了一个所有值在0-1之间,且和为1的向量,以满足概率分布关系。softmax函数的定义如下: y t , k = e ( y t , k ) ∑ k e ( y t , k ) y_{t,k} = \frac{e^{(y_{t,k})}}{\sum_ke^{(y_{t,k})}} yt,k=ke(yt,k)e(yt,k)
其中下标t对应第t个样本,k对应输出层的第k个神经元。softmax函数首先将所有输出层神经元对应的值通过指数函数转换为正值,再通过归一化处理,除以他们的指数函数值之和,以保证所有项对应的值之和为1。

在这里插入图片描述
通过softmax函数构建概率分布再通过交叉熵,我们就构建了交叉熵损失函数。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页