2017-10-12 94 views
3

直到现在才了解 - 激活函数应用于神经元。函数内部的内容是每个(连通神经元值*连接权重)的和。单个值进入函数,单值从它返回。以上的理解与tanhsigmoid正常工作。
现在我知道softmax是如何工作的,它总结了与其相关的所有值和值。令我困惑的是,我需要一个数组数组,我开始质疑这些数组的来源是什么形成数组?
如何在神经网络中使用Softmax激活功能

下图给出了更深入地了解问题

enter image description here

+0

Softmax用于多类分类问题,其中有多个输出神经元(每个类一个)。如果你只有一个输出神经元,它不会使用softmax,你通常会使用(用于分类)常规的S形激活或类似的。 – jdehesa

+0

@jdehesa是我知道这一点,请假设上面的图片有三个输出神经元,如果我错了,纠正我输出神经元的数量无关紧要计算每个隐藏层softmax激活值 –

回答

4

使用SoftMax工作的神经元的整个层上,并且必须将其所有的值来计算每个它们的输出的。

的SOFTMAX功能看起来像softmax_i(v) = exp(v_i)/sum_j(exp(v_j)),其中V将是你的神经元值(在你的形象,[0.82, 1.21, 0.74])和exp只是exp(x) = e^x。因此,exp(v_i)将是[2.27, 3.35, 2.096]。将这些值中的每一个除以整个矢量的总和,得到[0.29, 0.43, 0.27]。这些是你神经元的激活输出。

这很有用,因为这些值加起来为1(原谅上面例子中的舍入误差,总和为0.99 ...你会得到这个想法),因此可以解释为概率,例如,图像是一个特定的类(当它只能属于一个类)。这就是为什么计算需要知道整个神经元矢量的值,并且如果只知道单个神经元的值,则无法计算。

请注意,因此,softmax后通常不会有其他图层。通常,softmax是作为输出层上的激活应用的,而不是像您展示的中间层。也就是说,按照你展示的方式建立一个网络是完全有效的,你将只有另一个重量层进入你的单输出神经元,并且你不能保证该输出值可能是多少。一个更典型的架构将是2 neurons -> 3 neurons (sigmoid) -> 4 neurons (softmax),现在你将有可能将你的输入值归入四类之一。

+0

非常感谢@scnerd精心设计的ans –

相关问题