3-8 Softmax 回归

Softmax 回归(Softmax regression)

我们讲到过的分类的例子都使用了二分分类,这种分类只有两种可能的标记 0 或 1,这是一只猫或者不是一只猫,如果我们有多种可能的类型的话呢?有一种 logistic回归的一般形式,叫做 Softmax 回归,能让你在试图识别某一分类时做出预测,或者说是多种分类中的一个,不只是识别两个分类。

假设你不单需要识别猫,而是想识别猫,狗和小鸡,我把猫加做类 1,狗为类 2,小鸡是类 3, 如果不属于以上任何一类, 就分到“其它”或者说“以上均不符合”这一类, 我把它叫做类 0。

这里显示的图片及其对应的分类就是一个例子,这幅图片上是一只小鸡,所以是类3,猫是类 1,狗是类 2,我猜这是一只考拉,所以以上均不符合,那就是类 0,下一个类 3,以此类推。我们将会用符号表示,我会用大写的C来表示你的输入会被分入的类别总个数,在这个例子中, 我们有 4 种可能的类别, 包括“其它”或“以上均不符合”这一类。 当有 4 个分类时,指示类别的数字,就是从 0 到C-1,换句话说就是 0、 1、 2、 3。

 

 

在这个例子中,我们建立一个神经网络,其输出层有 4 个,或者说C个输出单元,我们想要输出层单元的数字告诉我们这 4 种类型中每个的概率有多大。因此这里的$\hat y$将是一个4 × 1维向量,因为它必须输出四个数字,给你这四种让你的网络做到这一点的标准模型要用到 Softmax 层,以及输出层来生成输出:

在神经网络的最后一层,你将会像往常一样计算各层的线性部分,${z^{[l]}}$ 这是最后一层的z变量,${z^{[l]}}$的计算方式如之前一样:

${z^{[l]}} = {w^{[l]}}{a^{[l - 1]}} + {b^{[l]}}$

算出了z之后,你需要应用 Softmax 激活函数,这个激活函数对于 Softmax 层而言有些不同,它的作用是这样的:

首先,我们要计算一个临时变量,我们把它叫做 t,它等于${e^{{z^{[l]}}}}$ ,这适用于每个元素,而这里的${z^{[l]}}$ ,在我们的例子中,${z^{[l]}}$ 是 4×1 的,四维向量$t = {e^{{z^{[l]}}}}$ ,这是对所有元素求幂,t也是一个4×1维向量,然后输出的${a^{[l]}}$,再经过归一化,使和为1,即:

$a_i^{^{[l]}} = \frac{{{t_i}}}{{\sum\nolimits_{j = 1}^4 {{t_i}} }} = \frac{{{e^{{z_i}^{[l]}}}}}{{\sum\nolimits_{j = 1}^4 {{t_i}} }}$

我们来看一个例子,详细解释,假设你算出了${z^{[l]}}$,${z^{[l]}}$是一个四维向量。假设${z^{[l]}}$ 为:

我们要做的就是用这个元素取幂方法来计算t:

所得的值为:

如果你把t的元素都加起来,把这四个数字加起来,得到176.3,最终${a^{[l]}} = \frac{t}{{176.3}}$,按此计算得:

所以这种算法通过向量${z^{[l]}}$ 计算出总和为 1 的四个概率。

总结一下从${z^{[l]}}$ 到${a^{[l]}}$ 的计算步骤,整个计算过程,从计算幂到得出临时变量t再归一化,我们可以将此概括为一个 Softmax 激活函数。

${a^{[l]}} = {g^{[l]}}({z^{[l]}})$ ,这一激活函数的与众不同之处在于,这个激活函数g需要输入一个4×1 维向量,然后输出一个4×1 维向量。之前,我们的激活函数都是接受单行数值输入,例如 Sigmoid ReLu 激活函数,输入一个实数,输出一个实数。 Softmax 激活函数的特殊之处在于,因为需要将所有可能的输出归一化,就需要输入一个向量,最后输出一个向量。

 整个计算过程如下:

posted @ 2018-09-24 16:23  刘-皇叔  阅读(394)  评论(0编辑  收藏  举报