了解到现在 - 激活函数应用于神经元。函数内部是每个(连接神经元值*连接权重)的总和。单个值进入函数,单个值从它。上面的理解适用于 tanh 和 sigmoid 。
现在我知道softmax是如何工作的,它总结了价值和其他与之相关的一切。让我感到困惑的是 softmax 采用一组数字,我开始质疑这些数字的来源是什么形成数组?
以下图片更深入地了解了问题
答案 0 :(得分: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)
,现在您可能会将输入值分为四类之一。