【问题标题】:Preprocessing and dropout in Autoencoders?自动编码器中的预处理和丢失?
【发布时间】:2018-11-19 20:23:33
【问题描述】:

我正在使用自动编码器并且很少有混淆,我正在尝试不同的自动编码器,例如:

fully_connected autoencoder
convolutional autoencoder
denoising autoencoder 

我有两个数据集,一个是具有浮点和整数值的数值数据集,第二个是具有文本和日期值的文本数据集:

数值数据集如下:

date ,        id ,             check_in , check_out , coke_per , permanent_values , temp
13/9/2017     142453390001    134.2       43.1        13         87                 21
14/9/2017     142453390005    132.2       46.1        19         32                 41
15/9/2017     142453390002    120.2       42.1        33         99                 54
16/9/2017     142453390004    100.2       41.1        17         39  

           89

我的任何文本数据集看起来像:

data              text
13/9/2017         i totally understand this conversation about farmer market and the organic products, a nice conversation ’cause prices are cheaper than traditional
14/9/2017         The conversation was really great. But I think I need much more practice. I need to improve my listening a lot. Now I’m very worried because I thought that I’d understand more. Although, I understood but I had to repeat and repeat. See you!!!

所以我的问题是:

在输入任何类型的自动编码器之前,我应该标准化我的数值数据值吗?如果它们是 int 和 float 值,我还需要规范化吗?

我应该在自动编码器中使用哪个激活函数?有些文章和研究论文说“sigmoid”,有些说“relu”?

我应该在每一层使用 dropout 吗?就像我的自动编码器看起来像

encoder (1000 --> 500 -- > 256 ----> 128 ) --> decoder (128 --> 256 --> 500--> 784) 

这样的?

encoder(dropout(1000,500) --> dropout( 500,256) --> dropout (256,128) )----> decoder(dropout(128,256),dropout(256,500),dropout(500,784))

对于文本数据集,如果我使用 word2vec 或任何嵌入将文本转换为向量,那么每个单词都会有浮点值,我是否也应该规范化该数据?

text ( Hello How are you  ) -- > word2vec(text) ----> ([1854.92002 , 54112.89774 ,5432.9923 ,5323.98393]) 

我应该标准化这个值还是直接在自动编码器中使用?

【问题讨论】:

    标签: tensorflow machine-learning keras deep-learning autoencoder


    【解决方案1】:

    归一化是在来自不同特征的数据来自不同尺度时完成的。这里 Check_out 和 Check_in 与 coke_per 的规模非常不同。归一化的另一个可能原因是,当归一化时,数据对学习算法表现良好。如果您不进行归一化,您的学习算法可能会不收敛。

    Dropout 可以认为是您的数据集的正则化器。因此,对于 Bias/Variance 问题,最好包括 Dropout。如果您愿意,还可以包含 BatchNorm 层。我喜欢将 Dropout 视为模型平均。

    SoftMax/Relu 通常 Relu 是首选,因为梯度消失问题会随着 softmax 激活而出现。但这实际上取决于问题。如果我正在测试的指标没有给出好的结果,我将从使用 Relu 开始并用 softmax 替换。

    【讨论】:

    • 数据归一化并馈送到自动编码器后,从自动编码器获取输出应该是反归一化数据还是使用相同的值?
    • 在编码器的输出上有一个激活函数,输出与输入相同的归一化范围:tanh for [-1 to 1] 或 sigmoid [0 to 1]。
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多