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

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

Сегодня традиционные алгоритмы машинного обучения значительно уступают глубокому обучению. Тем не менее, они по-прежнему хорошо подходят для многих приложений самостоятельно или в качестве поддержки в сложных конвейерах. Традиционное машинное обучение способно выполнять две задачи: регрессию и классификацию. Например, их можно использовать для распознавания текстур или обнаружения заболеваний на медицинских изображениях.

Давайте посмотрим на них более внимательно.

Линейная, полиномиальная и логистическая регрессии

Линейная регрессия — это модель, которая предполагает линейную зависимость между входными переменными (x) и выходной переменной (y). Основная цель модели линейной регрессии — подогнать линейную функцию между точками данных, т. е. найти оптимальные значения точки пересечения и коэффициентов, чтобы минимизировать ошибку.

Итак, как нам достичь оптимальной линейной зависимости? Давайте посмотрим поближе.
Допустим, у нас есть входные данные с набором функций и математическая модель, показывающая, как делать прогноз. В нашем случае это линейная функция с набором неизвестных коэффициентов {bias, C1, C2, ..., CN}

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

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

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

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

Основная сила линейной регрессии заключается в ее простоте. Количество параметров в алгоритме ограничено, что приводит к короткому времени обучения. Линейную регрессию можно использовать для простых задач компьютерного зрения, где использование других алгоритмов не идеально, например, при работе с данными очень высокой размерности. В случае зашумленных данных линейную регрессию можно улучшить с помощью таких методов, как RANdom SAmple Consensus (RANSAC). Этот алгоритм случайным образом выбирает данные, чтобы оценить, какие выборки являются выбросами, которые следует игнорировать, что делает линейную регрессию более надежной.

Машины опорных векторов (SVM)

Машины опорных векторов (SVM) можно использовать для классификации и регрессионного анализа. Алгоритм SVM подходит к гиперплоскости, плоскости измерения на единицу меньше, чем измерение пространства данных, между двумя классами данных. При рисовании гиперплоскости алгоритм пытается максимизировать расстояние до ближайших точек данных обоих классов («маржа»). Точки называются опорными векторами, потому что они «поддерживают» границу решения.

Поскольку большинство реальных задач не являются полностью линейными, можно применить ядро ​​для преобразования данных в многомерное пространство. Функция ядра берет векторы необработанных данных, представленные в исходном пространстве, и возвращает скалярное произведение преобразованных векторов, представленных в пространстве более высокой размерности. Это делается для всех пар data i.e. i,j=1,...,N. Для приложений компьютерного зрения часто используется ядро радиальной базисной функции (RBF). Однако, когда входные данные для SVM похожи на гистограмму, предпочтительнее ядро χ2.

Чтобы обеспечить различение между несколькими классами, обычно применяется стратегия «один против многих». Здесь обучаются несколько SVM, где каждая SVM различает один класс и все остальные. Во время тестирования выходные оценки всех SVM сравниваются для принятия окончательного решения.

Входными данными для SVM должен быть вектор, осмысленно описывающий содержимое изображения. Например, ввод может быть создан с конвейером, состоящим из детектора признаков, дескриптора признаков и агрегатора. SVM легко настроить и часто дает разумные результаты, но время обучения может быть большим, если доступно много многомерных обучающих выборок.

Деревья решений

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

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

Случайные леса

Случайный лес — это набор случайных деревьев решений. Эти деревья напоминают обычные деревья решений, но критерии в каждом узле выбираются случайным образом из всех возможных вариантов. Иногда требование немного ослабляется путем выбора лучшего критерия из случайно выбранного подмножества. Хотя одно случайное дерево решений, скорее всего, будет неоптимальным, набор этих деревьев в классификаторе даст лучшие результаты. Действительно, каждое дерево, обучаясь на подмножестве данных, делает свои уникальные ошибки, не коррелирующие друг с другом. Таким образом, эти ошибки исчезают при усреднении прогнозов между всеми моделями.

Случайный лес можно быстро обучить, и он быстр во время вывода. Каждое отдельное дерево легко интерпретировать, что делает случайный лес подходящим для критически важных приложений. Например, вы можете использовать алгоритмы случайного леса для удаления избыточных функций или для поиска наиболее релевантных функций во входных данных.

Генетические алгоритмы

Генетический алгоритм — это метод машинного обучения, вдохновленный процессом естественного отбора в эволюционной биологии. Цель состоит в том, чтобы найти оптимальный набор параметров для модели. Алгоритм кодирует эти параметры в хромосому. В начале процесса обучения инициализируется популяция различных хромосом (обычно случайным образом) и оценивается значение пригодности каждой хромосомы. Это конец одного поколения, для следующего поколения выбранные хромосомы искажаются мутацией (случайным изменением некоторых значений хромосом) и кроссинговером (некоторые параметры выбранных хромосом меняются местами). Затем можно вычислить значение пригодности нарушенных хромосом. Этот процесс может повторяться в течение нескольких итераций, которые обычно называют поколениями.

Для задач с большим количеством параметров (например, нахождение весов нейронных сетей) генетические алгоритмы, как правило, требуют слишком большой вычислительной мощности, прежде чем будет найдена хорошо работающая модель. Недавно генетические алгоритмы были применены для поиска оптимальных гиперпараметров для обучения глубокому обучению. Сообщается, что это приводит к более эффективной модели, чем модель с гиперпараметрами, найденными с помощью случайного поиска.

Какой алгоритм подходит именно вам?

Традиционные алгоритмы машинного обучения могут использоваться для широкого спектра приложений машинного зрения. Команда Kapernikov будет рада помочь вам принять лучшее алгоритмическое решение для вашего проекта. У вас есть задача машинного зрения или автоматизированной проверки? Свяжитесь с нами, и давайте поговорим с одним из наших экспертов по машинному зрению.

Первоначально опубликовано на https://kapernikov.com 23 февраля 2022 г.