Как сделать машинное обучение

Обновлено: 05.07.2024

Простой анализ может показать, что твиттер президента Трампа ведут президент и его помощник, причем Трамп ответственен за наиболее сердитые твиты. Методы машинного обучения позволяют делать более сложные выводы. Система получает миллионы записей или объектов, обнаруживает в данных закономерности и использует их, чтобы предсказывать свойства новых данных. Если упрощать, системы машинного обучения учатся на данных, словно ребенок, который пытается отличить кошку от собаки, делая все новые попытки, пока не поймет, чем они отличаются, и не станет их узнавать в любом виде. Вот только в случае c machine learning примеров — миллиарды, а скорость такого обучения значительно быстрее, чем человек может себе представить.

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

С учителем и без: каким бывает машинное обучение

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

© tampatra / iStock

От НАСА до лесов Амазонии: где применяется machine learning (и нужно ли оно вам)

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

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

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

Стоит упомянуть и такую активно развивающуюся и богатую индустрию, как компьютерные игры . Машинное обучение и искусственный интеллект активно вторгаются в область разработки игр, и эксперты предрекают еще большее проникновение предиктивных алгоритмов в ближайшем будущем. Машинное обучение помогает в автоматической анимации фигурок и объектов и анимации лиц, улучшает искусственный интеллект противников, частично используется в генерации уровней и помогает адаптировать мобильные игры под нужды пользователя. И это не говоря о другой стороне процесса — маркетинговых исследованиях free-to-play игр и улучшения их механик за счет анализа пользовательского поведения, предсказаний оттока игроков и тестирования новых фич. Мобильных приложений с использованием нейронных сетей тоже выпущено немалое количество — от добавления смешных ушек в Snapchat до умных клавиатур, состаривания лиц и преобразования фото.

© tampatra / iStock

Кандидатский минимум: без чего нельзя стать специалистом по machine learning

Базовый набор для специалиста по машинному обучению таков:

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

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

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

Знание хотя бы одного популярного языка программирования . Если вы новичок, начните с Python — это самый востребованный и удобный для ML-специалиста язык, его знания требуют работодатели, а кроме того, он прост в освоении. Но это не значит, что он единственный. Если вы квалифицированный программист, подберите инструмент под себя. Работать с машинным обучением можно на R, излюбленном аналитиками и специалистами баз данных, на Java, на Javascript, C++ , подходят Scala, SAS и т. д. Язык тут — инструмент для создания моделей, а не определяющий фактор.


Михаил Левин

Область машинного обучения очень перспективна, и начать карьеру в ней не так сложно, как может показаться на первый взгляд. Есть множество курсов и образовательных проектов, где вам помогут профессионалы в этой области. Например, наша Школа анализа данных (ШАД) существует уже 11 лет. При приеме мы проверяем знания математического анализа, линейной алгебры, теории вероятностей и базовых алгоритмов — все это необходимо, чтобы глубоко изучить machine learning. Другие предметы, которые будет изучать студент ШАДа, зависят от выбранного им направления: например, у тех, кто хочет стать разработчиком machine learning, в обязательной программе есть язык C++, а у тех, кто менее склонен к разработке систем и более склонен к аналитике, — Python.

Где изучать machine learning

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

В Академии Яндекса есть сразу несколько образовательных проектов, рассчитанных на разные аудитории. В линейку ШАД входят 5 курсов: математика и Python, supervised ML, unsupervised ML, прикладная статистика, прикладные задачи анализа данных. В конце студент делает практический проект. Курсы можно проходить по отдельности, выбрав только интересующую область. Дополнительный бонус — программа трудоустройства для закончивших обучение. Начать изучение анализа данных можно на онлайн-курсах Яндекса и МФТИ. В любое время можно посмотреть записи с лекций и мероприятий по теме.


Если вы хотите понять, что такое машинное обучение и какие математические модели за ним стоят, то нет ничего лучше этого классического, объемного и в своем роде легендарного курса. Профессор Стэнфорда Эндрю Ын рассказывает о линейной и логистической регрессии, базе нейронных сетей, поиске аномалий и разных типах машинного обучения с квалификацией признанного эксперта. Пока это эталон. Кстати, недавно вышел его курс по Deep Learning для тех, кто хочет углубления знаний.


Курсы от Google

Компания всячески популяризует машинное обучение — ведет множество курсов на разных платформах, рассказывает о новых проектах в блоге. Бесплатный Machine Learning Crash Course дает основы machine learning на реальных примерах — от диагностики рака до исследования литературы XVIII века. Другой вариант — серия курсов по работе с облачной платформой Google, которая используется для машинного обучения.


