Softmax 函数与交叉熵

作者: bdd1b3ad7323 | 来源:发表于2017-10-31 11:35 被阅读577次

softmax 函数

在神经网络的最后一层,通常使用 softmax 函数来将各神经元的输出压缩到 [0, 1] 之间,可以当成概率来理解。
softmax 函数的形式如下

Softmax 函数


其中,C 为输出层神经元的个数,z 是一个 C 维的向量,表示的是未经 softmax 之前的输出(softmax 层的输入)。P(i) 表示是第 i 类的概率,是一个标量

可以将 softmax 函数写成向量形式

softmax 函数的向量形式

这时的 P 是一个 C向量
举一个例子,softmax 层的输入 z

我们用 Python 编写一个 softmax 函数(Python 中默认使用行向量)

def softmax(input):
    return np.exp(input) / np.sum(np.exp(input))

该函数的输出为

可以看到, z 的值被压缩到了 [0, 1] 之间。

交叉熵

通常,对使用了 softmax 层的多分类神经网络,我们在最后一层使用的损失函数为交叉熵,它的形式如下

交叉熵函数


这里的 y^ 指的是预测值(softmax 层的输出)。y 指的是真实值,是一个 One-Hot 编码后的 C 维向量,如果样例 x 是类别 i,则 y 的第 i 维的值为 1,其余维的值为 0(例如,x 是类别 2, 共 4 类,则 y 的 值为 [0, 1, 0, 0])。
也可以将其写成向量形式

loss 函数的向量形式

对应的 cost function 如下

cost 函数

向量形式如下

cost 函数的向量形式
我们在使用梯度下降法求解的过程中,需要计算 cost 对输入 z 的导数,在 softmax + 交叉熵 组合的情况下,导数的形式非常简洁:

下面给出具体推导

相关文章

  • Softmax 函数与交叉熵

    softmax 函数 在神经网络的最后一层,通常使用 softmax 函数来将各神经元的输出压缩到 [0, 1] ...

  • UD机器学习 - C5 深度学习

    1 神经网络 sigmod函数和softmax函数最大似然概率和交叉熵和多类别交叉熵Logistic回归和梯度下降...

  • softmax函数与交叉熵函数详解

    一、二分类以上的任务与二分类任务在网络结构上的区别: 在逻辑回归模型中,模型最终输出的是样本属于正例的概率p,用1...

  • 机器学习值softmax

    softmax这个函数用于多分类任务,在我们使用中经常和交叉熵联合起来,至于交叉熵计算loss,以后看到了会写, ...

  • Maximum Likelihood 和 Maximum A P

    前言 在研究SoftMax交叉熵损失函数(Cross Entropy Loss Function)的时候,一种方法...

  • softmax与交叉熵

    机器学习中经常遇到这几个概念,用大白话解释一下: 一、归一化 把几个数量级不同的数据,放在一起比较(或者画在一个数...

  • python实现神经网络

    主要提问点 写出softmax损失函数代码(python),以及交叉熵损失函数 判断和消除过拟合的方法dropou...

  • 损失函数

    聊聊机器学习中的损失函数 机器学习中的损失函数 平方损失(线性回归) 对数损失(交叉熵损失 softmax, lo...

  • [tensorflow] tf.nn.sparse_softma

    函数说明 在计算交叉熵之前,通常要用到softmax层来计算结果的概率分布。因为softmax层并不会改变最终的分...

  • 数学

    方差 softmax 梯度下降算法 交叉熵 霍夫曼树 学习率

网友评论

    本文标题:Softmax 函数与交叉熵

    本文链接:https://www.haomeiwen.com/subject/tctvpxtx.html