三、输出单元

  1. 代价函数的选取和输出单元的类型紧紧相关。
  2. 任何类型的输出单元,也可以用作隐单元。

3.1 线性输出单元

  1. 最简单的输出单元为线性单元:它基于仿射变换,不包含非线性。

    • 给定特征 三、输出单元 - 图1,单个线性输出单元的输出为: 三、输出单元 - 图2
    • 若输出层包含多个线性输出单元,则线性输出层的输出为: 三、输出单元 - 图3
  2. 线性输出层经常用于学习条件高斯分布的均值: 三、输出单元 - 图4

    给定 三、输出单元 - 图5 的条件下, 三、输出单元 - 图6 的分布为均值为 三、输出单元 - 图7、方差为 1 的高斯分布。此时:最大化对数似然函数等价于最小化均方误差。

  3. 最大似然准则也可以用于学习高斯分布的协方差矩阵。但是由于协方差矩阵的特点(对称的、正定的),因此用线性输出层来描述这种限制是困难的。所以通常采用其他类型的输出单元来学习协方差矩阵。

  4. 线性模型不会饱和,因此可以方便的使用基于梯度的优化算法。

3.2 sigmoid 输出单元

  1. sigmoid单元:用于Bernoulli分布的输出。

  2. 二类分类问题可以用伯努利分布来描述。由于伯努利分布只需要一个参数来定义,因此神经网络只需要预测 三、输出单元 - 图8,它必须位于区间 [0,1]之间。

    • 一种方案是采用线性单元,但是通过阈值来使它位于 [0,1]之间:

      三、输出单元 - 图9

      三、输出单元 - 图10,则上式右侧就是函数 三、输出单元 - 图11,函数图象如下。

      三、输出单元 - 图12

      该函数有个问题:当 三、输出单元 - 图13 位于 [0,1]之外时,模型的输出 三、输出单元 - 图14 对于 三、输出单元 - 图15 的梯度都为 0。根据反向传播算法,此时 三、输出单元 - 图16 对于参数 三、输出单元 - 图17 和参数 三、输出单元 - 图18 的梯度都为零。从而使得梯度下降算法难以推进。

    • 另一种方案就是采用 sigmoid单元:三、输出单元 - 图19 ,其中 三、输出单元 - 图20 就是sigmoid函数。

      三、输出单元 - 图21

      虽然 sigmoid 函数也存在饱和的问题,但是它比 三、输出单元 - 图22 要稍微缓解。

  3. sigmoid输出单元有两个部分:首先它用一个线性层来计算 三、输出单元 - 图23 ;然后它使用 sigmoid激活函数将 三、输出单元 - 图24 转化成概率。

    根据:

    三、输出单元 - 图25

    则有:三、输出单元 - 图26 。即: 三、输出单元 - 图27

  4. sigmoid单元的代价函数通常采用负的对数似然函数:

    三、输出单元 - 图28

    其中 三、输出单元 - 图29 ,它是函数 三、输出单元 - 图30 的一个近似。

    三、输出单元 - 图31

    可以看到,只有当 三、输出单元 - 图32 取一个非常大的负值时,代价函数才非常接近于0。因此代价为0发生在:

    • 三、输出单元 - 图33三、输出单元 - 图34 为一个较大的正值,此时表示正类分类正确。
    • 三、输出单元 - 图35三、输出单元 - 图36 为一个较大的负值 ,此时表示负类分类正确。

    三、输出单元 - 图37 符号错误时(即 三、输出单元 - 图38 为负数,而 三、输出单元 - 图39 ;或者 三、输出单元 - 图40 为正数,但是 三、输出单元 - 图41 ), 三、输出单元 - 图42 ,则softplus函数会渐进地趋向于 三、输出单元 - 图43,且其梯度不会收缩。这意味着基于梯度的学习可以很快地改正错误的 三、输出单元 - 图44

  5. 当使用其他代价函数时(如均方误差),代价函数会在任何 三、输出单元 - 图45 饱和时饱和,此时梯度会变得非常小从而无法学习。

    因此最大似然函数总是训练sigmoid输出单元的首选代价函数。

3.3 softmax 输出单元

  1. softmax单元:用于multinoulli分布的输出。

  2. 当表示一个具有 三、输出单元 - 图46 个可能取值的离散型随机变量分布时,可以采用softmax函数。它可以视作sigmoid函数的扩展:

    三、输出单元 - 图47

    三、输出单元 - 图48 表示类别为 三、输出单元 - 图49 的概率。

  3. 当所有输入都加上一个相同常数时,softmax的输出不变。即:三、输出单元 - 图50

    根据该性质,可以导出一个数值稳定的softmax函数的变体:

    三、输出单元 - 图51

  4. softmax函数是argmax函数的软化版本,而不是max函数的软化版本。

    • argmax函数的结果为一个独热向量(只有一个元素为1,其余元素都是0),且不可微。

    • softmax函数是连续可微的。

      当某个输入最大(三、输出单元 - 图52),且 三、输出单元 - 图53 远大于其他的输入时,对应的位置输出非常接近 1 ,其余的位置的输出非常接近 0 。

    • max函数的软化版本为 三、输出单元 - 图54

  5. 假设真实类别为 三、输出单元 - 图55 ,则softmax 输出的对数似然函数为: 三、输出单元 - 图56

    其中:第一项 三、输出单元 - 图57 不会饱和(它的梯度不会为零),第二项近似为 三、输出单元 - 图58

    为了最大化对数似然函数:第一项鼓励 三、输出单元 - 图59 较大,第二项鼓励所有的 三、输出单元 - 图60 较小。此时意味着:若真实类别为 三、输出单元 - 图61 ,则 三、输出单元 - 图62 较大,其它的 三、输出单元 - 图63 较小。

  6. 基于对数似然函数的代价函数为:三、输出单元 - 图64

    因此代价函数惩罚那个最活跃的预测(最大的 三、输出单元 - 图65 )。如果 三、输出单元 - 图66,则代价函数近似为零。

  7. 当输入是绝对值较小的负数时, 三、输出单元 - 图67 的计算结果可能为 0 。此时 三、输出单元 - 图68 趋向于负无穷,非数值稳定的。

    因此需要设计专门的函数来计算 三、输出单元 - 图69 ,而不是将 三、输出单元 - 图70 的结果传递给 三、输出单元 - 图71 函数。

  8. 除了负对数似然,其他的许多代价函数对softmax函数不适用(如均方误差代价函数)。

    softmax 函数将在很多情况下饱和,饱和意味着梯度消失,而梯度消失会造成学习困难。

    softmax函数饱和时,此时基于softmax函数的代价函数也饱和;除非它们能将softmax转化为成其它形式,如对数形式。

  9. softmax 函数饱和的一般化形式:对于softmax函数,它有多个输出值;当输入值之间的差异较大时,某些输出值可能饱和。

    当某个输入最大(三、输出单元 - 图72),且 三、输出单元 - 图73 远大于其他的输入时:三、输出单元 - 图74 将饱和到 1 ,三、输出单元 - 图75 将饱和到 0 。

3.4 其他输出单元

  1. 任何其他类型的输出单元都可以应用到神经网络,这些输出单元通常使用负的对数似然作为代价函数。

    如果定义了一个条件分布 三、输出单元 - 图76,则最大似然准则建议使用 三、输出单元 - 图77 作为代价函数。