Контекст

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

По мере того, как мы продолжали идти по этому пути, возникли некоторые вызывающие беспокойство закономерности:

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

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

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

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

Планируемый учебный план

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

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

  • Глава 2 Проект сквозного машинного обучения [практический]
  • Глава 3 Классификация (точность / отзыв, мультикласс) [практический]
  • Извлечение текстовых функций (из документации sklearn) [разное]
  • Глава 4 Модели обучения (линейная / логистическая регрессия, регуляризация) [практический]
  • Советы по применению машинного обучения [coursera]
  • Глава 5 SVM (плюс ядра) [практический]
  • Глава 6 Деревья принятия решений (основы) [практическое занятие]
  • Глава 7 Ансамблевое обучение и случайные леса (xgboost, RandomForest) [практический]
  • Глава 8 Снижение размерности (PCA, t-SNE, LDA) [практический]
  • Разработка системы машинного обучения [практический]
  • (Google) Рекомендации по машинному обучению [разное]

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

Завершенная учебная программа

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

Глава 2 Проект сквозного машинного обучения [практическое занятие]

Это был общий обзор восьми шагов проекта машинного обучения:

  1. Посмотрите на картину в целом
  2. Получите данные
  3. Находите и визуализируйте данные, чтобы получить представление
  4. Подготовьте данные для алгоритмов машинного обучения
  5. Выберите модель и обучите ее
  6. Настройте свою модель
  7. Представьте свое решение
  8. Запускайте, отслеживайте и обслуживайте вашу систему

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

Глава 3 Классификация (точность / отзыв, мультикласс) [практическое занятие]

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

Глава 4 Модели обучения (линейная / логистическая регрессия, регуляризация) [практическое занятие]

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

Извлечение текстовых функций (из документации sklearn) [разное]

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

Глава 6 Деревья принятия решений (основы) [практическое занятие]

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

Глава 7 Ансамблевое обучение и случайные леса (xgboost, RandomForest) [практическое занятие]

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

Глава 8 Снижение размерности (PCA, t-SNE, LDA) + статья об AirBNB [практическое занятие]

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

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

Глава 5 SVM (плюс ядра) [практическое занятие]

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

(Google) Рекомендации по машинному обучению + внедрение [разное]

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

Примечательно, что вы увидите, что мы решили исключить курс Andrew Ng Coursera из первоначальной учебной программы. После попытки пройти несколько запланированных уроков оказалось, что отсутствие древовидных методов и использование Octave вместо Python в классе не стоит дополнительных усилий.

Выводы

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

Я рад сообщить, что эти несколько месяцев более чем адекватно решили эти проблемы.

Трудно переоценить, насколько увлекательной была работа с библиотекой SciKit-Learn после того, как потратили столько времени на борьбу с разрозненной и плохо интегрированной инфраструктурой глубокого обучения. Абстракции Pipeline и Estimator потрясающе красивы. Оказалось, что для большинства рабочих нагрузок большая часть усилий приходилась на этапы исследования и подготовки данных, и для получения результатов и итераций потребовалось всего лишь «Estimator.fit (X_train, Y_train)».

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

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

Предлагаемая учебная программа

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

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

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

  • Глава 2 Проект сквозного машинного обучения
  • Глава 3 Классификация (точность / отзыв, мультикласс)
  • Глава 4 Модели обучения (линейная / логистическая регрессия, регуляризация)
  • Подача заявки на участие в конкурсе Kaggle с логистической регрессией
  • Глава 6 Деревья решений (основы)
  • Глава 7 Ансамблевое обучение и случайные леса (xgboost, RandomForest)
  • Подача заявки на участие в конкурсе Kaggle с помощью Random Forest
  • Подача конкурсных работ Kaggle с усилением градиента
  • Ваш собственный проект!

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

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

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

Ура, и пусть ваши модели всегда сходятся!