自动编码器中的预处理和丢失?

时间:2018-06-10 11:32:36

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

我正在使用自动编码器并且几乎没有混淆,我正在尝试不同的自动编码器,如:

fully_connected autoencoder
convolutional autoencoder
denoising autoencoder 

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

数值数据集如下所示:

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值仍然需要规范化吗?

我应该在autoencoder中使用哪种激活功能?一些文章和研究论文说,“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]) 

我应该规范化这个值还是直接用于自动编码器?

1 个答案:

答案 0 :(得分:0)

当来自不同要素的数据来自不同比例时,

规范化完成。这里的Check_out和Check_in与coke_per的尺度差别很大。归一化的另一个可能原因是有用的是,当归一化时,数据表现良好的学习算法。如果不进行规范化,则学习算法可能无法收敛。

Dropout 可以考虑数据集的正则化程序。因此,最好包括Dropout for Bias / Variance问题。如果您愿意,还可以包含BatchNorm图层。我喜欢将Dropout视为模型平均值。

SoftMax / Relu 一般情况下,Relu是优选的,因为消失梯度问题会随着softmax激活而消失。但它实际上取决于问题。我将首先使用Relu并使用softmax替换,如果我正在测试的度量标准没有给出好的结果。