Задача обучения автоэнкодера для классификации последовательности байтов - PullRequest
0 голосов
/ 25 января 2019

Я работаю над задачей классификации, которая использует последовательности байтов в качестве выборок.Последовательность байтов можно нормализовать как входные данные для нейронных сетей, применяя x / 255 к каждому байту x.Таким образом, я обучил простой MLP и точность составляет около 80%.Затем я обучил автокодер, используя потерю «mse» для всех данных, чтобы проверить, хорошо ли он подходит для этой задачи.Я зафиксировал веса слоев кодировщика и добавил к нему плотный слой softmax для классификации.Я переучил новую модель (только обучил последний слой), и, к моему удивлению, результат был намного хуже, чем у MLP, всего лишь на 60% точности.

Разве автоэнкодер не может извлечь из всех данных хорошие функции?Почему результат такой плохой?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

"Почему результат такой плохой?" Это на самом деле не сюрприз. Вы обучили одну модель хорошему сжатию информации. Преобразования, которые он изучает на каждом уровне, совсем не обязательно должны быть полезны для любого другого типа задач. Фактически, это может быть выброс большой информации, которая идеально подходит для любой вспомогательной задачи классификации, которая у вас есть, но которая не нужна для задачи, состоящей только в сжатии и восстановлении последовательности.

Вместо того, чтобы подходить к нему путем обучения отдельного автоэнкодера, вам может повезти, если вы просто добавите штрафные условия разреженности из слоев MLP в функцию потерь или используете некоторые другие типы регуляризации, такие как выпадение. Наконец, вы можете рассмотреть более продвинутые сетевые архитектуры, такие как уровни ResNet / ODE или начальные уровни, модифицированные для одномерной последовательности.

0 голосов
/ 26 января 2019

Возможные действия:

  • Проверьте ошибку автоэнкодера, может ли он действительно предсказать?
  • Визуализация результатов автоэнкодера (уменьшение размерности). Разница объясняется меньшим количеством измерений?
  • Создание более сложной модели не обязательно превосходит более простые, вы представляли валидацию mse против эпохи? Существует ли глобальный минимум после ряда шагов?
  • Достаточно ли у вас эпох ?
  • Какое количество единиц имеется в вашем автоэнкодере? Это может быть слишком мало (или слишком много, в случае недостаточного соответствия ) в зависимости от поведения ваших данных и их объема.
  • Проводили ли вы сравнение с другими методами уменьшения размерности, такими как PCA, NMF?
  • И последнее, но не менее важное: является ли наилучшим способом разработки ваших функций с помощью автоматического кодера для этой задачи?
...