Обзорные курсы от Kaggle

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

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


Это сайт, целиком посвященный data science, есть на нем и курсы по машинному обучению. Плюсы DataCamp в том, что курсы 1) несложные, 2) практически ориентированные. Можно построить простую модель, которая на основе предыдущих выборов пользователя предположит, какая спортивная машина будет популярной, а какая провалится в продаже, а можно рассмотреть применение моделирования в финансах или настройку нейронных сетей. На Datacamp есть курсы как под Python, так и под R. Почти все преподаватели — активно работающие в области data science специалисты. Полный доступ к платформе стоит $27 в месяц, которого вполне может хватить для ликбеза.

Еще больше курсов

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

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


Image by ParallelVision from Pixabay

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

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

Оглавление

Предлагаемый мной учебный план представляет собой повторяющиеся в цикле шаги:

  • Шаг 0. Погружение в сферу машинного обучения
  • Шаг 1. Изучение проекта, похожего на то, что вы сами хотите создавать
  • Шаг 2. Изучение языка программирования
  • Шаг 3. Изучение библиотек сверху вниз
  • Шаг 4. Создание интересного для вас проекта максимум за один месяц
  • Шаг 5. Определение самого большого пробела в знаниях и его заполнение
  • Шаг 6: Повтор шагов с 0 по 5.

Это циклический план обучения, потому что 6-й шаг — это GOTO к шагу 0!

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

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

Теоретически да, это правда, и именно поэтому я начинал обучать машинному обучению снизу вверх. Но на практике получалось иначе.

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

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

Итак, с учетом всего сказанного, давайте перейдем к самому плану обучения!

Шаг 0. Погружение в сферу машинного обучения


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

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

Чтобы правильно погрузиться сферу ML и отточить свой учебный план, нужно по порядку ответить на три вопроса:

  1. Что вообще можно делать при помощи ML?
  2. Что вы хотите делать при помощи ML?
  3. Как вы это будете делать?

Эти вопросы позволят вам сосредоточиться на чем-то очень конкретном и доступном для изучения, а также увидеть картину крупным планом.

Давайте рассмотрим каждый из этих вопросов более подробно.

Что можно делать при помощи ML?

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

Это позволит вам усовершенствовать вашу ментальную модель машинного обучения. Вероятно, поначалу у вас не будет полного представления о том, что здесь вообще возможно. Но это не имеет большого значения. Приблизительное понимание лучше, чем ничего.

Что вы хотите делать при помощи ML?

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

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

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

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

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

Как вы собираетесь делать то, что вас интересует?

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

Это поможет вам понять, на чем не стоит сосредотачивать свою энергию. Допустим, вы поняли, что большинство людей не используют HTML, CSS и JavaScript в своей повседневной работе, связанной с машинным обучением. Так и вы не сосредотачивайтесь на этих технологиях!

Что касается того, чем люди все-таки пользуются, здесь спектр довольно широк. Есть много языков программирования и инструментов, а их выбор зависит от сферы применения. Есть инструменты на C++, Java, Lua, Swift, JavaScript, Python, R, Julia, MATLAB, Rust… и этот список можно продолжать.

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

На самом деле инструменты обычно создаются не на чистом Python, потому что этот язык довольно медленный. Но благодаря интерфейсу пользователь не догадывается, что на самом деле перед ним завернутая в Python библиотека C++.

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

Инструменты, используемые для машинного обучения

Обычный набор инструментов для желающих изучить машинное обучение, следующий:

    для высокоуровневого программирования для работы с наборами данных для численных вычислений для ML-моделей (без глубокого обучения) или Pytorch для ML-моделей с глубоким обучением
  • Высокоуровневые библиотеки глубокого обучения, такие как Keras и fast.ai
  • Основы Git для работы над проектом или Google Colab для экспериментов с кодом

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

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

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

Таким образом, мой стек будет выглядеть так:

Python + Pandas + Pytorch + Pytorch geometric + Git + Colab

Я знаю, что этот стек хорошо подойдет для моих целей, потому что я изучил, чем пользуются разработчики в этой сфере.

Шаг 1. Изучите один проект, который похож на то, что вы хотите создавать


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

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

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

С этой целью лучше всего зайти на GitHub или Kaggle и поискать общедоступные проекты. Просмотрите несколько из них, пока не найдете тот, который вам нравится.

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

