Начало работы с машинным обучением и искусственным интеллектом может быть непосильным. Вот 2 бесплатных ресурса, которые помогут вам встать на правильный путь.

tl; dr - начните с Введение в машинное обучение Udacity, а затем завершите Нейронные сети и глубокое обучение Майкла Нильсена.

Проклятие знаний

На прошлой неделе я посетил свой первый PyData Meetup в Атланте. Большинство участников были разработчиками, руководителями бизнеса или специалистами по обработке данных, относительно плохо знакомыми с машинным обучением. В какой-то момент кто-то спросил: Как мне начать изучать глубокое обучение?. Кто-то предложил прочитать учебник Глубокое обучение Гудфеллоу и др.

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

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

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

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

В этом посте я поделюсь двумя ресурсами, которые рекомендую всем, кто не знаком с доменом.

Мои 3 критерия для отличных технических руководств

«Все должно быть сделано как можно проще, но не проще». - Альберт Эйнштейн

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

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

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

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

Вот чего вам следует ожидать

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

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

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

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

Итак, чего вы можете ожидать от своих инвестиций?

Если вы CXO…

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

Если вы менеджер по продукту или консультант…

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

Если вы разработчик или специалист по обработке данных…

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

Ресурс №1 - Введение в машинное обучение от Udacity

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

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

Критерий 1: принципы важнее тактики.

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

Thrum учит масштабировать функции, используя простые примеры прогнозирования размера рубашки по росту и весу:

Критерий 2: написание кода без утомительной работы.

Тесты Thrum требуют мини-тестов программирования в браузере. Эти упражнения отлично подходят для преобразования данных и математики в рабочие решения.

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

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

Критерий 3: вознаграждение.

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

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

Я пропустил последний проект, анализ электронных писем в расследовании мошенничества Enron.

Ресурс №2 - Нейронные сети и глубокое обучение Майкла Нильсена.

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

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

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

Джекпот.

С простыми примерами и пошаговым объяснением Нильсон выполняет свое обещание.

Критерий 1: принципы важнее тактики.

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

Критерий 2: кодирование без утомительной работы

Nielsen предоставляет нейронные сети, построенные на Numpy и Theano, для сопровождения каждой главы. Я быстро заставил их работать на моем Mac, чтобы распознавать рукописный ввод по набору данных MNIST.

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

Изменение параметров и данных было простым и помогло мне связать теорию с реализацией.

Критерий 3: вознаграждение.

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

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

Этот [поиск Google] - это видение пользовательского интерфейса, ориентированного на намерения. Согласно этому видению, вместо того, чтобы отвечать на буквальные запросы пользователей, поисковая система будет использовать машинное обучение, чтобы принимать неопределенные данные от пользователя, точно распознавать, что имелось в виду, и принимать меры на основе этих выводов.

Идея интерфейсов, основанных на намерениях, может применяться гораздо шире, чем поиск. В течение следующих нескольких десятилетий тысячи компаний будут создавать продукты, использующие машинное обучение для создания пользовательских интерфейсов, допускающих неточность, при этом распознавая истинные намерения пользователя и действуя в соответствии с ними. Мы уже видим первые примеры таких интерфейсов, основанных на намерениях: Siri от Apple; Вольфрам Альфа; IBM Watson; системы, позволяющие комментировать фото и видео; и многое другое.

Что дальше? Приложения для машинного обучения

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

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

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

В настоящее время я помогаю компаниям использовать свои информационные ресурсы для разработки новых возможностей с помощью ИИ. Напишите мне по адресу [email protected], если хотите пообщаться.