Читать нас в Telegram

Привет!

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

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

Важный дисклеймер. Мы намеренно не касаемся генеративных алгоритмов, а алгоритмы можно делить как угодно автору, мне захотелось так)

Классическое обучение

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

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

Да, крупные корпорации любят решать все проблемы нейросетями. Потому что лишние 2% точности для них легко конвертируются в дополнительные 2 миллиарда прибыли. Остальным же стоит включать голову. Совет начинающему стартаперу: когда задача решаема классическими методами, дешевле реализовать сколько-нибудь полезную для бизнеса систему на них, а потом думать об улучшениях. И тут дело в усилиях и скорости разработки. И если вы не решили задачу, то не решить её на 2% лучше вам не особо поможет.

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

Обучение с учителем

Классическое обучение любят делить на две категории — с учителем и без. Часто можно встретить их английские наименования — Supervised и Unsupervised Learning. 

В первом случае у машины есть некий учитель, который говорит ей как правильно. Тут учитель рассказывает машине, что на этой картинке слоник, а на этой ваза. То есть учитель уже заранее разделил (разметил) все данные на слоников и вазы, а машина учится на этих примерах.

В обучении без учителя, машине просто вываливают кучу данных, например, фотографий животных на стол и говорят: «Разберись, кто здесь на кого похож». Данные не размечены, у машины нет учителя, и она пытается сама найти любые закономерности. Об этих методах поговорим ниже.

Очевидно, что с учителем машина обучится быстрее и точнее и именно тому, что мы хотим, потому в боевых задачах его используют намного чаще. Эти задачи делятся на два типа: классификация — предсказание категории объекта, и регрессия — предсказание места на числовой прямой. Есть еще куча задач, например, детекция объектов, семантическая сегментация (semantic segmentation) или сегментация экземпляров объектов (instance segmentation), но их можно свести к регрессии или классификации.

Классификация

«Разделяет объекты по их заранее известным признакам. Слонов по форме ушей, носки по цветам, документы по языкам, музыку по жанрам»

Вот список популярных алгоритмов: 

  • Наивный Байес, 
  • Деревья решений, 
  • Логистическая регрессия, 
  • K-ближайших соседей, 
  • Метод опорных векторов.

Классификацию сегодня используют для:

  • Спам-фильтров;
  • Определения языка;
  • Поиска похожих документов;
  • Анализа тональности текстов;
  • Распознавания рукописных букв и цифр;
  • Определения подозрительных транзакций

Классификация вещей — самая популярная задача во всём машинном обучении. Машина в ней как ребёнок, который учится раскладывать игрушки: роботов в один ящик, кукол в другой. Опа, а если это робот-кукла? Что ж, время поплакать и выдать в ошибку. К сожалению, на практике в большинстве случаев все равно что-то предскажет, если не учить ее специально классифицировать, например, не на два класса, а на три: куклы, роботы, любая другая ерунда.

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

Раньше все спам-фильтры работали на алгоритме Наивного Байеса. Машина считала, сколько раз слово «виагра» встречается в спаме, а сколько раз в нормальных письмах. Перемножала эти две вероятности по формуле Байеса, складывала результаты все слов, бац-бац, и мы получили машинное обучение!

Позже спамеры научились обходить фильтр Байеса, просто вставляя в конец письма много слов с «хорошими» рейтингами. Метод получил название “Отравление Байеса”, а фильтровать спам стали другими алгоритмами. Но метод навсегда остался в учебниках как самый простой, красивый и один из первых практически полезных. А еще его легко интерпретировать, на выходе мы всегда получим вероятности.

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

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

Для этой задачи придумали “Деревья Решений”. Машина автоматически разделяет все данные по вопросам, ответы на которые «да» или «нет». Вопросы могут быть не совсем адекватными с точки зрения человека, например, «зарплата заемщика больше, чем 35482 рубля?», но машина придумывает их так, чтобы на каждом шаге разбиение на “хороших” и “плохих” заемщиков было самым точным. А еще на каждом уровне всех заемщиков мы делим только попалам, что облегчает нам жизнь.

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

Два самых популярных алгоритма построения деревьев — CART и C4.5

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

Но самым популярным методом классической классификации заслуженно является Метод Опорных Векторов (SVM). Им классифицировали уже всё: виды растений, лица на фотографиях, документы по тематикам, даже Playboy-моделей. Много лет он был главным ответом на вопрос «какой бы мне взять классификатор».

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

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

Есть даже отдельный подход, напрямую связанный с Байесом, — normalizing flow, там мы учимся только на положительных примерах и запоминаем распределение признаков для положительных примеров (например, хорошие детали на конвейере), а затем используем эту модель для поиска дефектов на всех деталях. 

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

Лет семь назад еще можно было встретить классификатор лиц на SVM, но сегодня под эту задачу сотня готовых сеток по интернету валяется, что бы их не взять. А вот спам-фильтры как на SVM писали, так и не вижу смысла останавливаться.

В этом году Школа искусств и культурного наследия Европейского университета запустила магистерскую программу “Музейные исследования и кураторские стратегии”. Это первая в России программа, которая объединяет фундаментальные подходы университетского обучения и новейшие достижения в области высоких технологий на базе музея. Для желающих глубже изучить применение технологических инструментов в искусствоведческой практике рекомендуем трек «Музейные исследования и компьютерные науки», где упор делается на инструментах обработки изображений и естественного языка, визуализации и разметки данных. Подробнее о программе: https://eusp.org/programs/museum-research-and-curatorial-strategies