Как мы делаем новый учебник ШАДа по машинному обучению
Привет! Это снова Стас Федотов, я руковожу Школой анализа данных и несколькими университетскими проектами Яндекса в Москве. Совсем недавно на YaC on Education мы запустили учебник по машинному обучению от ШАДа и открыли первые несколько глав. Я бы хотел рассказать, что нас к этому подтолкнуло и каких принципов мы придерживаемся в написании учебника.
Я очень люблю очные офлайн-лекции, когда ты погружён в атмосферу, сразу даёшь преподавателю обратную связь, можешь что-то спросить у соседа и так далее. Но в такие занятия надо уходить с головой на несколько часов и откладывать другие дела — даже в тех случаях, когда самостоятельно освоить тему удалось бы гораздо быстрее. Я неизбежно задумывался о том, как облегчить таким, как я, изучение data science.
Мы пробовали разные подходы к адаптации лекционных материалов ШАДа в онлайн-формат:
- Записываем на видео все лекции ШАДа и выкладываем некоторые курсы в открытый доступ — буквально вчера на YouTube появились лекции Виктора Лемпицкого по глубинному обучению: Смотреть
- Конечно, делали и подход к производству онлайн-курсов для разных платформ.
Однако первый вариант не позволяет динамично обновлять контент, нужно каждый раз заливать все видео курса заново, а второй требует полной перестройки курса и совсем иного представления материала.
Чувствовалось, что можно сделать лучше и создать источник, который обладал бы несколькими свойствами:
- набор базовых тем достаточно стабилен, хорошо сделан один раз и больше практически не исправляется (помню, видеооператоры Яндекса спрашивали меня, зачем мы каждый год снимаем лекцию по линейной регрессии, если даже они уже всё выучили),
- легко поддерживать актуальность (всё время выходят новые статьи, а перезаписывать видео с такой скоростью дорого и трудно),
- в материале легко ориентироваться (искать нужную формулу в видео можно в лучшем случае за логарифм).
А из такого описания вполне явно проступают контуры учебника! Но мы долго не брались за него, потому что нам казалось, что будущее всё-таки за живым общением с преподавателем, а текстовый учебник — это что-то сухое. Но потом Лена Войта создала замечательный NLP Course | For You, и я увидел, что учебник тоже может быть живым и интерактивным. Помню, прочитав первую главу For You, я сказал себе: хочу, чтобы все курсы ШАДа были такими! Насчёт всех я, конечно, погорячился, но той же осенью стал искать единомышленников для создания учебника по ML.
А единомышленников было нужно немало. Машинное обучение как область разрослось, и один человек вряд ли может написать обо всём, особенно если речь про достаточно продвинутые разделы: теорию глубинного обучения, графовые сетки, обучение с подкреплением. Очень здорово, что выпускники, преподаватели и друзья ШАДа отзываются и помогают. У нас подобралась отличная команда, с нами даже такие ветераны ML-образования, как Виктор Кантор vkantor и Евгений Соколов.
Время от времени возникают споры по поводу структуры. Хочется сделать её максимально ясной, не смешивая разные сущности, чтобы читателю не надо было гадать, где искать, к примеру, логистическую регрессию (ответ: конечно, в линейных моделях). Но это иной раз непросто. Показательный пример — многоклассовая классификация. Выделять её в отдельную главу было бы странно: в ней нет таких теоретических концепций, которые важно понять для усвоения курса машинного обучения. Совсем не рассказывать про неё тоже неправильно: она встречается на практике слишком часто.
Поэтому мы решили декомпозировать эту тему на две части:
- Метрики классификации, которые отлично легли в главу про измерение качества моделей.
- Построение многоклассовой модели, которая нашла своё место в разделе про линейные модели.
Обучение без учителя тоже заставило нас задуматься над тем, как мы вообще привыкли воспринимать ML. Мы привыкли, что бывает обучение с учителем и без, но когда начинаешь перечислять задачи обучения без учителя, быстро приходит в голову кластеризация —, а что дальше? Допустим, оценивание плотности (правда, зачем, но оставим пока этот вопрос). Очень важное место в современном ML занимает обучение представлений —, но если отбросить матричные разложения, как, начиная с word2vec, обучаются представления? Решается синтетическая задача (предсказания контекста, поиска по ключам и так далее) — то есть обучение не то чтобы без учителя, просто разметка берётся из самих данных. Так что пора уже в первую очередь говорить про self-supervised, а про обучение без учителя — мелким шрифтом.
Конечно, то, что доступно сейчас — это лишь начало. Немало глав пока доступны только для студентов ШАДа и откроются в ближайшие несколько месяцев, другие только создаются, а про некоторые мы ещё даже не успели подумать. Машинное обучение меняется каждый год, и я понимаю, что задуманный нами учебник будет полезным, только если он будет постоянно обновляться, отражая эти перемены. Какие-то главы через пару лет предстоит переписывать с нуля. И в этом нам будет нужна и ваша помощь. Если у вас есть идеи, чего не хватает, или желание помочь людям осознать какую-то тему — пишите на shadmlhandbook@yandex.ru и присоединяйтесь к нашей команде.