Найдя подходящий проект, потратьте некоторое время на ознакомление с его документацией, структурой кодовой базы и кодом. Скорее всего, вы заблудитесь. Особенно, если не слишком хорошо разбираетесь в программировании. Но таким образом вы узнаете много нового, а узнавать новое — хорошо и приятно!

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

Хорошее место для начала поиска — этот список на GitHub. Но можно просто воспользоваться поиском на Kaggle или GitHub. Ищите по ключевым словам, связанным с вашими интересами в сфере ML.

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

Шаг 2. Изучите язык программирования

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

Код, скорее всего, будет на Python. Впрочем, это может быть Julia, C++, Java — тут все зависит от того, что вы хотите изучать и какой проект вы добавили в закладки.

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

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

Для целей моего учебного плана курс freeCodeCamp вполне подойдет.

Шаг 3. Изучите библиотеки сверху вниз

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

Я считаю, что это отличный проект, которым можно заняться самостоятельно. Но я не думаю, что это должно быть основным направлением на раннем этапе изучения ML.

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

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

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

Разумеется, на этой стадии у вас не будет понимания того, почему что-то работает или не работает, но это и не слишком важно.

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

При этом следите за тем, чтобы не слишком углубляться в изучение библиотеки (если вы дошли до LAPACK, читая о Фортране, вы зашли слишком далеко!).

Для моего проекта основная библиотека, которую мне нужно изучить, — это Pytorch или ее обертка более высокого уровня, так что практический курс fast.ai будет в тему.

Шаг 4. Создайте один проект, которым вы увлечены, максимум за один месяц


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

Для справки: если, берясь за какой-то проект, вы чувствуете себя абсолютно уверенно, значит, вы недостаточно быстро прошли шаги с 0 по 3.

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

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

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

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

Чтобы подобрать интересный проект, попробуйте выполнить эти три небольших упражнения:

  • хорошенько подумайте о том, что вас сейчас интересует
  • посмотрите список идей проектов
  • обратите внимание на открытые наборы данных.

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

Этот список на GitHub может стать отличным местом для поиска вдохновения при создании мини-проекта. Чтобы найти подходящие данные для своего проекта, можно воспользоваться Google Dataset Search.

Не стоит недооценивать важность данных!

Даже если у вас есть очень хорошие идеи, отсутствие данных серьезно помешает вашему прогрессу.

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

Шаг 5. Определите один пробел в своих знаниях устраните его

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

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

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

А теперь самое странное: удалите из своего списка все, кроме самой важной темы.

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

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

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

Шаг 6. Повторите шаги с 0 по 5

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

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

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

Итоги

Итак, если вы хотите изучить машинное обучение на практике, вам следует:

  • Понять, что из себя представляет сфера машинного обучения, и мысленно составить ее карту.
  • Найти крутой проект, похожий на то, чем вы сами хотели бы заняться, и изучить его.
  • Изучить необходимый язык программирования.
  • Освоить достаточно библиотек, чтобы делать что-нибудь полезное.
  • Создать проект за неделю (месяц).
  • Определить один самый большой пробел в своих знаниях и заполнить его.
  • Повторить!

Я надеюсь, эта статья будет вам полезна. Если хотите познакомиться с отдельными темами машинного обучения, обратите внимание на мой YouTube-канал. Удачи!

введение в машинное обучение примеры и модели для новичков

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

Почему машинное обучение сейчас в тренде

Искусственный интеллект (далее ИИ) всегда имел применение, начиная от перемещения ракетки в пинг понге и заканчивая выполнением комбо в Street Fighter.

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

Несмотря на это, компьютер поддается обучению для игры в видеоигры, понимания языка и распознавания людей и предметов. Этот навык исходит из старой концепции, которая только недавно получила необходимые вычислительные мощности для существования вне теории. Я имею в виду машинное обучение (ML, Machine learning).

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

И как возможно такое, что мы даже не понимаем устройство рабочего алгоритма? Прекрасным визуальным примером был ИИ, написанный для прохождения игр Марио. Люди хорошо знают, как нужно играть в сайд-скроллеры, но это безумие пытаться определить стратегию игры для ИИ.

Впечатлены? Как это возможно? К счастью, Элон Маск представил некоммерческую компанию, которая предоставляет возможность подключения ИИ к любым играм и задачам с помощью дюжины строк кода. Посмотрите, как это работает.

Зачем следует использовать машинное обучение?

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

