Машинное обучение для чайников
  вернуться Время чтения: 12 минут   |   Комментариев: 1
Сохранить

Машинное обучение для чайников

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

 
Кадр из м/ф «Призрак в доспехах»
(источник: Википедия)

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

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

Вводная

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

Любую работающую технологию машинного обучения можно условно отнести к одному из трёх уровней доступности. Первый уровень — это когда она доступна только различным технологическим гигантам уровня Google или IBM. Второй уровень — это когда ей может воспользоваться людей студент с некоторым багажом знаний. Третий уровень — это когда даже бабуля способна с ней совладать.

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

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

Большую часть задач машинного обучения можно разделить на обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning). Если вы представили себе программиста с плёткой в одной руке и куском сахара в другой, вы немного ошиблись. Под «учителем» здесь понимается сама идея вмешательства человека в обработку данных. При обучении с учителем у нас есть данные, на основании которых нужно что-то предсказать, и некоторые гипотезы. При обучении без учителя у нас есть только данные, свойства которых мы и хотим найти. На примерах разницу вы увидите немного яснее.

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

У нас есть данные о 10 000 квартирах в Москве, причём известна площадь каждой квартиры, количество комнат, этаж, на котором она расположена, район, наличие парковки, расстояние до ближайшей станции метро и так далее. Кроме того, известна стоимость каждой квартиры. Нашей задачей является построение модели, которая на основе данных признаков будет предсказывать стоимость квартиры. Это классический пример обучения с учителем, где у нас есть данные (10 000 квартир и различные параметры для каждой квартиры, называемые признаками) и отклики (стоимость квартиры). Такая задача называется задачей регрессии. О том, что это такое, мы поговорим чуть позже.

 
Красные точки — имеющиеся данные (по оси x — значение признака, по оси y — значение ответа), синяя прямая — построенная модель.
(источник: Википедия)

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

 
Задача классификации. На первой картинке объекты разделяются прямой. На второй более сложной кривой. Заметьте, что некоторые объекты классифицируются неправильно. Это нормальная практика в задачах классификации.
(источник: sebastianraschka.com)

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

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

 
Кластеризация на 3 кластера. Отметим, что обычно разделение на кластеры является не таким явным и нет единого «правильного» разделения.
(источник: i-msdn.sec)

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

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

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

  • Задача регрессии: на основании различных признаков предсказать вещественный ответ. Другими словами, ответом может быть 1, 5, 23.575 или любое другое вещественное число, которое, например, может олицетворять стоимость квартиры. Примеры: предсказание стоимости акции через полгода, предсказание прибыли магазина в следующем месяце, предсказание качества вина на слепом тестировании.
  • Задача классификации: на основании различных признаков предсказать категориальный ответ. Другими словами, ответов в такой задаче конечное количество, как в случае с определением наличия у пациента рака или определения того, является ли письмо спамом. Примеры: распознавание текста по рукописному вводу, определение того, находится на фотографии человек или кот.
  • Задача кластеризации: разбиение данных на похожие категории. Примеры: разбиение клиентов сотового оператора по платёжеспособности, разбиение космических объектов на похожие (галактики, планеты, звезды и так далее).
  • Задача уменьшения размерности: научиться описывать наши данные не N признаками, а меньшим числом (как правило, 2-3 для последующей визуализации). В качестве примера помимо необходимости для визуализации можно привести сжатие данных.
  • Задача выявления аномалий: на основании признаков научиться различать отличать аномалии от «не-аномалий». Кажется, что от задачи классификации эта задача ничем не отличается. Но особенность выявления аномалий состоит в том, что примеров аномалий для тренировки модели у нас либо очень мало, либо нет совсем, поэтому мы не можем решать такую задачу как задачу классификации. Пример: определение мошеннических транзакций по банковской карте.
 
(источник: amid.fish)

Нейронные сети

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

Нейронная сеть (или искусственная нейронная сеть) — это сеть нейронов, где каждый нейрон является математической моделью реального нейрона. Нейронные сети начали пользоваться большой популярностью в 80-х и ранних 90-х, однако в конце 90-х их популярность сильно упала. Впрочем, в последнее время это одна из передовых технологий, используемых в машинном обучении, применяемая в огромном количестве приложений. Причина возврата популярности проста: увеличились вычислительные способности компьютеров.

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

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

Ограниченность нейронных сетей

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

Допустим, мы работаем с изображениями 20x20 пикселей, где каждый пиксель представляется оттенком серого (всего 256 возможных значений). В качестве ответа у нас имеется одна из цифр: от 0 до 9. Структура нейронной сети будет следующая: в первом слое будет 400 нейронов, где значение каждого нейрона будет равно интенсивности соответствующего пикселя. В последнем слое будет 10 нейронов, где в каждом нейроне будет вероятность того, что на изначальном изображении нарисована соответствующая цифра. Между ними будет некоторое число слоев (такие слоя называются скрытыми) с одинаковым количеством нейронов, где каждый нейрон соединён с нейроном из предыдущего слоя и ни с какими более.

 
 

Рёбрам нейронной сети (на картинке они показаны как стрелочки) будут соответствовать некоторые числа. Причем значение в нейроне будет считаться как следующая сумма: значение нейрона из предыдущего слоя * значение ребра, соединяющего нейроны. Затем от данной суммы берётся определенная функция (например, сигмоидная функция, о которой мы говорили ранее).

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

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

Интересные факты и лайфхаки

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

Например, вторая кампания Барака Обамы была фактически выиграна лучшей на тот момент командой в области анализа данных. Разумеется, речь не идет о том, что они советовали ему соврать о чем-то, работа строилась значительно более умным путем: они выбирали, в каком штате, перед какой аудиторией, в какой день и на какую тему он должен выступать. Причем каждый раз они замеряли, как это сказывается на опросах вида «За кого бы вы проголосовали, если бы выборы были в ближайшее воскресенье?». Другими словами, подобные решения принимали не политтехнологи, а исключительно специалисты по анализу данных. Особенно интересным это становится в свете того, что, по оценкам специалистов, это дало ему преимущество в 8-10%.

 
(источник: flickr.com)

Кроме того, современный интернет довольно сложно представить без ретаргетинга, или персонализированной рекламы. Вспомните: вы выбираете какой-то продукт в интернете, а после покупки ещё на протяжении двух недель вам показывают его в различного рода рекламе. В одном из своих выступлений директор по маркетингу сервисов компании «Яндекс» Андрей Себрант дал на этот счёт такой совет:

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

Рекомендации по обучению

Если у вас появилось желание изучить технологии машинного обучения, стоит отметить, что для глубокого изучения предмета с пониманием всего фундамента следует разбираться как минимум в математическом анализе, линейной алгебре и методах оптимизации (с упором на последние два). Кроме того, желательно знать основы программирования и какой-нибудь язык программирования. В машинном обучении, как правило, используется R, Python или Matlab.

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

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

Для тех, кто хочет изучать предмет со всеми математическими тонкостями в лучших традициях сильных технических вузов, можно порекомендовать курс от ВШЭ или специализацию от МФТИ. Заметим лишь, что специализация является платной и для доступа к ней придется оформить подписку приблизительно за 3000 рублей в месяц. Впрочем, есть бесплатный период в 7 дней.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.

статьи по теме

Маленькая компьютерная плата и большой переворот

Фитнес-трекеры и образовательная аналитика

Воспитание вкуса среди интернет-балагана