Автокодировщик
Автокодировщик (англ. autoencoder, также — автоассоциатор)[1] — специальная архитектура искусственных нейронных сетей, позволяющая применять обучение без учителя[2] при использовании метода обратного распространения ошибки. Простейшая архитектура автокодировщика — сеть прямого распространения, без обратных связей, наиболее схожая с перцептроном и содержащая входной слой, промежуточный слой и выходной слой. В отличие от перцептрона, выходной слой автокодировщика должен содержать столько же нейронов, сколько и входной слой.
Основной принцип работы и обучения сети автокодировщика — получить на выходном слое отклик, наиболее близкий к входному. Чтобы решение не оказалось тривиальным, на промежуточный слой автокодировщика накладывают ограничения: промежуточный слой должен быть или меньшей размерности, чем входной и выходной слои, или искусственно ограничивается количество одновременно активных нейронов промежуточного слоя — разрежённая активация. Эти ограничения заставляют нейросеть искать обобщения и корреляцию в поступающих на вход данных, выполнять их сжатие. Таким образом, нейросеть автоматически обучается выделять из входных данных общие признаки, которые кодируются в значениях весов искусственной нейронной сети. Так, при обучении сети на наборе различных входных изображений, нейросеть может самостоятельно обучиться распознавать линии и полосы под различными углами.
Чаще всего автокодировщики применяют каскадно для обучения глубоких (многослойных) сетей. Автокодировщики применяют для предварительного обучения глубокой сети без учителя. Для этого слои обучаются друг за другом, начиная с первых. К каждому новому необученному слою на время обучения подключается дополнительный выходной слой, дополняющий сеть до архитектуры автокодировщика, после чего на вход сети подается набор данных для обучения. Веса необученного слоя и дополнительного слоя автокодировщика обучаются при помощи метода обратного распространения ошибки. Затем слой автокодировщика отключается и создается новый, соответствующий следующему необученному слою сети. На вход сети снова подается тот же набор данных, обученные первые слои сети остаются без изменений и работают в качестве входных для очередного обучаемого автокодировщика слоя. Так обучение продолжается для всех слоев сети за исключением последних. Последние слои сети обычно обучаются без использования автокодировщика при помощи того же метода обратного распространения ошибки и на маркированных данных (обучение с учителем).
Применения автокодировщика
В последнее время автокодировщики мало используются для описанного «жадного» послойного предобучения глубоких нейронных сетей. После того, как этот метод был предложен в 2006 г Джеффри Хинтоном и Русланом Салахутдиновым[3][4], достаточно быстро оказалось, что новых методов инициализации случайными весами оказывается достаточно для дальнейшего обучения глубоких сетей[5]. Предложенная в 2014 г.[6] пакетная нормализация позволила обучать ещё более глубокие сети, предложенный же в конце 2015 г.[7] метод остаточного обучения позволил обучать сети произвольной глубины[5].
Основными практическими приложениями автокодировщиков остаются уменьшение шума в данных, а также уменьшение размерности многомерных данных для визуализации. С определёнными оговорками, касающимися размерности и разрежённости данных, автокодировщики могут позволять получать проекции многомерных данных, которые оказываются лучше тех, что даёт метод главных компонент либо какой-либо другой классический метод[5].
Однако этим спектр возможных применений автокодировщиков отнюдь не ограничивается. Так, их можно использовать для обнаружения аномалий[8][9][10][11][12], поскольку модель учится восстанавливать входные данные по наиболее характерным признакам и в присутствии отклонений точность восстановления снижается. В 2019 году было также продемонстрировано успешное применение автокодировщика при разработке лекарств[13][14].
Примечания
- ↑ Autoencoder for Words, Liou, C.-Y., Cheng, C.-W., Liou, J.-W., and Liou, D.-R., Neurocomputing, Volume 139, 84-96 (2014), doi:10.1016/j.neucom.2013.09.055
- ↑ Обучение многослойного разреженного автокодировщика на изображениях большого масштаба, Хуршудов А. А., Вестник компьютерных и информационных технологий 02.2014 doi:10.14489/vkit.2014.02.pp.027-030
- ↑ G. E. Hinton, R. R. Salakhutdinov. Reducing the Dimensionality of Data with Neural Networks (англ.) // Science. — 2006-07-28. — Vol. 313, iss. 5786. — P. 504–507. — ISSN 1095-9203 0036-8075, 1095-9203. — doi:10.1126/science.1127647. Архивировано 23 декабря 2015 года.
- ↑ Why does unsupervised pre-training help deep learning?. Архивировано 13 декабря 2016 года.
- ↑ 1 2 3 Building Autoencoders in Keras . blog.keras.io. Дата обращения: 25 июня 2016. Архивировано 23 июня 2016 года.
- ↑ Sergey Ioffe, Christian Szegedy. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // arXiv:1502.03167 [cs]. — 2015-02-10. Архивировано 3 июля 2016 года.
- ↑ Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition // arXiv:1512.03385 [cs]. — 2015-12-10. Архивировано 3 сентября 2016 года.
- ↑ Morales-Forero A., Bassetto S. Case Study: A Semi-Supervised Methodology for Anomaly Detection and Diagnosis // 2019 IEEE International Conference on Industrial Engineering and Engineering Management (IEEM). — Macao, Macao: IEEE, 2019-12. — С. 1031–1037. — ISBN 978-1-7281-3804-6. — doi:10.1109/IEEM44572.2019.8978509. Архивировано 21 октября 2022 года.
- ↑ Sakurada Mayu, Yairi Takehisa. Anomaly Detection Using Autoencoders with Nonlinear Dimensionality Reduction (англ.) // Proceedings of the MLSDA 2014 2nd Workshop on Machine Learning for Sensory Data Analysis - MLSDA'14. — Gold Coast, Australia QLD, Australia: ACM Press, 2014. — P. 4–11. — ISBN 978-1-4503-3159-3. — doi:10.1145/2689746.2689747.
- ↑ Jinwon An, Sungzoon Cho. [http://dm.snu.ac.kr/static/docs/TR/SNUDM-TR-2015-03.pdf Variational Autoencoder based Anomaly Detection using Reconstruction Probability] // Special Lecture on IE. — 2015. — № 2. — С. 1—18. Архивировано 21 октября 2022 года.
- ↑ Chong Zhou, Randy C. Paffenroth. Anomaly Detection with Robust Deep Autoencoders (англ.) // Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. — Halifax NS Canada: ACM, 2017-08-04. — P. 665–674. — ISBN 978-1-4503-4887-4. — doi:10.1145/3097983.3098052. Архивировано 21 октября 2022 года.
- ↑ Manassés Ribeiro, André Eugênio Lazzaretti, Heitor Silvério Lopes. A study of deep convolutional auto-encoders for anomaly detection in videos (англ.) // Pattern Recognition Letters. — 2018-04. — Vol. 105. — P. 13–22. — doi:10.1016/j.patrec.2017.07.016. Архивировано 2 августа 2022 года.
- ↑ Alex Zhavoronkov, Yan A. Ivanenkov, Alex Aliper, Mark S. Veselov, Vladimir A. Aladinskiy. Deep learning enables rapid identification of potent DDR1 kinase inhibitors (англ.) // Nature Biotechnology. — 2019-09. — Vol. 37, iss. 9. — P. 1038–1040. — ISSN 1546-1696 1087-0156, 1546-1696. — doi:10.1038/s41587-019-0224-x. Архивировано 16 октября 2022 года.
- ↑ Gregory Barber. A Molecule Designed by AI Exhibits 'Druglike' Qualities (англ.) // Wired. — ISSN 1059-1028. Архивировано 30 апреля 2020 года.