Maxout的确切定义

机器算法验证 机器学习 神经网络
2022-03-18 17:00:16

我一直试图弄清楚神经网络中“Maxout”激活函数的确切含义。这个问题,这篇论文,甚至在Bengio 等人的深度学习书中都有。,除了只有一点点信息和旁边的大 TODO。

为清楚起见,我将使用此处描述的符号。我只是不想重新输入它并导致问题膨胀。简而言之,,换句话说,一个神经元有一个偏差,每个输入的单个权重,然后将输入乘以权重相加,然后添加偏差并应用激活函数来获得输出(也称为激活)值。aji=σ(zji)=σ(kaki1wjki+bji)

到目前为止,我知道 Maxout 是一个“输出最大输入”的激活函数。这意味着什么?以下是我可以从中解释的一些想法:

  1. aji=maxk(aki1),也称为最大池化。
  2. aji=maxk(aki1wjki)+bji,简单地用最大值替换通常完成的总和。
  3. aji=maxk(aki1wjki+bjki),其中每个神经元现在对每个输入都有一个偏置值,而不是应用单个偏置值在对所有输入求和后。这将使反向传播不同,但仍然可能。
  4. 每个zji都按正常计算,每个神经元对每个输入都有一个偏差和一个权重。然而,类似于 softmax ( a^i_j = \frac{\exp(z^i_j)}{\sum\limits_k \exp(z^i_k)} ),这取当前层中所有zaji=exp(zji)kexp(zki)最大值形式上,a^i_j=\max\limits_k z^i_kzaji=maxkzki

这些都是正确的吗?还是有什么不同?

1个回答

以上都不是; maxout 网络不遵循您假设的架构。

从您链接的论文中“maxout 的描述”部分的开头,它定义了 maxout:

给定输入可能是,或者可能是隐藏层的状态),一个 maxout 隐藏层实现函数xRdxv

hi=maxj[1,k]zij

其中是学习参数。zij=xTWij+bijWRd×m×kbRm×k

因此,个单元中的每个单元都有前一层的个仿射函数的最大值。想象每一层通过个不同颜色的连接连接到前一层,并取颜色中的最大值。mkkk

或者,您可以将 maxout 单元视为实际上是两层:前一层的每个单元都使用身份激活函数连接到个单元中的每一个,然后单个单元将这些线性单元与最大池激活连接.kk

这意味着单位,被视为从的函数,是仿射函数的分段最大值。该论文的图 1 给出了一些不同功能的示例,可能如下所示:RdR

在此处输入图像描述

每条虚线代表你可以用这种方式表示任何凸函数,这非常好。WTx+b