Эндрю Нг Класс Coursera в 2019 г.

Недавно я прошел онлайн-курс Машинное обучение профессора Эндрю Нг (Стэндфорд). Я выскажу свое мнение о том, стоит ли проходить этот курс в 2019 году. Моя уникальная точка зрения - это кто-то с формальным образованием в области физики и инженерии и с многолетним опытом работы в этих научных областях. В своей карьере я разрабатывал научное программное обеспечение, модели, симуляции и хорошо разбираюсь в статистике, исчислении и линейной алгебре. Однако, несмотря на то, что я использовал машинное обучение раньше, у меня не было академической подготовки по этому вопросу.

Предыстория

При выборе курса, который поможет мне в моем следующем карьерном шаге, курс Эндрю Нг стал одним из самых популярных курсов в этой области. Тем не менее, класс с 2015 года, содержит задания MATLAB и рекламируется как требующий минимального знания исчисления или линейной алгебры. Итак, я изначально чувствовал, что класс будет слишком упрощенным, будет использовать инструменты, нерелевантные для сегодняшней работы по машинному обучению (MATLAB), и устареет к 2019 году.

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

Вот хорошие, плохие и ужасные части, которые я нашел на протяжении всего курса.

Добро

Несмотря на то, что линейная алгебра и исчисление не требуются для занятий, если вы знаете их, вы можете легко расставить точки и получить более глубокое понимание различных тем. Чтобы дополнить материал курса, я использовал две известные книги по статистическому обучению: Введение в статистическое обучение (ISLR) и Элементы статистического обучения (ESL), которые доступны бесплатно.

Изначально я выполнял необходимые задания в MATLAB как можно быстрее, а затем перекодировал их в Python, играя с разными подходами для лучшего понимания (сравнение реализации, моделей и т. д.). Сравнение ручных реализаций numpy и scikit-learn там, где это особенно полезно. В середине курса я обнаружил, что могу выполнить задание прямо на питоне и отправить их на оценку с помощью этих блокнотов на питоне! Излишне говорить, что без MATLAB остальная часть курса была намного приятнее. (Обратите внимание, однако, что некоторые вопросы викторины используют код MATLAB, поэтому вам необходимо знать основы).

Больше всего мне понравился прогрессивный подход Эндрю Нг к сложной теме с помощью ряда приближений. Я также оценил тенденцию давать интуитивно понятные объяснения каждой концепции.

Плохо

Курс не был идеальным. Такие темы, как SVM, где не слишком подробно объяснено. При обсуждении PCA неплохо было бы указать на геометрическую интерпретацию, связанную с разложением SVD (см., например, эту дискуссию). Опять же, с помощью ранее упомянутых книг было относительно легко восполнить пробелы. Одно задание требуется для реализации обратного распространения (алгоритм, используемый для обучения нейронных сетей). Хотя обратное распространение считается сложным, оно сводится к итеративному применению цепного правила. Как ни странно, алгоритм был описан аксиоматически, так что от его реализации я многого не выиграл. Тем не менее, я восполнил этот пробел, используя прекрасную книгу Нейронные сети и глубокое обучение Майкла Нильсена, в которой есть глава, посвященная обратному распространению.

Уродство

Что ж, как вы можете догадаться, использование MATLAB — самая уродливая часть этого курса. К счастью, вы можете избежать MATLAB/Octave, используя ранее упомянутые записные книжки Python.

Больше вкусностей

В целом, курс охватывает обучение с учителем (линейная и логистическая регрессия, SVM, нейронные сети), обучение без учителя (PCA, k-means, обнаружение аномалий) и затрагивает специальные методы, такие как рекомендательные системы и крупномасштабное машинное обучение. Хотелось бы, чтобы он охватывал дополнительные методы, такие как деревья решений, случайный лес и повышение градиента. Кроме того, в курсе как минимум должно быть упомянуто о существовании других типов регуляризации (кроме L2) и вариантов градиентных спусков (например, с использованием моментов и схем с разной скоростью обучения). Однако, учитывая нехватку времени, я обнаружил, что количество охватываемых методов было удовлетворительным.

Однако самое интересное в курсе — это иллюстрация методов (с использованием языка Ng) «отладки» машинного обучения. К ним относятся обсуждение компромисса смещения и дисперсии, кривых обучения, анализа ошибок и анализа потолка. Последнее — очень простая, но мощная идея для определения приоритетов, над какой частью конвейера машинного обучения следует работать, чтобы максимизировать «выигрыш». Это умный способ сосредоточиться на низко висящих фруктах.

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

Выводы

Курс устарел в 2019 году? Я так не думаю. Правда, в настоящее время все восторженно отзываются о глубоком обучении, Python, кластерных вычислениях на базе графического процессора. Курс не будет охватывать ни один из них. Тем не менее, я считаю, что твердое понимание более традиционных «поверхностных» методов машинного обучения по-прежнему является очень ценным активом. Как объясняет Эндрю Нг, новый продукт всегда начинается с создания полного конвейера с использованием простейшего алгоритма обучения (базового плана). И чаще всего вы можете обнаружить, что «поверхностные» методы достаточно хороши для ваших целей.