返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、输出单元

发布于 2023-07-17 23:38:25 字数 5938 浏览 0 评论 0 收藏 0

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

3.1 线性输出单元

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

    • 给定特征 $ MathJax-Element-126 $ ,单个线性输出单元的输出为: $ MathJax-Element-127 $ 。
    • 若输出层包含多个线性输出单元,则线性输出层的输出为: $ MathJax-Element-128 $ 。
  2. 线性输出层经常用于学习条件高斯分布的均值: $ MathJax-Element-129 $ 。

    给定 $ MathJax-Element-130 $ 的条件下, $ MathJax-Element-223 $ 的分布为均值为 $ MathJax-Element-132 $ 、方差为 1 的高斯分布。此时:最大化对数似然函数等价于最小化均方误差。

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

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

3.2 sigmoid 输出单元

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

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

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

      $ P(y=1\mid \mathbf{\vec x})=\max\{0,\min\{1,\mathbf{\vec w}^{T}\mathbf{\vec h}+b\}\} $

      令 $ MathJax-Element-143 $ ,则上式右侧就是函数 $ MathJax-Element-142 $ ,函数图象如下。

      该函数有个问题:当 $ MathJax-Element-261 $ 位于 [0,1]之外时,模型的输出 $ MathJax-Element-720 $ 对于 $ MathJax-Element-261 $ 的梯度都为 0。根据反向传播算法,此时 $ MathJax-Element-138 $ 对于参数 $ MathJax-Element-139 $ 和参数 $ MathJax-Element-140 $ 的梯度都为零。从而使得梯度下降算法难以推进。

    • 另一种方案就是采用 sigmoid单元: $ MathJax-Element-732 $ ,其中 $ MathJax-Element-141 $ 就是sigmoid函数。

      虽然 sigmoid 函数也存在饱和的问题,但是它比 $ MathJax-Element-142 $ 要稍微缓解。

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

    根据:

    $ P(y=1\mid \mathbf{\vec x})=\sigma(z)=\frac{\exp(z)}{\exp(z)+\exp(0)}\\ P(y=0\mid \mathbf{\vec x})=1-\sigma(z)=\frac{\exp(0)}{\exp(z)+\exp(0)} $

    则有: $ MathJax-Element-740 $ 。即: $ MathJax-Element-145 $

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

    $ J(\vec\theta)=-\log P(y\mid \mathbf{\vec x})=-\log \sigma((2y-1)z)= \zeta((1-2y)z) ,\;\text{for} \;y \in \{0,1\} $

    其中 $ MathJax-Element-146 $ ,它是函数 $ MathJax-Element-147 $ 的一个近似。

    可以看到,只有当 $ MathJax-Element-148 $ 取一个非常大的负值时,代价函数才非常接近于0。因此代价为0发生在:

    • $ MathJax-Element-155 $ 且 $ MathJax-Element-261 $ 为一个较大的正值,此时表示正类分类正确。
    • $ MathJax-Element-151 $ 且 $ MathJax-Element-261 $ 为一个较大的负值 ,此时表示负类分类正确。

    当 $ MathJax-Element-261 $ 符号错误时(即 $ MathJax-Element-261 $ 为负数,而 $ MathJax-Element-155 $ ;或者 $ MathJax-Element-261 $ 为正数,但是 $ MathJax-Element-157 $ ), $ MathJax-Element-158 $ ,则softplus函数会渐进地趋向于 $ MathJax-Element-159 $ ,且其梯度不会收缩。这意味着基于梯度的学习可以很快地改正错误的 $ MathJax-Element-261 $ 。

  5. 当使用其他代价函数时(如均方误差),代价函数会在任何 $ MathJax-Element-161 $ 饱和时饱和,此时梯度会变得非常小从而无法学习。

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

3.3 softmax 输出单元

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

  2. 当表示一个具有 $ MathJax-Element-304 $ 个可能取值的离散型随机变量分布时,可以采用softmax函数。它可以视作sigmoid函数的扩展:

    $ \mathbf{\vec z}=\mathbf W^{T}\mathbf{\vec h}+\mathbf{\vec b}\\ \hat y_i=P(y=i\mid \mathbf{\vec x})=\text{softmax}(\mathbf{\vec z})_i=\frac{\exp(z_i) }{\sum_j \exp(z_j)},\quad i=1,2,\cdots,K\\ \hat{\mathbf{\vec y}}=(\hat y_1,\hat y_2,\cdots,\hat y_K)^{T} $

    $ MathJax-Element-165 $ 表示类别为 $ MathJax-Element-306 $ 的概率。

  3. 当所有输入都加上一个相同常数时,softmax的输出不变。即: $ MathJax-Element-771 $ 。

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

    $ \text{softmax}(\mathbf{\vec z})=\text{softmax}(\mathbf{\vec z}-\max_i z_i) $
  4. softmax函数是argmax函数的软化版本,而不是max函数的软化版本。

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

    • softmax函数是连续可微的。

      当某个输入最大( $ MathJax-Element-186 $ ),且 $ MathJax-Element-247 $ 远大于其他的输入时,对应的位置输出非常接近 1 ,其余的位置的输出非常接近 0 。

    • max函数的软化版本为 $ MathJax-Element-170 $ 。

  5. 假设真实类别为 $ MathJax-Element-299 $ ,则softmax 输出的对数似然函数为: $ MathJax-Element-784 $ 。

    其中:第一项 $ MathJax-Element-787 $ 不会饱和(它的梯度不会为零),第二项近似为 $ MathJax-Element-173 $ 。

    为了最大化对数似然函数:第一项鼓励 $ MathJax-Element-787 $ 较大,第二项鼓励所有的 $ MathJax-Element-179 $ 较小。此时意味着:若真实类别为 $ MathJax-Element-299 $ ,则 $ MathJax-Element-787 $ 较大,其它的 $ MathJax-Element-179 $ 较小。

  6. 基于对数似然函数的代价函数为: $ MathJax-Element-801 $ 。

    因此代价函数惩罚那个最活跃的预测(最大的 $ MathJax-Element-179 $ )。如果 $ MathJax-Element-804 $ ,则代价函数近似为零。

  7. 当输入是绝对值较小的负数时, $ MathJax-Element-188 $ 的计算结果可能为 0 。此时 $ MathJax-Element-182 $ 趋向于负无穷,非数值稳定的。

    因此需要设计专门的函数来计算 $ MathJax-Element-183 $ ,而不是将 $ MathJax-Element-184 $ 的结果传递给 $ MathJax-Element-185 $ 函数。

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

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

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

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

    当某个输入最大( $ MathJax-Element-186 $ ),且 $ MathJax-Element-247 $ 远大于其他的输入时: $ MathJax-Element-188 $ 将饱和到 1 , $ MathJax-Element-189 $ 将饱和到 0 。

3.4 其他输出单元

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

    如果定义了一个条件分布 $ MathJax-Element-190 $ ,则最大似然准则建议使用 $ MathJax-Element-191 $ 作为代价函数。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文