Структура вопроса следующая: сначала даю понятие о коллективном распознавании, далее объяснение разных методов коллективной классификации, которые я нашел и в конце я привожу свой вопрос. Кто уже съел собаку в этом деле и им возможно не требуется объяснять, что это такое и какие методы есть, может просто взглянуть на заголовки приведенных мною методов и перейти к вопросу.
Что такое коллективное распознавание/классификация
Под коллективным (групповым) распознаванием подразумевается использование множества классификаторов, каждый из которых принимает решение о классе одной сущности, ситуации, образа с последующим объединением и согласованием решений отдельных классификаторов с помощью некоторого алгоритма. Использование множества классификаторов, как правило, приводит к более высокой точности распознавания и лучшим показателям вычислительной эффективности.
Некоторые подходы объединения решений классификаторов:
основанные на понятии областей компетентности классификаторов и использовании процедур, позволяющих оценивать компетентность классификаторов по отношению к каждому входу системы классификации
методы объединении решений, основанные на применении нейронных сетей
Метод областей компетентности
Идея коллективной классификации на базе областей компетентности в том, что каждый базовый классификатор может работать хорошо в некоторой области пространства признаков (область компетентности), превосходя в этой области остальные классификаторы по точности и достоверности решений. Область компетентности каждого базового классификатора должна как-то оцениваться. Соответствующая программа называется рефери. Задача классификации решается таким образом, что каждый алгоритм используется только в области своей компетентности, т.е. там, где он дает наилучшие результаты по сравнению с другими классификаторами. При этом в каждой области принимается во внимание решение только одного классификатора. Однако, необходимо иметь какой-то алгоритм, который для любого входа определяет, какой из классификаторов наиболее компетентен.
Один из подходов предполагает, что вместе с каждым классификатором используется специальный алгоритм (рефери), который предназначен для оценки компетентности классификатора. Под компетентностью классификатора в данной области пространства представления объектов классификации понимается его точность, т.е. вероятность правильной классификации объектов, чье описание принадлежит этой области.
Общая же схема обучения коллективному распознавания на основе оценки компетентности состоит из 2 шагов (рис. 1). На 1-м шаге производится обучение и тестирование каждого конкретного базового классификатора. Этот шаг не отличается от обычных схем обучения. На следующем шаге, после тестирования каждого классификатора, обучающая выборка, которая использовалась на этапе тестирования для некоторого классификатора, разделяется на два подмножества, L+ и L−. При этом в первое подмножество включаются те экземпляры исходной тестовой выборки, которые при тестировании были классифицированы правильно. Во второе подмножество включаются остальные экземпляры тестовой выборки, т.е. те, которые были классифицированы ошибочно. Рассматривая эти множества данных в качестве областей компетентности и некомпетентности классификатора соответственно, их можно использовать в качестве обучающих данных для обучения алгоритма «рефери». При классификации новых данных задача рефери состоит в том, чтобы для каждого входного примера определить, принадлежит ли он области компетентности алгоритма или нет, и если принадлежит, то какова вероятность правильной классификации этого примера. После этого рефери поручает наиболее компетентному классификатору решать задачу классификации.
Нейросетевые подходы.
Нейросетевые подходы коллективной классификации делятся на методы, которые используют объединение классификаторов с помощью нейронной сети, ансамбли сетей (ensembles of neural networks) и те, которые используют нейронные сети, построенные из модулей.
Нейросеть для объединения классификаторов
Один из подходов, рассматривает использование нейронной сети для объединения решений базовых классификаторов (рис. 2).
Выходом каждого базового классификатора является вектор решений (вектор, содержащий в качестве значений мягкие метки), значения элементов которого принадлежат некоторому числовому интервалу [a, b]. Эти значения подаются на вход нейронной сети (она должна быть обучена объединению решений классификаторов базового уровня), выходом которой является решение в пользу того или иного класса. Выходом сети также может являться вектор, размерность которого равна количеству классов распознаваемых объектов, который на каждой позиции имеет значение некоторой меры доверия в пользу того или иного класса. В этом случае в качестве решения может быть выбран класс с максимальным значением такой меры.
Система объединения решений функционирует следующим образом:
выбирается и обучается множество базовых классификаторов;
подготавливаются мета-данные для обучения нейронной сети. Для этого базовые классификаторы тестируются с использованием интерпретированной выборки данных и формируется для каждого тестового примера вектор решений базовых классификаторов, к которому добавляется компонента, в которую вносится имя истинного класса принадлежности тестированного примера;
выборка мета-данных используется для обучения нейронной сети, выполняющей объединение решений.
Метод модульных нейросетей
Для модульных нейронных сетей предлагается использовать так называемую шлюзовую сеть (“gating network”), нейронную сеть для оценки компетентности классификаторов для конкретного входного вектора данных предъявляемых классификаторам. Этот вариант рассматривает нейросетевую парадигму для объединения решений на основе оценок компетентности. Соответствующая теория здесь называется mixture of experts — «смесь экспертов». Каждому классификатору ставится в соответствие программа «рефери», которая предсказывает степень его компетентности по отношению к конкретному входу, подаваемому на вход множества классификаторов базового уровня (рис. 3).
В зависимости от входного вектора Х решения различных классификаторов могут быть выбраны и использованы для принятия объединенного решения. Количество входов предсказывающей сети равно размерности входного вектора пространства признаков. Количество выходов сети равняется количеству классификаторов, т.е. L. Предсказывающая нейросеть обучается предсказывать меру компетентности каждого классификатора при предъявлении ей конкретного входного вектора, т.е. оценку того факта, что классификатор выдает правильное решение. Степень компетентности оценивается числом из интервала [0,1]
Ансамбли нейронных сетей
Также, предлагается архитектура системы объединения решений, которая состоит из нескольких экспертов (нейросетей). Объединение знаний нейронных сетей в ансамбле доказало свою эффективность, продемонстрировав перспективность применения технологий коллективного распознавания в преодолении проблемы "хрупкости".
Ансамбль нейронных сетей – это набор нейросетевых моделей, принимающий решение путем усреднения результатов работы отдельных моделей. В зависимости от того, как конструируется ансамбль, его использование позволяет решить одну из двух проблем: склонность базовой нейросетевой архитектуры к недообучению (эту проблему решает мета-алгоритм boosting), либо склонность базовой архитектуры к переобучению (мета-алгоритм bagging).
Существуют различные универсальные схемы голосования, для которых победителем является класс:
максимальное – с максимальным откликом членов ансамбля;
усредняющее – с наибольшим средним откликом членов ансамбля;
большинством – с наибольшим числом голосов членов ансамбля.
Некоторые другие методы
Существуют также такие ансамблевые алгоритмы машинного обучения как:
Random forest (заключающийся в использовании комитета (ансамбля) решающих деревьев)
Adaboost (алгоритм усиления классификаторов, путём объединения их в комитет, предложенный Йоавом Фройндом)
Мой вопрос
Вопрос состоит в том, какую схему коллективного распознавания лучше использовать для распознавания символов/цифр/автономеров. Источники данных, с которых я брал информацию о различных схемах групповой классификации датируются 2006 годом и боюсь, что некоторые методы могли устареть. Какую схему будет более рационально использовать с точки зрения актуальности какого-либо метода.
Мною были упомянуты следующие схемы:
на базе областей компетентности
на базе использования одной нейронной сети для объединения классификаторов
на базе использования модульной нейросети
на базе ансамблей нейронных сетей
комитетные методы Random forest и Adaboost
Какой из подходов в потенциале может выдать лучшие показатели точности и производительности в сфере распознавания символов/цифр/автономеров. Возможно, некоторые методы устарели или показали свою несостоятельность в определенных сферах. Возможно есть и другие более эффективные и актуальные методы коллективного распознавания (групповой классификации).
Источники с подробным описанием (оттуда я брал информацию о методах коллективного распознавания):
Методы и алгоритмы коллективного распознавания: Обзор (В. И.
Городецкий, 2006, pdf)
Актуальные вопросы использования сверточных нейронных сетей и их
комитетов в распознавании образов цифр (Кузьмицкий Н.Н., 2012, pdf)
Random forest (Wiki)
AdaBoost (Wiki)
Ответ
Данный ответ представляет собой микс перевода ответа пользователя D.W.♦ в этом вопросе на английском языке и ответов других экспертов StackExchange в моем вопросе в Cross Validated с похожей формулировкой.
Ответ пользователя D.W.♦ в этом вопросе
Современные методы для распознавания образов цифр не предполагают
использование коллективного распознавания, областей компетентности,
ансамблей или других алгоритмов упомянутых в вопросе.
Вместо этого, современные методы для распознавания цифр используют
сверточные нейронные сети. Только одну сверточную нейросеть: нет нужды
для использования нескольких CNN или каких-то других изощрений. Вместо
этого, акцент делается на конкретной архитектуре сверточной нейросети
(например, какое кол-во слоев, какой тип операции объединения
(pooling type) и на процедурах обучения (например, корректировка
коэффициента скорости обучения в методе стохастического градиента,
отсеве (dropout), «пакетной» нормализации (batch
normalization) и др.)
Насколько я знаю, это также является справедливым и для распознавания
объектов/символов.
Мой совет таков: хоть упомянутые в вопросе алгоритмы выглядят красиво
на бумаге, они на самом деле могут и не быть необходимы или полезны в
реальности для интересующих вас задач. Я не рекомендую использовать их
на практике.
Часть ответа Franck Dernoncourt в этом вопросе
В одной из современных систем для классификации изображений получено ощутимое преимущество при использовании ансамбля (как и в большинстве других систем, насколько я знаю). Отражено в статье авторов He Kaiming, Xiangyu Zhang, Shaoqing Ren, и Jian Sun (эксперты Microsoft):
Deep residual learning for image recognition/Глубинное остаточное
обучение для классификации изображений (ENG, 2015, PDF)
В статье приведены таблицы:
Перевод: Таблица 4. Коэффициенты ошибок (%) в результатах с одиночными моделями (без ансамблей) на базе проверочного/контрольного множества (validation set) ImageNet.
Перевод: Таблица 5. Коэффициенты ошибок (%) в результатах с ансамблями. Top-5 error метрика на базе тестового множества ImageNet.
P.S. Top-5 error — метрика, в которой алгоритм может выдать 5 вариантов класса картинки и ошибка засчитывается, если среди всех этих вариантов нет правильного.
Заметка: объяснение о том, что такое top-1 error и top-5 error также дается здесь:
ImageNet: what is top-1 and top-5 error rate?
Команда MSRA c их моделью ResNets выиграли первое место на соревновании Large Scale Visual Recognition Challenge 2015 (ILSVRC2015)
Часть ответа пользователя jean в этом же вопросе
Предполагаю, что глубинное обучение достаточно актуально в
большинстве задач компьютерного зрения (распознавание,
обнаружение, получение сверхразрешения, выделение границ и т.д.) кроме
специфичных задач вроде SLAM, где глубинное обучение еще пока не
дотягивает до существующих методов.
Часто, чтобы получить некоторое процентное преимущество для победы в
соревнованиях по распознаванию, используют ансамбли и
усреднение. Но сети становятся настолько качественными, что это
уже не влияет так сильно на результаты.
Я бы сказал, что в течение 20 последующих лет, большинство продуктов
компьютерного зрения будет использовать глубинное обучение, даже в том
случае, если появится что-то более эффективное. Добавлю к ответу
Франка, что алгоритмы глубинного обучения меняются так быстро, что
ResNets от Kaiming He уже не являются наиболее актуальными
на данный момент. Сейчас на базе CIFAR, SVHN в свете софитов находятся:
- "Densely Connected Convolutional Networks/Плотно связанные сверточные сети" и
- SGDR: Stochastic Gradient Descent with Restarts/Метод стохастического градиента с перезапусками. Но даже эти
результаты скоро могут перестать быть актуальными на ближайшем
ILSVRC 2016
Комментариев нет:
Отправить комментарий