Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

CoBoost - это полууправляемый обучающий алгоритм, предложенный Коллинзом и Сингером в 1999 году. Первоначальным применением алгоритма была задача классификации именованных сущностей с использованием очень слабых обучающихся. [1] Его можно использовать для выполнения частично контролируемого обучения в случаях, когда существует избыточность функций.

Это можно рассматривать как комбинацию совместного обучения и повышения . Каждый пример доступен в двух представлениях (подразделах набора функций), и повышение применяется итеративно поочередно с каждым представлением с использованием прогнозируемых меток, созданных в альтернативном представлении на предыдущей итерации. CoBoosting не является допустимым алгоритмом повышения в смысле обучения PAC .

Мотивация [ править ]

CoBoosting был попыткой Коллинза и Зингера улучшить предыдущие попытки использовать избыточность в функциях для обучения классификаторов полууправляемым способом. CoTraining, основополагающая работа Блюма и Митчелла, оказалась мощной основой для изучения классификаторов на небольшом количестве исходных примеров путем итеративного создания правил в списке решений. Преимущество CoBoosting перед CoTraining заключается в том, что он обобщает шаблон CoTraining, чтобы его можно было использовать с любым классификатором. CoBoosting добивается этого, заимствуя концепции из AdaBoost .

Как в CoTrain, так и в CoBoost наборы примеров для обучения и тестирования должны соответствовать двум свойствам. Во-первых, пространство признаков в примерах можно разделить на два пространства признаков (или представлений), чтобы каждое представление было достаточно выразительным для классификации. Формально существуют две функции и такие , что для всех примеров , . В идеале это ограничение на самом деле слишком сильное из-за шума и других факторов, и оба алгоритма вместо этого стремятся максимизировать согласование между двумя функциями. Второе свойство состоит в том, что эти две точки зрения не должны сильно коррелировать.

Алгоритм [ править ]

Входные данные : ,

Инициализировать: .

Для и для :

Установите псевдо-метки:

Установить виртуальное распределение:

где

Найдите слабую гипотезу, которая минимизирует расширенную ошибку обучения.

Выберите значение для минимизации расширенной ошибки обучения.

Обновите значение для текущего сильного классификатора без порога:

Окончательный результат сильного классификатора:

Настройка AdaBoost [ править ]

CoBoosting основан на алгоритме AdaBoost , который дает CoBoosting возможность обобщения, поскольку AdaBoost может использоваться вместе со многими другими алгоритмами обучения. Это построение предполагает задачу классификации по двум классам, хотя его можно адаптировать к классификации по нескольким классам. В структуре AdaBoost слабые классификаторы генерируются последовательно, а также распределяются по примерам в обучающем наборе. Каждому слабому классификатору присваивается вес, а окончательный сильный классификатор определяется как знак суммы слабых классификаторов, взвешенных по их присвоенному весу. (См. Нотацию на странице AdaBoost Wikipedia). В рамках AdaBoost Шапир и Зингер показали, что ошибка обучения ограничена следующим уравнением:

Где нормализующий коэффициент для распределения . Решая уравнение для, получаем:

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

Шапайр и Зингер показали, что значение можно минимизировать (и, следовательно, ошибку обучения), выбрав следующее:

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

Таким образом, ошибка обучения минимизируется путем выбора слабой гипотезы на каждой итерации, которая минимизирует предыдущее уравнение.

AdaBoost с двумя представлениями [ править ]

CoBoosting расширяет эту структуру в случае, когда у вас есть помеченный обучающий набор (примеры из ) и немаркированный обучающий набор (из ), а также удовлетворяются условия избыточности в функциях в форме . Алгоритм обучает два классификатора таким же образом, как и AdaBoost, которые согласовывают правильные метки помеченных обучающих наборов и максимизируют согласие между двумя классификаторами на немаркированном обучающем наборе. Последний классификатор - это знак суммы двух сильных классификаторов. Ограниченная ошибка обучения на CoBoost расширяется следующим образом, где - расширение :

Где - сумма веса гипотез по их доверительным значениям для представления (j = 1 или 2). это знак . На каждой итерации CoBoost оба классификатора обновляются итеративно. Если это строгий вывод классификатора для представления до итерации, мы можем установить псевдо-метки для j- го обновления следующим образом:

В котором выбирается представление, отличное от того, которое в настоящее время обновляется. делится на две части, так что . Где

Распределение примеров для каждого представления на итерации определяется следующим образом:

В этот момент можно переписать как

Это идентично уравнению в AdaBoost. Таким образом, для обновления значений можно использовать тот же процесс, что и в AdaBoost, используя и . Чередуя это, минимизация и таким образом сводится к минимуму жадным образом.

Ссылки [ править ]

Сноски [ править ]

  1. ^ Майкл Коллинз и Йорам Сингер, Неконтролируемые модели для классификации именованных сущностей. Труды Совместной конференции SIGDAT 1999 г. по эмпирическим методам обработки естественного языка и очень больших корпусов, стр. 100-110, 1999.