machine_learning

Как думают умные роботы? Введение в машинное обучение

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

В начале были данные

Обучение в основе своей — это получение опыта в процессе знакомства с какой-либо новой функциональностью. Это справедливо как для человека, который впервые садится на велосипед, так и для рекомендательного бота на YouTube. Разработчик такой программы «скармливает» ей массив данных, чтобы она нашла в ней скрытые закономерности и смогла строить по ним прогнозы.

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

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

Количество сотрудниковЗарплатаВремя в путиХочу работать?
1520 00015 минутнет
1500150 00090 минутда
30075 00040 минутда
40030 00040 минутнет
1000025 00030 минутнет

Эти данные должны помочь вашему боту сформировать для себя правило: ЕСЛИ [количество сотрудников > 300] И [зарплата больше 50 000] И [добираться менее часа] ТО [я хочу здесь работать]. Кроме того, ЕСЛИ [количество сотрудников > 1000] И [зарплата больше 100 000] ТО [я хочу здесь работать] (даже ЕСЛИ добираться более часа). Это правило он применит ко всему массиву вакансий на сайте и подберёт вам оптимальные варианты.

Курс по Machine Learning
Идет набор в группу 3 800₽ в месяц

Объять необъятное

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

  • Количество сотрудников больше 300 (ДА/НЕТ)

ЕСЛИ ДА, то

  • Зарплата больше 50 000 (ДА/НЕТ)

ЕСЛИ ДА, то

  • Добираться далеко (ДА/НЕТ)

Каждая из этих гипотез в отдельности не даёт вам ответа на главный вопрос: хотите ли вы работать в этой компании. Чтобы принять адекватное решение, ваша модель должна охватить весь набор правил. Это означает, что эффективность модели определяется богатством и разнообразием гипотез, с которыми она работает.

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

Казалось бы, логично предположить, что чем больше гипотез мы предоставляем программе, тем лучше она будет строить прогноз. Однако если вы перечитаете правило двумя абзацами выше, вы обратите внимание, что там нет слова «количество». Почему?

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

Это снова доказывает, что вам не нужно стремиться к максимальному количеству гипотез — бесконечность охватить невозможно, не говоря уже о трёх бесконечностях. Ключевое значение имеет богатство и разнообразие данных.

Лучшее — враг хорошего

Наконец, поговорим об ошибках. Как определить, что ваш алгоритм успешно справляется со своей задачей? Нужно ли гнаться за 100%-ным качеством прогнозирования? Ответ зависит от ваших целей в каждом конкретном случае, но в большинстве ситуаций абсолютное совпадение вам не понадобится. Главная причина предсказуемо лежит в области времени и ресурсов: пользователь не будет ждать год, пока вы предложите ему прочитать статью, которая гарантированно приведёт его в восторг.

Проблемами этого порядка занимается теория вероятностно приблизительно корректного обучения (Probably Approximately Correct Learning, или просто PAC). Мы не будем вдаваться в её подробности — желающие могут почитать обзорный труд профессора Калифорнийского университета Дэвида Хаусслера. Отметим только, что постулаты PAC-теории устанавливают связь между объёмом тренировочных данных, количеством ошибок и эффективностью обучения аналитических моделей.

Резюме

Мы установили, что больше данных — это не всегда лучше, а отсутствие ошибок в прогнозах не должно стать самоцелью. В основе этих правил лежит серьёзный математический аппарат, так что без понимания статистики и матанализа в машинном обучении не обойтись. Если вы хотите углубиться в тему, записывайтесь на наши курсы по глубокому обучению на Python и машинному обучению.

текст: Помогаев Дмитрий

Поделиться:
Опубликовано в рубрике Machine LearningTagged ,

SkillFactory.Рассылка