Я пытался понять алгоритм AdaBoost без большого успеха. Я борюсь с пониманием статьи Viola Jones об Обнаружении Поверхности как пример.
Можно ли объяснить AdaBoost в терминах неспециалистов и представить ли хорошие примеры того, когда он используется?
AdaBoost использует ряд учебных образцов изображений (таких как лица), чтобы выбрать ряд хороших "особенностей"/"классификаторов". Для распознавания лиц классификатор, как правило, представляет собой прямоугольник из пикселей, который имеет определенное среднее значение цвета и относительный размер. AdaBoost посмотрит на ряд классификаторов и выяснит, какой из них является лучшим предсказателем лица на основе выборочных изображений. После того, как он выбрал лучший классификатор, он будет продолжать искать другой и другой до тех пор, пока не будет достигнут некоторый порог, и эти классификаторы, объединенные вместе, обеспечат конечный результат.
Этой частью вы, возможно, не захотите делиться с нетехническими людьми :), но она все равно интересна. Существует несколько математических хитростей, которые делают AdaBoost быстрым для распознавания лиц, например, возможность сложить все цветовые значения изображения и сохранить их в 2-х мерном массиве так, чтобы значение в любой позиции было суммой всех пикселей вверх и влево от этой позиции. Этот массив можно использовать для очень быстрого вычисления среднего значения цвета любого прямоугольника внутри изображения, вычитая значение, найденное в левом верхнем углу, из значения, найденного в правом нижнем углу, и деля его на количество пикселей в прямоугольнике. Используя этот трюк, вы можете быстро просканировать всё изображение в поисках прямоугольников различных относительных размеров, которые соответствуют или близки к определённому цвету.
Надеюсь, это поможет.
Adaboost - это алгоритм, сочетающий классификаторы с низкой производительностью, иначе говоря, слабые ученики, в более крупный классификатор с гораздо более высокой производительностью.
Как это работает? Очень упрощенно:
За кулисами существует обширная и подробная теория, но интуиция такова: пусть каждый «тупой» классификатор сосредоточится на ошибках, которые предыдущие не смогли исправить.
AdaBoost - один из наиболее часто используемых алгоритмов в сообществе машинного обучения. В частности, это полезно, когда вы знаете, как создавать простые классификаторы (возможно, много разных, использующих разные функции), и хотите их оптимальным образом комбинировать.
В Виоле и Джонсе каждый тип слабого ученика связан с одной из 4 или 5 различных функций Хаара, которые могут быть у вас.