Шрифт:
Интервал:
Закладка:
где P — вероятность перехода, E — энергия в текущей точке, E’ — энергия в новой точке, T — температура.
На следующем шаге мы уменьшаем величину T и повторяем процедуру, пока температура не достигнет нуля, а энергия — минимума.
Обученную машину Больцмана можно использовать так же, как и любой другой автокодировщик, — либо для расчёта латентного вектора для прецедента, либо для генерации нового прецедента на основе заданного (например, случайного) латентного вектора.
Ограниченная машина Больцмана, предложенная изначально в 1986 г. Полом Смоленским под названием Harmonium, представляет собой частный случай машины Больцмана, получаемый путём добавления следующего ограничения: синаптические связи могут связывать только скрытые нейроны с видимыми (но не скрытые со скрытыми или видимые с видимыми).
Рис. 111. Синаптические связи в ограниченной машине Больцмана
Завершённая в 1987 г. диссертация[1511] Лекуна, публикации[1512] Галлинари и его коллег, а также Бурлара и Кампа[1513] заложили основы применения автокодировщиков.
В 1990-е и начале 2000-х гг. исследования автокодировщиков продолжались. Например, в 1991 г. свет увидела работа[1514] Марка Крамера из MIT, в которой было показано преимущество автоэнкодеров (сам Крамер использовал термин «автоассоциативные нейронные сети» (Autoassociative Neural Networks)) над классическим методом главных компонент. В 1990-е и начале 2000-х гг. основным центром исследования автокодировщиков была группа Джеффри Хинтона в Торонто. В это время активно изучаются[1515], [1516] различные способы обучения таких сетей, позволяющие добиться наилучших результатов. Важным шагом вперёд становится появление глубоких сетей доверия — варианта ограниченной машины Больцмана с несколькими слоями скрытых нейронов (при этом допускаются связи между нейронами различных скрытых слоёв, но не внутри отдельного слоя). Для обучения таких сетей в начале 2000-х гг. в группе Хинтона применяли[1517] алгоритмы послойного обучения. Однако в целом можно сказать, что автокодировщики оставались в тени других нейросетевых моделей того времени (в первую очередь свёрточных и рекуррентных сетей). По всей видимости, в те годы многим исследователям казалось, что автокодировщики представляют главным образом теоретический интерес, а на практике могут применяться лишь в небольшом числе весьма специфических задач.
Резкий рост интереса к автоэнкодерам начался уже в 2010-е гг. В 2011 г. была опубликована революционная работа исследователей из группы Юргена Шмидхубера в лаборатории искусственного интеллекта швейцарского института IDSIA (Istituto Dalle Molle di Studi sull’Intelligenza Artificiale, Институт исследований искусственного интеллекта Далле Молле) под названием «Сгруппированные свёрточные автокодировщики для извлечения иерархических признаков» (Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction)[1518], в которой впервые описаны свёрточные автоэнкодеры [convolutional autoencoders], ставшие результатом комбинации автокодировщиков со свёрточными нейронными сетями. В свёрточном автоэнкодере роль кодировщика выполняет свёрточная сеть, а обратную ей роль декодера — развёрточная [deconvolutional].
В дальнейшем, по мере развития свёрточных нейронных сетей, совершенствовались и свёрточные автокодировщики. Также было придумано множество модификаций целевых функций, позволяющих улучшить результаты подобных моделей при решении различных задач. В целом за три последних десятилетия автокодировщики прошли большой путь — от теоретических моделей до гигантских нейронных сетей, предназначенных для обработки самых разных видов данных — от текстов до изображений и звуков.
Концепция кодировщиков и декодеров легла в основу многих важных моделей глубокого обучения. Фактически на её базе возникла целая подотрасль, получившая название «обучение представлениям» (или «обучение признакам») [representation learning] и занимающаяся изучением и разработкой техник, позволяющих системам машинного обучения автоматически находить представления, необходимые для выявления отдельных признаков или классификации данных. Благодаря обучению представлениям в наши дни активно развиваются методы машинного обучения с частичным привлечением учителя. К их числу относится, например, «контрастное обучение» [contrastive learning], о котором мы расскажем немного подробнее.
Контрастное обучение — это метод машинного обучения, используемый для изучения общих характеристик набора неразмеченных данных путём обучения модели тому, насколько похожи друг на друга его отдельные элементы (прецеденты). При этом контрастное обучение принято рассматривать как часть более широкой области, получившей название «метрическое обучение» [metric learning].
Представим себе маленького ребёнка, играющего в детский деревянный конструктор, в составе которого есть детали в форме куба, цилиндра, шара, прямоугольного параллелепипеда, тетраэдра и так далее. Ребёнок никогда не слышал этих слов, но в процессе игры его мозг способен изучить различные высокоуровневые признаки этих объектов: наличие или отсутствие плоских граней, их число, соотношения длин сторон и так далее. Благодаря этому позже, узнав, например, слово «куб», ребёнок сможет соотнести его сразу со всеми кубами, включая даже те, которые он раньше никогда не видел и не держал в руках.
Решая эту задачу при помощи автокодировщика, мы хотим добиться того, чтобы выучиваемые им представления (т. е. латентные векторы) обладали следующим свойством: для двух похожих предметов расстояние между соответствующими им векторами должно быть по возможности минимальным, в то время как расстояние между различающимися предметами должно быть по возможности максимальным. То есть мы, по сути, стремимся расположить соответствующие представлениям точки таким образом, чтобы границы между различными классами объектов были максимально «контрастными».
Однако по условию задачи у нас изначально нет метки класса как таковой. Ввиду этого исследователи применяют хитрый приём: каждый прецедент подвергается множеству трансформаций, которые не должны привести к смене метки целевого класса. Например, если мы имеем дело с изображениями, то к числу таких трансформаций могут относиться повороты, зеркальные отражения, размытие, добавление различных видов шума, изменение яркости, контраста, сдвиги цветов и так далее. При помощи таких трансформаций из одного изображения можно получить множество, составляющее отдельный псевдокласс. Теперь, имея полученный обогащённый набор данных, можно приступать к задаче обучения модели. В качестве целевой функции мы будем использовать такую функцию, которая будет максимизировать расстояние между представлениями прецедентов, относящихся к разным псевдоклассам, и минимизировать расстояние между представлениями, соответствующими прецедентам из одного и того же псевдокласса. В последние годы был разработан целый ряд разновидностей контрастного обучения. Например, можно составить обучающую выборку из пар прецедентов и обучать на ней сеть, состоящую из двух подсетей-кодировщиков с одинаковыми весами, выходы которых будут пропускаться через третью подсеть, вычисляющую расстояние между выходами двух первых подсетей. На выходе третья подсеть должна будет сделать предсказание — относятся прецеденты в паре к одному или тому же псевдоклассу или нет. Такой подход