Социальная сеть Facebook также использует функцию распознавания лиц, способную определять людей на фотографиях, загружаемых пользователем. Как же действуют подобные функции?
Большинство функций распознавания лиц основаны на методе главных компонент. Сначала проводится обучение системы на множестве изображений различных лиц. В ходе обучения система определяет главные компоненты в результате анализа нескольких фотографий одного лица и множества фотографий всех лиц. В действительности система всего лишь запоминает наиболее характерные черты лица каждого человека, чтобы потом распознать его.
Таким образом, для нового изображения система извлекает информацию о главных компонентах и сравнивает ее с информацией о компонентах, полученной в ходе обучения. В зависимости от процента совпадения система способна определить, какая часть тела изображена на фотографии, лицо или нога, и даже распознать, какому человеку принадлежит это лицо.
* * *
Метод главных компонент заключается в поиске линейного преобразования, позволяющего получить новую систему координат для исходного множества выборок.
В этой системе координат первая главная компонента будет отражать наибольшую вариацию, вторая — следующую по величине вариацию и так далее. Число компонент может быть любым. Одно из преимуществ этого метода заключается в том, что на промежуточных этапах поиска компонент с наибольшей вариацией можно определить, какую часть вариации переменных объясняет каждая компонента. К примеру, первая главная компонента может объяснить 75 % вариации, вторая — 10 %, третья — 1 % и так далее. Так можно уменьшить размерность множества данных и при этом гарантировать, что новые измерения, которые придут на смену исходным, будут объяснять минимум вариации данных. Рекомендуется, чтобы вариация, в сумме описываемая выделенными компонентами, составляла около 80 %.
Несмотря на все преимущества и относительную простоту метода главных компонент (сегодня этот метод входит в стандартную поставку всех пакетов статистических программ), по мере увеличения числа измерений в модели сложность расчетов возрастает, и вычисления могут оказаться непосильными. В подобных случаях используются два других метода отбора характеристик: жадный прямой отбор (greedy forward selection) и жадное обратное исключение (greedy backward elimination). Оба этих метода обладают серьезными недостатками: они требуют выполнения огромного объема расчетов, при этом вероятность выбора наиболее подходящих характеристик невысока. Однако основная идея этих методов и ее реализация просты, а объем необходимых вычислений для большого числа измерений все же не так высок, как при использовании метода главных компонент. Это объясняет, почему жадный прямой отбор и жадное обратное исключение стали так популярны среди специалистов по интеллектуальному анализу данных.
* * *
ЖАДНЫЕ АЛГОРИТМЫ
Жадные алгоритмы — разновидность алгоритмов, в которых для определения следующего действия (при решении задач планирования, поиска или обучения) всегда выбирается вариант, ведущий к максимальному увеличению некоего градиента в краткосрочной перспективе.
Достоинство жадных алгоритмов заключается в том, что они способны очень быстро найти максимальное значение определенных математических функций. Для сложных функций, имеющих несколько максимумов, жадные алгоритмы, напротив, обычно останавливаются на одном из локальных максимумов, так как не могут оценить задачу в целом. В итоге жадные алгоритмы оказываются не вполне эффективны, так как результатом их работы часто является субоптимум функции.
* * *
Как следует из названия, один из этих методов является прямым, а другой — обратным, однако оба используют один принцип. Представьте, что мы хотим отобрать характеристики, точнее всего описывающие тенденции голосования на парламентских выборах. Имеем пять известных характеристик выборки: покупательная способность, родной город, образование, пол и рост избирателя. Будем использовать для анализа тенденций нейронную сеть. Применив жадный прямой отбор, выберем первую переменную в задаче и смоделируем данные с помощью нейронной сети, используя только эту переменную. После того как модель построена, оценим точность прогноза и сохраним полученную информацию. Повторим аналогичные действия для всех остальных переменных по отдельности. По завершении анализа выберем переменную, для которой были получены лучшие результаты, и повторим моделирование с последующей оценкой модели, но уже для двух переменных. Предположим, что лучшие результаты были получены для переменной «образование». Проверим все возможные сочетания переменных, в которых первой переменной будет «образование». Получим модели «образование и родной город», «образование и пол», «образование и рост». И вновь, проанализировав четыре сочетания, выберем лучшее из них, к примеру «образование и покупательная способность», после чего повторим описанные выше действия уже для трех переменных, две из которых будут фиксированы. Этот процесс будет повторяться до тех пор, пока с добавлением очередной переменной точность новой модели относительно предыдущей, содержащей на одну переменную меньше, не перестанет возрастать.