Под ансамблями моделей понимается практика объединения прогнозов из нескольких статистических моделей для формирования одного окончательного прогноза. Это открывает возможности для разнообразия репрезентативной способности модели. Эта концепция аналогична анекдотам, например, выяснению мнения нескольких врачей. Ансамбли моделей - это очень распространенное усовершенствование традиционных моделей машинного обучения, такое как обновление деревьев решений до случайных лесов. В отличие от моделей машинного обучения, глубокие модели требуют много времени для обучения, и поэтому нецелесообразно формировать ансамбли глубоких моделей, каждая из которых обучается с нуля. В этой статье рассматриваются новинки дизайна ансамбля CNN от Minetto et al. по имени «Гидра». Такой дизайн экономит время вычислений за счет использования общей сети экстрактора признаков для моделей в ансамбле. Ниже приводится ссылка на статью:



На картинке ниже очень быстро представлена ​​основная идея Гидры:

Глубокие сети можно разделить на модули и рассматривать как состоящие из двух компонентов: средства извлечения признаков и сети классификации. На этом изображении выше две мощные архитектуры CNN, ResNet и DenseNet, используются для извлечения функций из изображений, которые передаются в несколько классификационных «голов». Извлечение функций приведет к снижению размерности входных данных с чего-то вроде изображения 224 x 224 x 3 в вектор 4096 x 1. Векторы, извлеченные из тела Гидры, используются в качестве входных данных для голов Гидры, таким образом, вектор 4096 x 1 в вектор предсказаний классов, равный количеству классов.

Тренировка проводится для точной настройки весов в головах Гидры, чтобы их можно было адаптировать к выполняемой задаче. Еще одна интересная деталь изображения выше - это веса ImageNet. Это используется как метод инициализации Transfer Learning для весов тела Гидры. Затем эти веса уточняются с использованием набора данных классификации земель FMoW (Функциональная карта мира), который Минетто и др. тренируют свою сеть. После точной настройки этих весов полностью связанные слои обрезаются и заменяются головами гидры. Надеюсь, после этого объяснения вы поймете, почему они выбрали название Гидра. Гидра - это своего рода многоголовый дракон, похожий на многоголового дракона, каждая голова объединенной сверточной нейронной сети имеет одно и то же тело.

Одной из интересных особенностей этого является то, что он способствует функциональному разнообразию и разнообразию данных в модели. Функциональное разнообразие может быть достигнуто путем добавления нововведений к полносвязным слоям в каждой головке Hydra, возможно, даже путем изменения формы извлеченного вектора признаков и повторной свертки над ним. Однако достижение разнообразия данных - более интересная парадигма, которая также исследуется в этой статье.

Ансамблевые модели обычно достигают разнообразия данных за счет разделения исходного набора данных, например, m экземпляров, на k сегментов, в каждом из которых есть m / k экземпляров. Данные из каждого из этих ковшей используются для точной настройки веса на головах Hydra. Этот подход также может быть расширен за счет включения расширенных данных и имеет множество возможностей построения. Методы увеличения данных, такие как геометрические преобразования или манипуляции с цветовым пространством, могут использоваться для создания дополнительных различных блоков данных для точной настройки голов Гидры. Авторы статьи обсуждают важность использования увеличения данных в режиме онлайн для экономии памяти, в отличие от увеличения в автономном режиме. Автономное увеличение относится к увеличению данных и последующей записи каждого измененного экземпляра данных в память.

Последнее соображение, которое следует сделать при объединении моделей таким образом, - это как объединить предсказания моделей. Наивные решения могут варьироваться от голосования большинством, когда результат исходит из максимальной вероятности класса от каждой головы, или голосования большинством, где выходные данные softmax от каждой головы суммируются, а максимальное значение из результирующего вектора является окончательным прогнозом. Это называется алгоритмом решения ансамблевой модели. У них есть много способов проявить творческий подход и проверить различные гипотезы, например, присвоить больший вес головам Гидры, которые сами по себе обладают лучшей производительностью классификации, или поиском подмножества голов с наименее коррелированными прогнозами.

Спасибо, что прочитали, я считаю статью очень интересной и рекомендую ее проверить! Ансамбли моделей страдают от более медленного вывода, но являются многообещающим решением для более высокой точности прогнозов. Архитектура Hydra - интересный и хорошо названный метод объединения глубоких нейронных сетей.

В настоящее время я работаю над внедрением сети Hydra в Керасе и хотел бы поделиться одной обнаруженной мной деталью, которая помогла мне начать работу. Во-первых, вам нужно обучить веса экстрактора признаков и сохранить их, используя что-то простое, например:

model.save('HydraBody.h5')

Затем вы захотите загрузить эти веса в каждую из голов, для этого нужно присвоить каждому слою HydraBody имя, например:

model.add(Conv2D(32, (3,3), name = 'Conv1')

Присвоение имени каждому из слоев - это способ загрузки базовых весов в модель, которая не совсем соответствует архитектуре сохраненных весов.

Спасибо за прочтение!