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

Итак, прошлой осенью мы как группа решили решить эту проблему, сделав шаг назад и изучив «классическое» машинное обучение вместе.
Как правило, алгоритмы, подпадающие под «классическое» машинное обучение, старше и более интерпретируемы, чем глубокие нейронные сети. Мое предыдущее предположение заключалось в том, что эти компромиссы привели к значительному снижению производительности - в конце концов, почему еще люди будут так взволнованы нейронными сетями?
Оказывается, что для всех, кроме самых передовых рабочих нагрузок (например, в масштабе Google / Facebook), классические алгоритмы машинного обучения используются очень широко и дают большой эффект. И, потратив бесчисленные часы на отладку нейронных сетей, где проблема могла быть в одном из миллиона мест без указания того, с чего начать, я определенно увидел привлекательность интерпретируемой и быстрой, хотя и немного хуже на бумаге, модели.
Планируемый учебный план
Проведя небольшое исследование, мы решили, что будем использовать два основных ресурса машинного обучения:
- Курс Coursera по машинному обучению Эндрю Нг [coursera]: https://www.coursera.org/learn/machine-learning
- Практическая книга по машинному обучению [практическая]: https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291

а также несколько разовых предметов [разное]. Джейсон Бенн, имеющий самый предыдущий опыт машинного обучения, был нашим духовным проводником в этом путешествии. Первоначальный план выглядел так:
- Глава 2 Проект сквозного машинного обучения [практический]
- Глава 3 Классификация (точность / отзыв, мультикласс) [практический]
- Извлечение текстовых функций (из документации sklearn) [разное]
- Глава 4 Модели обучения (линейная / логистическая регрессия, регуляризация) [практический]
- Советы по применению машинного обучения [coursera]
- Глава 5 SVM (плюс ядра) [практический]
- Глава 6 Деревья принятия решений (основы) [практическое занятие]
- Глава 7 Ансамблевое обучение и случайные леса (xgboost, RandomForest) [практический]
- Глава 8 Снижение размерности (PCA, t-SNE, LDA) [практический]
- Разработка системы машинного обучения [практический]
- (Google) Рекомендации по машинному обучению [разное]
Джейсон выбрал эти части, чтобы оптимизировать их для «реальной практичности и быстрого изучения множества интересных вопросов».
Завершенная учебная программа
В итоге мы немного отклонились от первоначального плана. Это краткое изложение учебной программы, которую мы прошли. Мое обучение разделено на заметки и карточки, так как я экспериментировал с разными методами обучения на протяжении всего курса.
Глава 2 Проект сквозного машинного обучения [практическое занятие]
Это был общий обзор восьми шагов проекта машинного обучения:
- Посмотрите на картину в целом
- Получите данные
- Находите и визуализируйте данные, чтобы получить представление
- Подготовьте данные для алгоритмов машинного обучения
- Выберите модель и обучите ее
- Настройте свою модель
- Представьте свое решение
- Запускайте, отслеживайте и обслуживайте вашу систему
Это заложило основу для остальной части учебной программы.
Глава 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, поскольку они с большей вероятностью опубликовали высокоэффективные подходы, с которыми вы можете сравнить свое собственное решение.
Наконец, для своего собственного проекта я бы начал с совета Эдуоарда Харриса: создайте проект с интересным набором данных, который потребовал очевидных усилий для сбора, и сделайте его как можно визуально эффектно.
Ура, и пусть ваши модели всегда сходятся!