自编码器是否有必要使用线性瓶颈层?
Is it necessary to use a linear bottleneck layer for autoencoder?
我目前正在尝试使用自动编码器网络进行降维。
(即使用瓶颈激活作为压缩特征)
我注意到很多使用自动编码器完成此任务的研究都使用了线性瓶颈层。
凭直觉,我认为这是有道理的,因为使用非线性激活函数可能会降低瓶颈特征表示原始特征中包含的主要信息的能力。
(例如,ReLU 忽略负值,sigmoid 抑制太高或太低的值)
但是,这是正确的吗?是否有必要对自动编码器使用线性瓶颈层?
如果可以使用非线性引导层,哪种激活函数是最佳选择?
谢谢。
不,您不限于线性激活函数。一个例子是 this work,他们使用 GRU 层的隐藏状态作为输入的嵌入。隐藏状态是通过在其计算中使用非线性tanh和sigmoid函数获得的。
此外,'ignoring' 负值也没有错。事实上,稀疏性可能是有益的。它可以增强代表性。可以由其他函数(例如恒等函数或 sigmoid 函数)创建的噪声可能会在存在 none 的地方引入错误的依赖关系。通过使用 ReLU,我们可以正确地表示缺乏依赖性(作为零),而不是一些接近零的值,例如乙状结肠功能。
我目前正在尝试使用自动编码器网络进行降维。 (即使用瓶颈激活作为压缩特征)
我注意到很多使用自动编码器完成此任务的研究都使用了线性瓶颈层。
凭直觉,我认为这是有道理的,因为使用非线性激活函数可能会降低瓶颈特征表示原始特征中包含的主要信息的能力。 (例如,ReLU 忽略负值,sigmoid 抑制太高或太低的值)
但是,这是正确的吗?是否有必要对自动编码器使用线性瓶颈层?
如果可以使用非线性引导层,哪种激活函数是最佳选择?
谢谢。
不,您不限于线性激活函数。一个例子是 this work,他们使用 GRU 层的隐藏状态作为输入的嵌入。隐藏状态是通过在其计算中使用非线性tanh和sigmoid函数获得的。
此外,'ignoring' 负值也没有错。事实上,稀疏性可能是有益的。它可以增强代表性。可以由其他函数(例如恒等函数或 sigmoid 函数)创建的噪声可能会在存在 none 的地方引入错误的依赖关系。通过使用 ReLU,我们可以正确地表示缺乏依赖性(作为零),而不是一些接近零的值,例如乙状结肠功能。