Русская Википедия:Автокодировщик

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Файл:Автоэнкодер.png
Архитектура автокодировщика: при обучении стремятся получить выходной вектор x' наиболее близким к входному вектору x

Автокодировщик (Шаблон:Lang-en, также — автоассоциатор)[1] — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя[2] при использовании метода обратного распространения ошибки. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от перцептрона, выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.

Основной принцип работы и обучения сети автокодировщика — получить на выходном слое отклик, наиболее близкий к входному. Чтобы решение не оказалось тривиальным, на промежуточный слой автокодировщика накладывают ограничения: промежуточный слой должен быть или меньшей размерности, чем входной и выходной слои, или искусственно ограничивается количество одновременно активных нейронов промежуточного слоя — разрежённая активация. Эти ограничения заставляют нейросеть искать обобщения и корреляцию в поступающих на вход данных, выполнять их сжатие. Таким образом, нейросеть автоматически обучается выделять из входных данных общие признаки, которые кодируются в значениях весов искусственной нейронной сети. Так, при обучении сети на наборе различных входных изображений, нейросеть может самостоятельно обучиться распознавать линии и полосы под различными углами.

Файл:Stacked Autoencoders.png
Предобучение многослойного персептрона без учителя с помощью автокодировщиков.

Чаще всего автокодировщики применяют каскадно для обучения глубоких (многослойных) сетей. Автокодировщики применяют для предварительного обучения глубокой сети без учителя. Для этого слои обучаются друг за другом, начиная с первых. К каждому новому необученному слою на время обучения подключается дополнительный выходной слой, дополняющий сеть до архитектуры автокодировщика, после чего на вход сети подается набор данных для обучения. Веса необученного слоя и дополнительного слоя автокодировщика обучаются при помощи метода обратного распространения ошибки. Затем слой автокодировщика отключается и создается новый, соответствующий следующему необученному слою сети. На вход сети снова подается тот же набор данных, обученные первые слои сети остаются без изменений и работают в качестве входных для очередного обучаемого автокодировщика слоя. Так обучение продолжается для всех слоев сети за исключением последних. Последние слои сети обычно обучаются без использования автокодировщика при помощи того же метода обратного распространения ошибки и на маркированных данных (обучение с учителем).

Применения автокодировщика

В последнее время автокодировщики мало используются для описанного «жадного» послойного предобучения глубоких нейронных сетей. После того, как этот метод был предложен в 2006 г Джеффри Хинтоном и Русланом Салахутдиновым[3][4], достаточно быстро оказалось, что новых методов инициализации случайными весами оказывается достаточно для дальнейшего обучения глубоких сетей[5]. Предложенная в 2014 г.[6] пакетная нормализация позволила обучать ещё более глубокие сети, предложенный же в конце 2015 г.[7] метод остаточного обучения позволил обучать сети произвольной глубины[5].

Основными практическими приложениями автокодировщиков остаются уменьшение шума в данных, а также уменьшение размерности многомерных данных для визуализации. С определёнными оговорками, касающимися размерности и разрежённости данных, автокодировщики могут позволять получать проекции многомерных данных, которые оказываются лучше тех, что даёт метод главных компонент либо какой-либо другой классический метод[5].

Однако этим спектр возможных применений автокодировщиков отнюдь не ограничивается. Так, их можно использовать для обнаружения аномалий[8][9][10][11][12], поскольку модель учится восстанавливать входные данные по наиболее характерным признакам и в присутствии отклонений точность восстановления снижается. В 2019 году было также продемонстрировано успешное применение автокодировщика в дизайне лекарств[13][14].

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Типы искусственных нейронных сетей Шаблон:Машинное обучение

  1. Autoencoder for Words, Liou, C.-Y., Cheng, C.-W., Liou, J.-W., and Liou, D.-R., Neurocomputing, Volume 139, 84-96 (2014), Шаблон:Doi
  2. Обучение многослойного разреженного автокодировщика на изображениях большого масштаба, Хуршудов А. А., Вестник компьютерных и информационных технологий 02.2014 Шаблон:Doi
  3. Шаблон:Статья
  4. Шаблон:Статья
  5. 5,0 5,1 5,2 Шаблон:Cite web
  6. Шаблон:Статья
  7. Шаблон:Статья
  8. Шаблон:Статья
  9. Шаблон:Статья
  10. Шаблон:Статья
  11. Шаблон:Статья
  12. Шаблон:Статья
  13. Шаблон:Статья
  14. Шаблон:Статья