Python----深度学习(Softmax与交叉熵)

一、Softmax

        Softmax是一种常见的激活函数,可以将计算出来的数值通过公式变成概率,通常用 在分类中。

        Softmax从字面上来说,可以分成soft和max两个部分。Max顾名思义就是最大值的 意思。Softmax的核心在于soft,而soft有软的含义,与之相对的是hard硬。很多场 景中需要我们找出数组所有元素中值最大的元素,实质上都是求的hardmax。

        hardmax最大的特点就是只选出其中一个最大的值,即非黑即白。但是往往在实际 中这种方式是不合情理的,比如对于文本分类来说,一篇文章或多或少包含着各种主 题信息,我们更期望得到文章对于每个可能的文本类别的概率值。 所以此时用到了soft的概念,Softmax的含义就在于不再唯一的确定某一个最大值, 而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

        通俗的讲,对于猫狗分类来说,输入一张图片经过前向计算与Softmax激活后,最后 得到的是两个概率值,一个是该图片属于猫的概率,一个是该图片属于狗的概率,而 不再是该图片百分百就是猫或百分百就是狗。

Python----深度学习(Softmax与交叉熵)_第1张图片

import numpy as np
a = np.array([0.3, 2.9, 4.0])
exp_a = np.exp(a)
print(exp_a)
#[ 1.34985881 18.17414537 54.59815003]
sum_exp_a = np.sum(exp_a)
print(sum_exp_a)
#74.1221542101633
y = exp_a / sum_exp_a
print(y)
#[0.01821127 0.24519181 0.73659691]

        Softmax的作用是:Softmax函数的主要作用是将一组输入值(可以是任何实 数)映射到(0,1)区间内,并输出为概率分布。Softmax的输出可以被理解为属于每个 类别的概率,且所有类别的概率之和为1。

二、交叉熵

        交叉熵用于衡量一个概率分布与另一个概率分布之间的差异。在机器学 习中,我们通常用它来衡量模型输出的概率分布与实际标签的分布之间的差异。在分 类问题中,假设有一个样本属于多个类别之一,交叉熵帮助我们度量模型对真实类别 的预测与实际类别的分布之间的差异。

Python----深度学习(Softmax与交叉熵)_第2张图片

        在机器学习中,常见的交叉熵损失函数有两种形式:二分类交叉熵(Binary Cross Entropy)和多分类交叉熵(Categorical Cross-Entropy)。

Python----深度学习(Softmax与交叉熵)_第3张图片

         在训练神经网络时,我们的目标是最小化交叉熵损失,从而使模型的输出尽可能接近 真实的概率分布。这样的训练过程有助于提高模型对不同类别的分类准确性。

三、 Softmax与交叉熵

        由于Softmax最后得到的结果的和为1并且是一个概率,所以可以将Softmax的结果 带入交叉熵中,得到Softmax的损失函数。

Python----深度学习(Softmax与交叉熵)_第4张图片

Python----深度学习(Softmax与交叉熵)_第5张图片

        输入层包含了两个节点,说明该神经网络有两个输入特征;隐藏层只有一个节 点;输出层的节点与分类结果对应,比如三分类就有三个节点,四分类就有四个节 点。然后将输出层的结果经过Softmax计算并带入交叉熵公式中,得到损失值的大 小。

        注意:实际上这种神经网络几乎毫无意义。

你可能感兴趣的:(深度学习,Python,python,深度学习,开发语言)