在许多神经网络软件包中,将目标函数与输出层中的激活函数配对以使其最小化似乎是标准的。
例如,对于用于回归的线性输出层,具有平方误差目标函数是标准的(通常是唯一的选择)。另一个常见的配对是逻辑输出和对数损失(或交叉熵)。还有一个是softmax和多对数丢失。
使用符号表示激活前的值(权重之和乘以来自上一层的激活),表示激活,表示用于训练的地面真理,表示输出神经元的索引。一个ÿ 我
线性激活带有平方误差1
乙状结肠激活与对数损耗/交叉熵目标 -Σ∀我(ÿ我*升Ô克(一我)+(1-Ÿ我)*升Ô克(1-一个我))
Softmax激活与多类对数丢失目标
这些是我所知道的,我希望有很多我还没有听说过。
似乎只有输出和目标在[0,1]范围内时,对数损失才会起作用,并且数值上稳定。因此,尝试使用具有logloss目标函数的线性输出层可能没有意义。除非有一个更通用的logloss函数可以处理超出范围的值?
但是,尝试使用平方误差目标的S型输出看起来并不那么糟糕。它应该稳定并且至少收敛。
我了解这些配对背后的某些设计是,它使得的公式-其中是目标函数的值-易于向后传播。但是,仍然有可能使用其他配对来找到该导数。此外,还有许多其他激活函数在输出层中并不常见,但可行的是,例如,并且不清楚可以应用什么目标函数。tanh
在设计神经网络的体系结构时,是否会使用或应该使用输出激活和目标函数的“非标准”对?