Во-вторых, если не влияете на мир, мир повлияет на вас. Компании инвестируют в ML, и эти инвестиции уже меняют мир. Лидеры мысли предупреждают, что нельзя позволить алгоритмам машинного обучения быть в тени. Представьте себе, если бы монополия из нескольких корпораций контролировала Интернет. Если мы не “возьмемся за оружие”, наука не будет нашей.

Christian Heilmann высказал правильную мысль в беседе о машинном обучении:

Хорошо, теперь я заинтересован…

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

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

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

введение в машинное обучение

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

Классический пример машинного обучения в действии — датасет прямиком из 1936-го года, называемый ирисами Фишера. На презентации эксперта JavaFX, посвященной машинному обучению, я узнал, как использовать этот инструмент, чтобы визуализировать прикрепление и обратное распространение весов к нейронам в нейронной сети. Понаблюдайте за тем, как тренируется нейронная сеть.

Обучение нейронной сети Ирисы

Готовы стать Эйнштейном новой эры? Прорывы происходят каждый день, поэтому начинайте сейчас.

С чего мне начать?

Доступных ресурсов много. Я рекомендую два подхода.

Основы

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

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

машинное обучение введение и основы

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

Гонщик

Если вы не заинтересованы в написании алгоритмов, но хотите использовать их для создания сайтов и приложений, то используйте TensorFlow и погрузитесь в crash course.

TensorFlow — это библиотека с открытым исходным кодом для машинного обучения. Ее можно использовать любым способом, даже с JavaScript. А вот crash source.

Услуги ML

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

Предупреждаю, что нет гарантии, что ваши данные будут в безопасности или вообще останутся вашими, но предложения услуг по ML очень привлекательны, если вы заинтересованы в результате и имеете возможность загрузить данные на Amazon/Microsoft/Google.

Давайте быть созидателями

Я все еще новичок в мире ML и счастлив осветить путь для других, путь, который даст нам возможность завоевать эру, в которой мы оказались.

Контент-маркетолог Мария Пушикова специально для блога Нетологии перевела статью Charles-Antoine Richard о том, что такое машинное обучение и какие методы машинного обучения существуют.

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

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

Машинное обучение — это…

Вот самое простое определение, которое я нашел:

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

…подраздел искусственного интеллекта (ИИ)

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

…способ решения практических задач

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

… способ увеличить эффективность компьютеров

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

…технология, основанная на опыте

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

Простой пример:

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

Как работает машинное обучение

Машинное обучение часто называют волшебным или черным ящиком:

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

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

Очистка

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

Разделение

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

Обучение

Чтобы было проще, сосредоточимся на нейронных сетях.

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

Оценка

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

Оптимизация

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

Какие существуют типы машинного обучения и чем они отличаются

Существует множество моделей для машинного обучения, но они, как правило, относятся к одному из трех типов:

  • обучение с учителем (supervised learning);
  • обучение без учителя, или самообучение (unsupervised learning);
  • обучение с подкреплением (reinforcement learning).

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

Обучение с учителем (supervised learning)

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

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

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

Обучение без учителя (unsupervised learning)

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

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

Логические игры также хорошо подходят для обучения с подкреплением, так как они традиционно содержат логическую цепочку решений: например, покер, нарды и го, в которую недавно выиграл AlphaGo от Google. Этот метод обучения также часто применяется в логистике, составлении графиков и тактическом планировании задач.

Для чего можно использовать машинное обучение

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

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

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

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

Кроме того, я бы добавил еще одно применение машинного обучения, отличное от прогнозного: автоматизация процессов. Прочесть об этом можно здесь.

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

Логистика и производство

  • В Rethink Robotics используют машинное обучение для обучения манипуляторов и увеличения скорости производства;
  • В JaybridgeRobotics автоматизируют промышленные транспортные средства промышленного класса для более эффективной работы;
  • В Nanotronics автоматизируют оптические микроскопы для улучшения результатов осмотра; и Amazon оптимизируют распределение ресурсов в соответствии с потребностями пользователей;
  • Другие примеры: прогнозирование потребностей ERP/ERM; прогнозирование сбоев и улучшение техобслуживания, улучшение контроля качества и увеличение мощности производственной линии.

Продажи и маркетинг

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

Кадры

    помогает рекрутерам находить и отбирать кандидатов; помогает менеджерам в управлении талантами.

Финансы

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

Здравоохранение

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

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

Вместо заключения

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

Читайте также: