Что такое машинное обучение, для чего оно нужно и как работает

Для кого эта статья?

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

Анализ данных — это просто?

Да. А так же интересно. Наряду с особенной важностью для всего человечества изучать большие данные стоит относительная простота в самостоятельном их изучении и применении полученного «ответа» (от энтузиаста к энтузиастам). Для решения задачи классификации сегодня имеется огромное количество ресурсов; опуская большинство из них, можно воспользоваться средствами библиотеки Scikit-learn (SKlearn). Создаём свою первую обучаемую машину:

clf = RandomForestClassifier() clf.fit(X, y)

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

Ближе к делу

— Получается, зарабатывать на этом деле я не сразу смогу?
Да, до решения задач за призы в $100 000 нам ещё далеко, но ведь все начинали с чего-то простого.
Итак, сегодня нам потребуются:

  • Python 3 (с установленной pip3)
  • Jupyter
  • SKlearn, NumPy и matplotlib

Если чего-то нет: ставим всё за 5 минут
Для начала, скачиваем и устанавливаем Python 3 (при установке не забудьте поставить pip и добавить в PATH, если скачали установщик Windows). Затем, для удобства был взят и использован пакет Anaconda, включающий в себя более 150 библиотек для Python (ссылка на скачивание). Он удобен для использования Jupyter, библиотек numpy, scikit-learn, matplotlib, а так же упрощает установку всех. После установки, запускаем Jupyter Notebook через панель управления Anaconda, или через командную строку(терминал): «jupyter notebook».

Дальнейшее использование требует от читателя некоторых знаний о синтаксисе Python и его возможностях (в конце статьи будут представлены ссылки на полезные ресурсы, среди них и «основы Python 3»).
Как обычно, импортируем необходимые для работы библиотеки:

import numpy as np from pandas import read_csv as read

— Ладно, с Numpy всё понятно. Но зачем нам Pandas, да и еще read_csv?
Иногда бывает удобно «визуализировать» имеющиеся данные, тогда с ними становится проще работать. Тем более, большинство датасетов с популярного сервиса Kaggle собрано пользователями в формате CSV.

А вот так выглядит визуализированный pandas’ом датасет

Здесь колонка Activity показывает, идёт реакция или нет (1 при положительном, 0 при отрицательном ответе). А остальные колонки — множества признаков и соответствующие им значения (различные процентные содержания веществ в реакции, их агрегатные состояния и пр.)

— Помнится, ты использовал слово «датасет». Так что же это такое?
Датасет — выборка данных, обычно в формате «множество из множеств признаков» → «некоторые значения» (которыми могут быть, например, цены на жильё, или порядковый номер множества некоторых классов), где X — множество признаков, а y — те самые некоторые значения. Определять, например, правильные индексы для множества классов — задача классификации, а искать целевые значения (такие как цена, или расстояния до объектов) — задача ранжирования. Подробнее о видах машинного обучения можно прочесть в статьях и публикациях, ссылки на которые, как и обещал, будут в конце статьи.

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

Научное сообщество не урегулировало одно стандартное определение «машинного обучения». Сфера применения МО очень широка и не сводится к одному предложению, хоть некоторые и пытались…

Определение Массачусетского технологического института гласит: «алгоритмы машинного обучения используют статистику для поиска закономерностей в огромных объемах данных, [включая] числа, слова, изображения, клики. Если что-то может быть сохранено в цифровом виде — его можно использовать в алгоритме машинного обучения.»

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

В то же время, Университет Карнеги-Меллона утверждает: «Область машинного обучения стремится ответить на вопрос: как построить компьютерные системы, которые улучшаются автоматически (набираясь опыта), и каковы фундаментальные законы, которые управляют всеми процессами обучени?»

Для практических целей мы можем объединить все описания:

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

Не все «мыслящие компьютеры» созданы равными

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

Искусственный интеллект, машинное обучение и глубокое обучение — это три категории компьютерных наук, которые исходят друг от друга. То есть МО — это подгруппа ИИ, а ГО — подраздел МО (см. диаграмму).

Общепринятый искусственный интеллект — это набор инструкций, сообщающий компьютеру, как действовать или демонстрировать человеческое поведение. То, как он реагирует на ввод, жестко закодировано, то есть: «Если происходит это, сделайте то.» Общее эмпирическое правило состоит в том, что если ИИ указано, какие решения принимать – то это вне рамок машинного обучения.

Все ML считаются AI. Но не все AI — ML.

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

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

Глубокое обучение — это подраздел искусственного интеллекта и машинного обучения. Эти конструкции состоят из нескольких слоев МО алгоритмов. Поэтому, их часто называют «глубокими нейронными сетями» (DNN). Входные данные передаются через слои, причем каждый из них добавляет квалификаторы или теги. Таким образом, глубокое обучение не требует предварительно классифицированных данных для интерпретации.

Мы еще поговорим о различиях между МО и ГО.

Типология и терминология

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

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

Как учатся нейронные сети?

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

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

То, как программы МО используют этот огромный объем данных, зависит от того, какой тип обучения используется. На данный момент, в зависимости от задачи используются три модели обучения: «с учителем», «без учителя» и «c подкреплением».

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

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

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

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

В задачах второго типа ответы принадлежат ограниченному набору возможных категорий (или классов). Продолжим наши офисные аналогии: представьте, что офис-менеджер Михаил закупил два вида подарков для коллег к Новому году – футболки и блокноты. Чтобы не испортить сюрприз, Михаил хочет построить модель, которая предсказывала бы, какой подарок хочет получить сотрудник, на основе данных из личных профилей (внимательный читатель заметит, что в реальности для построения модели Михаилу все же пришлось бы спросить о желаемом подарке у части коллег, чтобы сформировать обучающую выборку). Такой тип задач, когда необходимо относить объекты к одной из нескольких возможных категорий, то есть когда зависимая переменная принимает конечное число значений, называется задачей классификации. Пример с подарками относится к бинарной классификации: классов всего два – «футболки» и «блокноты»; в противном случае, когда классов больше, говорят о многоклассовой классификации.

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

Еще один тип обучения с учителем – задача ранжирования. Она решается, когда вы ищете что-то в поисковике вроде Google: есть множество документов и необходимо отсортировать их в порядке их релевантности (смысловой близости) запросу.

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

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

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

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

Помимо обучения с учителем и без учителя, существуют и более изысканные типы задач. Например, в частичном обучении ответы известны только для части объектов выборки.

Глубинное обучение

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

Джереми Говард, один из авторов известного курса про глубинное обучение fast.ai, приводит следующий пример. Команда специалистов из Стенфорда во главе с ученым Эндрю Бэком занималась исследованием рака молочной железы. Чтобы построить модель, способную предсказывать выживет пациентка с опухолью или нет, им пришлось изучить огромное количество снимков биопсий молочной железы. Таким образом они определили, какие паттерны на снимках могут быть связаны со смертью пациентки и сформировали сотни сложных признаков, таких как связь между соседними эпителиальными клетками. Затем команда программистов разработала алгоритмы для правильного распознавания этих признаков со снимков.

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

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

Алгоритмы машинного обучения

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

Еще один простой алгоритм машинного обучения – решающее дерево. Он напоминает набор последовательно задаваемых вопросов с (чаще всего) двумя возможными ответами. Подобный алгоритм использует офис-менеджер Михаил, когда решает, подходит ли кофе из новой поставки для приверед из отдела анализа данных. Это задача бинарной классификации, где ответы принимают значение «кофе подходит» и «кофе не подходит». Михаил последовательно отвечает на ряд вопросов, перемещаясь по веткам дерева: какой вид кофе? какая обжарка кофе? какой регион произрастания кофе? В итоге Михаил оказывается в одном из листьев (так называются «конечные» вершины) дерева, где находится предсказание.

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

Машинное обучение: сегодня и завтра

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

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

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

В мире не хватает вычислительных мощностей. Закон Мура как бы выдыхается … [нам нужны квантовые вычисления, чтобы] создать весь этот богатый опыт, о котором мы говорим, весь этот искусственный интеллект.

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

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

Вероятно, следующим большим прорывом будет квантовое МО. Исследователи из Массачусетского технологического института, IBM и НАСА уже экспериментировали с применением квантовых вычислений для машинного обучения. Неудивительно, что они обнаружили, что с помощью современного оборудования для обработки данных, некоторые проблемы могут быть решены за «считанные минуты». Microsoft и Google тоже не отстают. Недавно IT гиганты объявили о планах продвижения в области квантового МО. Поэтому, скорей всего, мы услышим и увидим гораздо больше об этом в ближайшем будущем.

Сфера применения

Мы рассмотрели Machine Learning – что это понятие означает. Теперь самое время рассмотреть для чего используется МО в бизнесе и жизни.

