🤖 Машинное обучение для начинающих: основные понятия, задачи и сфера применения

Читайте в нашем обзоре детальное описание основных принципов, понятий и разновидностей машинного обучения.

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

Что такое машинное обучение?

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

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

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

Чем машинное обучение отличается от искусственного интеллекта?

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

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

Модели, виды и параметры машинного обучения

Самая простая модель имеет всего два параметра. Если нужно предсказать результат, линейно зависящий от входного признака, достаточно найти параметры a и b в уравнении прямой линии y=ax+b. Такая модель строится с помощью линейной регрессии. На следующем рисунке показана модель, предсказывающая "уровень счастья" человека по его собственной оценке в зависимости от уровня его дохода (красная линия):

Модель, предсказывающая уровень счастья человека по уровню его дохода

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

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

Хотя алгоритм обратного распространения ошибки (backropagation) был придуман довольно давно, до недавнего времени не было технических возможностей для реализации глубоких нейронных сетей, содержащих большое количество слоев. Быстрое развитие микроэлектроники привело к появлению высокопроизводительных GPU и TPU, способных обучать глубокие нейронные сети без суперкомпьютеров. Именно широкое распространение глубокого обучения стоит за тем бумом искусственного интеллекта, о котором вы слышите отовсюду.

Типы машинного обучения

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

Стратегия обучения выбирается в зависимости от поставленной задачи и имеющихся данных для обучения. Выделяют обучение с учителем (supervised learning), обучение без учителя (unsupervised learning) и обучение с подкреплением (reinforcement learning).

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

Это обучение на примерах, при котором "учителем" называются правильные ответы, которые, в идеале, должна выдавать модель для каждого случая. Эти ответы называются метками (название происходит из задач классификации, модели которых практически всегда обучаются с учителем – там эти ответы являются метками классов), а данные с метками – размеченными.

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

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

Переобученная модель классификации (зеленая линия) выдает верные результаты на всем тренировочном наборе, но правильно обученная модель (черная линия), скорее всего, будет не так сильно ошибаться на новых данных

Обучение без учителя

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

Такую стратегию обучения, использует, например, Airbnb, объединяя в группы похожие дома, и Google News, группируя новости по их темам.

Частичное привлечение учителя

Как и предполагает название, обучение с частичным привлечение учителя (semi-supervised learning) – это смесь обучения с учителем и без него. Этот метод использует небольшое количество размеченных данных и множество данных без меток. Сначала модель обучается на размеченных данных, а затем эта частично обученная модель используется для разметки остальных данных (псевдо-разметка). Затем вся модель обучается на смеси размеченных и псевдо-размеченных данных.

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

Обучение с подкреплением

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

Отличный пример модели, обученной с подкреплением – нейронная сеть Deep Q от Google, победившая людей во множестве старых видеоигр. После длительного обучения модель усваивает правильную стратегию поведения, приводящую к победе.

Лучшие курсы для изучения машинного обучения

  • Самый популярный курс основ машинного обучения для новичков – бесплатная серия лекций Стэнфордского университета на Coursera от легендарного эксперта в ИИ и основателя Google Brain Эндрю Ына (Andrew Ng). Недавно Эндрю Ын выпустил курс специализации в глубоком обучении, который рассматривает различные архитектуры нейронных сетей и прочие темы машинного обучения.
  • Если вы предпочитаете подход "сверху вниз", при котором вы сначала запускаете обученные модели машинного обучения, и только потом углубляетесь в их внутренности, обратите внимание на курс "Практическое глубокое обучение для кодировщиков" от fast.ai. Этот курс особенно рекомендуется программистам, имеющим не менее года опыта работы на Python. Курс Эндрю Ына предоставляет обзор теоретических основ машинного обучения, а курс fast.ai построен вокруг Python'а – языка программирования, широко используемого в машинном обучении.
  • Еще один курс, высоко оцениваемый не только за уровень преподавания, но и за широкий обзор рассматриваемых тем – "Введение в машинное обучение" от EdX и Колумбийского университета, хотя он и требует знания математики на университетском уровне.
  • На русском языке, пожалуй, лучший курс машинного обучения предлагает факультет искусственного интеллекта GeekBrains. Этот курс занимает целых полтора года и при успешном освоении выведет вас на довольно высокий уровень, достаточный для трудоустройства.

Сферы применения машинного обучения

Машинное обучение имеет огромное количество применений, но особенно выделяются два крупных и важных направления: машинное зрение (computer vision, CV) и обработка естественного языка (natural language processing, NLP), каждое из которых объединяет множество различных задач.

Машинное зрение

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

  • Выделение сущностей определенных классов в изображении. Например, модель YOLO помечает рамками найденные объекты и выводит метки их классов.
  • Распознавание людей по их лицам (служит для обнаружения преступников, идентификации для безопасного доступа к охраняемым объектам, введения ограничений по возрасту и т.п.)
  • Медицинская диагностика. Современные модели способны распознавать многие виды заболеваний по фотографиям пациентов, особенно если к ним добавляются снимки рентгенографии и МРТ.
  • Автоматическое вождение автомобиля. Эта задача состоит из многих подзадач: идентификация других автомобилей, пешеходов и прочих объектов на дороге, определение скорости и направления движения других объектов, принятие правильных решений в различных ситуациях, и так далее.
  • Воздушная разведка. Современные дроны могут намного больше, чем подчиняться командам человека, передаваемым по радио. Они могут не только распознавать военную технику и направление ее передвижения, но и ее маркировку.
  • Автоматическая генерация изображений – в том числе, человеческих лиц и тел.

Обработка естественного языка

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

  • Распознавание речи. Современные модели способны распознавать человеческую речь практически с такой же точностью, как другие люди.
  • Машинный перевод с одного языка на другой. Одна из самых старых и самых известных задач искусственного интеллекта вышла на новый уровень благодаря машинному обучению.
  • Анализ тональности текста. Определение эмоционального отношения автора текста к описываемым объектам или сущностям.
  • Поиск ответов на вопросы. Современные поисковые системы практически всегда находят документы с ответами на заданные людьми вопросы, если они существуют.
  • Выделение заданных сущностей из текста (например, поиск текста, имеющего отношение к чистоте атмосферы).
  • Автоматическая генерация текста. Современные модели умеют генерировать тексты разных стилей и направлений, которые далеко не всегда можно отличить от текстов, написанных человеком.
  • Синтез речи. Компьютеры уже давно не разговаривают "как роботы" – синтезированную ими речь практически невозможно отличить от человеческой.
***

Хочу подтянуть знания по математике, но не знаю, с чего начать. Что делать?

Если базовые концепции языка программирования можно достаточно быстро освоить самостоятельно, то с математикой могут возникнуть сложности. Чтобы помочь освоить математический инструментарий, «Библиотека программиста» совместно с преподавателями ВМК МГУ разработала курс по математике для Data Science, на котором вы:

  • подготовитесь к сдаче вступительных экзаменов в Школу анализа данных Яндекса;
  • углубитесь в математический анализ, линейную алгебру, комбинаторику, теорию вероятностей и математическую статистику;
  • узнаете роль чисел, формул и функций в разработке алгоритмов машинного обучения.
  • освоите специальную терминологию и сможете читать статьи по Data Science без постоянных обращений к поисковику.

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

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

matyushkin
07 апреля 2020

ТОП-15 книг по Python: от новичка до профессионала

Книги по Python (и связанным с ним специальным темам) на русском языке. Рас...
admin
14 июля 2017

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элеме...