Об одном из первых онлайн-курсов Stanford University — ML-class c профессором Andrew Ng. Недавно всем окончившим курс выслали Statements of Accomplishment (сертификаты) с результатами. Кстати, почти у всех моих знакомых результат был 80/80 за Review Questions и 800/800 за Programming Exercises. И ещё, занятная статистика — у них на сайте написано, что за advanced track (review questions и programming exercises) выдано 12195 сертификатов, а за basic track (только review questions)
— только 1034. Т.е. почти все выбирали advanced track.
В целом, курс прошёл очень хорошо. С задачей, которую они себе поставили, они справились превосходно.
Сначала о формате. Мне кажется, такой формат можно брать за образец для онлайн обучения. Каждую неделю выкладывался один или два блока лекций. Каждый блок состоит из 5-10 маленьких лекций (от 5 до 15 минут). Причём лекции интерактивные
— внутри каждой лекции вставлены вопросы на понимание. И в плеере на страницах с лекциями есть кнопки ускорения в 1.2 и в 1.5 раза, чтобы не унывать на особо скучных моментах. Всё это
— маленькая длина лекций, вопросы внутри лекций и кнопки ускорения
— позволяет не засыпать и следить за материалом.
К каждому блоку лекций прилагается 5 контрольных вопросов на оценку (review questions), каждый вопрос считается за 1 балл. Вопросы несложные, если внимательно слушать лекции (или даже просто быть в теме), то ответить на них не составит труда. А если с первого раза не получилось ответить на всё правильно, после 10-минутного перерыва можно попробовать ещё раз. Проверка автоматическая. Basic track на этом, в общем-то, и заканчивался.
А вот для advanced track нужно было ещё выполнять задания на программирование (programming exercises), которые тоже прилагались к каждому блоку лекций. Использовался язык Octave (open-source аналог MatLab), изучению которого был также посвящён целый блок лекций. Задания представляли собой небольшие проекты, в которых решалась какая-нибудь задача машинного обучения (например, оценка стоимости квартиры в зависимости от её площади и других параметров или распознавание цифр на изображениях). В этих проектах было по несколько нереализованных мест, в которых надо было вставить свой код. И каждый проект снабжался PDF-кой страниц на 15, в которой детально описывалось, что в проекте происходит, что и как нужно реализовать. Задания были очень хорошо подготовлены, организаторы, должно быть, потратили на них кучу времени. Хорошо хоть, что проверка тут тоже автоматическая.
Ещё на сайте работал форум, в котором студенты могли задавать свои вопросы и команда курса на них отвечала. За всё время на форуме создали около 6000 тем.
А вот теперь обратная сторона медали. И заодно хочется сравнить этот курс с курсом по машинному обучению в ШАДе, который читает К.В. Воронцов.
Основные темы, которые рассказывались на ML-class,
— это линейная регрессия, логистическая регрессия, регуляризация, нейронные сети, SVM, кластеризация, понижение размерности, обнаружение аномалий. Практически все они покрываются в первом семестре курса Воронцова. Причём не просто покрываются, Воронцов их охватывает намного глубже. И ещё у Воронцова есть второй семестр, в который входят достаточно перспективные направления машинного обучения, не вошедшие в ML-class
— композиции алгоритмов (например, boosting), отбор признаков, логические алгоритмы (решающие деревья и др.).
Первое, что могли заметить студенты, начав проходить ML-class,
— курс очень простой. Первое задание можно было сделать за 5 минут, не смотря лекции. Все остальные задания были не намного сложнее. А на лекциях иногда так сильно разжёвывались некоторые места, что можно было заснуть, даже не смотря на кнопку ускорения в 1.5 раза. Как я уже сказал, команда курса отлично справилась с поставленной задачей. Вот только в самой задаче есть некоторая проблема. Они хотели, чтобы курс был как можно доступнее. Чтобы его можно было пройти даже без какого-либо математического образования. В результате им даже самим пришлось вставить блок лекций по самым-самым основам линейной алгебры. Во всех лекциях опускались математические подробности (а ведь в машинном обучении некоторые математические подробности очень важны), не было никаких доказательств, только готовые рецепты. Для прикладных задач это, наверно, хорошо, но вот ничего нового так не придумаешь.
Вот чем ML-class превосходит курс в ШАДе — это семинарским материалом (условно "семинарским", ведь в ML-class нет разделения на лекции и семинары). Лекции в ML-class были очень наглядными, они сопровождались обильными примерами (иногда, правда, чересчур обильными), визуализацией различных графиков. Также порадовали очень полезные разделы "X. Advice for Applying Machine Learning" и "XI. Machine Learning System Design", в которых объяснялось, когда каким вещам нужно уделять внимание ("Deciding What to Try Next" и "Prioritizing What to Work On"). В этом семинаристам ШАДа (в число которых я уже не вхожу) предстоит ещё совершенствоваться.
Остаётся только сказать спасибо профессору Andrew Ng и команде ML-class за этот курс, а также Stanford University за то, что не перестаёт радовать новыми онлайн-курсами.