Спросите человека, увлеченного робототехникой, о сфере применения машинного обучения. Вы услышите много фантастических историй. Например, роботы будут самостоятельно обучаться выполнять поставленные человеком задачи. Добывать в недрах Земли полезные ископаемые, бурить нефтяные и газовые скважины, исследовать глубины океана, тушить пожары и прочее. Программисту не нужно будет расписывать массивные и сложные программы, боясь ошибиться в коде. Робот, благодаря МО, сам будет обучаться вести себя в конкретной ситуации на основе анализа данных.

Здорово, но пока фантастично. В будущем, может даже и не слишком далеком – это станет реальностью.

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

По такому же принципу формируются умные ленты в соцсетях. Аналитические машины ФБ, ВК, Инстаграм, Твиттер исследуют ваши интересы – какие посты чаще просматриваете, на что кликаете, какие паблики или группы посещаете и другое. Чем дольше и чаще вы активничаете в соцсетях, тем более персонализированной становится ваша лента новостей. Это и хорошо и плохо. С одной стороны – машина отсеивает массив неинтересной (по её мнению) информации, а с другой – она сужает ваш кругозор. Маркетинг – ничего личного!

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

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

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

Обобщим задачи МО:

  1. Регрессия. На основании массива признаков или характеристик предсказать вещественный результат. То есть машина должна выдать конкретную цифру. Например, предсказать стоимость акций на бирже, количество запросов по ключевому слову, бюджет контекстной рекламы и другое.
  2. Классификация. Задача определить по количеству и качеству признаков, характеристик категорию объекта. Например, распознать по снимку конкретного человека в розыске, имея только описания на словах, определить спам, выявить болезнь у пациента.
  3. Кластеризация. Данные разбиваются на похожие категории. Например, космические объекты относят в конкретные категории по схожим признакам (удаленность, размер, планета или звезда и другие).
  4. Уменьшение размерности. Сжатие массива характеристик объекта до меньшего количества признаков для дальнейшей визуализации или использования в работе. Например, сжатие массива данных в архивы для передачи по сети.

Какие навыки нужны в машинном обучении

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

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

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

Каких кандидатов берут на работу

Как руководитель направления в Сбербанке, на должности Junior Data Scientist я хотел бы видеть кандидата, который владеет базовыми понятиями машинного обучения и математической статистики, умеет писать SQL-запросы, готов постоянно развивать свои навыки в machine learning и учиться у более опытных коллег.

Очень ценю, если кандидат уже решал задачи за рамками стандартных курсов по ML и анализу данных. Например, может показать свой pet-проект или свои результаты на соревнованиях по анализу данных (Kaggle Competitions).

Участие в соревнованиях учит решать реалистичные задачи в команде и оформлять своё решение на GitHub. Кстати, владение системами контроля версий — тоже плюс. По моим оценкам их используют лишь 30% специалистов в data science.

Сотрудник уровня Middle сам ведёт проект, но иногда нуждается в консультациях. Он приносит компании деньги и участвует в решении бизнес-проблем заказчика. А также помогает джунам с типовыми задачами.

Senior – это специалист «полного цикла». Он распознаёт проблему заказчика, продумывает её решение и выдаёт необходимый результат. Поэтому Senior DS должен уметь общаться с заказчиком на языке бизнеса и доносить до него свою позицию. Кроме того, он зачастую выступает ментором для джунов и мидлов, проводит код-ревью, распределяет задачи и контролирует их выполнение.

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

Где работают и сколько получают специалисты по ML

Рассказывает Сергей Ширкин, куратор специальности.

Специалисты по машинному обучению нужны и крупным компаниям (включая IТ, операторов связи, интернет-магазины, ритейл, банки), и SMB-сегменту со стартапами.

Ориентировочный диапазон зарплат:

  • Стажёр – до 50 тыс. рублей.
  • Junior Data Scientist – 100-120 тыс. рублей.
  • Middle Data Scientist (1-3 года опыта) – 150-200 тыс. рублей.
  • Senior Data Scientist (3-5 лет опыта) – 200-350 тыс. рублей и больше.

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

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

Источники

  • https://habr.com/ru/post/319288/
  • https://dtf.ru/hard/191018-chto-takoe-mashinnoe-obuchenie
  • https://rb.ru/opinion/mashinnoe-obuchenie/
  • https://www.calltouch.ru/glossary/mashinnoe-obuchenie/
  • https://geekbrains.ru/posts/zachem-izuchat-mashinnoe-obuchenie-i-kem-potom-rabotat

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Лайфхаки на каждый день, полезные советы
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: