Предварительная обработка и выпадение в автоэнкодерах? - PullRequest
0 голосов
/ 10 июня 2018

Я работаю с автоэнкодерами и у меня немного путаницы, я пробую разные автокодеры, такие как:

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, я все еще должен их нормализовать?

Какую функцию активации я должен использовать в автоэнкодере?В какой-то статье и исследовательской статье написано «сигмоид», а в некоторых «рэлу»?

Должен ли я использовать выпадение в каждом слое?например, если мой artichare для autoencoder выглядит как

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 или любое вложение для преобразования текста в вектор, то я быиметь значения с плавающей запятой для каждого слова, я должен нормализовать эти данные тоже?

1 Ответ

0 голосов
/ 10 июня 2018

Нормализация выполняется, когда данные из разных объектов имеют разные масштабы.Здесь Check_out и Check_in находятся в очень разных масштабах от coke_per.Другая возможная причина нормализации полезна в том, что при нормализации данные хорошо соотносятся с алгоритмами обучения.Если вы не выполняете нормализацию, есть вероятность несовпадения вашего алгоритма обучения.

Выпадение Можно подумать о регуляризаторе для вашего набора данных.Следовательно, предпочтительно включить Dropout для проблемы смещения / отклонения.Вы также можете включить слой BatchNorm, если хотите.Мне нравится думать о Dropout как об усреднении моделей.

SoftMax / Relu Обычно Relu предпочтительнее, так как исчезает проблема градиента, возникающая при активации softmax.Но это на самом деле зависит от проблемы.Я бы начал с использования Relu и заменил на softmax, если метрика, по которой я тестирую, не дает хороших результатов.

...