是否有必要使用线性瓶颈层进行自动编码?

时间:2018-05-05 07:58:24

标签: neural-network autoencoder

我目前正在尝试使用自动编码器网络来降低维数。 (即使用瓶颈激活作为压缩特征)

我注意到很多使用自动编码器完成此任务的研究都使用线性瓶颈层。

凭直觉,我认为这是有道理的,因为使用非线性激活函数可以减少瓶颈特征表示原始特征中包含的主要信息的能力。 (例如,ReLU忽略负值,sigmoid抑制值太高或太低)

但是,这是正确的吗?是否需要使用线性瓶颈层来实现自动编码器?

如果可以使用非线性bootleneck层,那么哪种激活功能是最佳选择?

感谢。

1 个答案:

答案 0 :(得分:1)

不,您不仅限于线性激活功能。其中一个例子是this work,它们使用GRU图层的隐藏状态作为输入的嵌入。隐藏状态是通过在计算中使用非线性tanh和sigmoid函数获得的。

此外,忽略'并没有错。负值。事实上,稀疏性可能是有益的。它可以增强表示。其他函数(如identity或sigmoid函数)可能产生的噪声可能会引入错误的依赖关系。通过使用ReLU,我们可以恰当地表示缺乏依赖性(作为零)而不是某些接近于零的值,这可能是例如乙状结肠功能。