三、输出单元
- 代价函数的选取和输出单元的类型紧紧相关。
- 任何类型的输出单元,也可以用作隐单元。
3.1 线性输出单元
最简单的输出单元为线性单元:它基于仿射变换,不包含非线性。
- 给定特征 ,单个线性输出单元的输出为: 。
- 若输出层包含多个线性输出单元,则线性输出层的输出为: 。
线性输出层经常用于学习条件高斯分布的均值: 。
给定 的条件下, 的分布为均值为 、方差为
1
的高斯分布。此时:最大化对数似然函数等价于最小化均方误差。最大似然准则也可以用于学习高斯分布的协方差矩阵。但是由于协方差矩阵的特点(对称的、正定的),因此用线性输出层来描述这种限制是困难的。所以通常采用其他类型的输出单元来学习协方差矩阵。
线性模型不会饱和,因此可以方便的使用基于梯度的优化算法。
3.2 sigmoid 输出单元
sigmoid
单元:用于Bernoulli
分布的输出。二类分类问题可以用伯努利分布来描述。由于伯努利分布只需要一个参数来定义,因此神经网络只需要预测 ,它必须位于区间
[0,1]
之间。一种方案是采用线性单元,但是通过阈值来使它位于
[0,1]
之间:令 ,则上式右侧就是函数 ,函数图象如下。
该函数有个问题:当 位于
[0,1]
之外时,模型的输出 对于 的梯度都为 0。根据反向传播算法,此时 对于参数 和参数 的梯度都为零。从而使得梯度下降算法难以推进。另一种方案就是采用
sigmoid
单元: ,其中 就是sigmoid
函数。虽然
sigmoid
函数也存在饱和的问题,但是它比 要稍微缓解。
sigmoid
输出单元有两个部分:首先它用一个线性层来计算 ;然后它使用sigmoid
激活函数将 转化成概率。根据:
则有: 。即:
sigmoid
单元的代价函数通常采用负的对数似然函数:其中 ,它是函数 的一个近似。
可以看到,只有当 取一个非常大的负值时,代价函数才非常接近于0。因此代价为0发生在:
- 且 为一个较大的正值,此时表示正类分类正确。
- 且 为一个较大的负值 ,此时表示负类分类正确。
当 符号错误时(即 为负数,而 ;或者 为正数,但是 ), ,则
softplus
函数会渐进地趋向于 ,且其梯度不会收缩。这意味着基于梯度的学习可以很快地改正错误的 。当使用其他代价函数时(如均方误差),代价函数会在任何 饱和时饱和,此时梯度会变得非常小从而无法学习。
因此最大似然函数总是训练
sigmoid
输出单元的首选代价函数。
3.3 softmax 输出单元
softmax
单元:用于multinoulli
分布的输出。当表示一个具有 个可能取值的离散型随机变量分布时,可以采用
softmax
函数。它可以视作sigmoid
函数的扩展:表示类别为 的概率。
当所有输入都加上一个相同常数时,
softmax
的输出不变。即: 。根据该性质,可以导出一个数值稳定的
softmax
函数的变体:softmax
函数是argmax
函数的软化版本,而不是max
函数的软化版本。argmax
函数的结果为一个独热向量(只有一个元素为1,其余元素都是0),且不可微。softmax
函数是连续可微的。当某个输入最大(),且 远大于其他的输入时,对应的位置输出非常接近 1 ,其余的位置的输出非常接近 0 。
max
函数的软化版本为 。
假设真实类别为 ,则
softmax
输出的对数似然函数为: 。其中:第一项 不会饱和(它的梯度不会为零),第二项近似为 。
为了最大化对数似然函数:第一项鼓励 较大,第二项鼓励所有的 较小。此时意味着:若真实类别为 ,则 较大,其它的 较小。
基于对数似然函数的代价函数为: 。
因此代价函数惩罚那个最活跃的预测(最大的 )。如果 ,则代价函数近似为零。
当输入是绝对值较小的负数时, 的计算结果可能为 0 。此时 趋向于负无穷,非数值稳定的。
因此需要设计专门的函数来计算 ,而不是将 的结果传递给 函数。
除了负对数似然,其他的许多代价函数对
softmax
函数不适用(如均方误差代价函数)。softmax
函数将在很多情况下饱和,饱和意味着梯度消失,而梯度消失会造成学习困难。softmax
函数饱和时,此时基于softmax
函数的代价函数也饱和;除非它们能将softmax
转化为成其它形式,如对数形式。softmax
函数饱和的一般化形式:对于softmax
函数,它有多个输出值;当输入值之间的差异较大时,某些输出值可能饱和。当某个输入最大(),且 远大于其他的输入时: 将饱和到 1 , 将饱和到 0 。
3.4 其他输出单元
任何其他类型的输出单元都可以应用到神经网络,这些输出单元通常使用负的对数似然作为代价函数。
如果定义了一个条件分布 ,则最大似然准则建议使用 作为代价函数。