Стоит ли это по-прежнему в быстро меняющемся ландшафте науки о данных?

Являясь одним из самых популярных массовых открытых онлайн-курсов (MOOC) по науке о данных, в нем зачислено более 2,6 млн человек (по состоянию на ноябрь 2019 г.), а средний рейтинг пользователей в настоящее время составляет 4,9 / 5… Нет сомнений в том, что сертификация по машинному обучению, предлагаемая Стэнфордским университетом Университет через Coursera пользуется огромным успехом.

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

Однако, когда я собирался на этот курс, у меня было две оговорки:

  1. Этот курс был выпущен в 2011 году, все ли он актуален до сих пор?
  2. Я просто перейду к тому, что уже знаю?

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

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

Что будет охватывать этот курс?

Курс охватывает ВСЕГО, ему удается втиснуть удивительное количество деталей в, казалось бы, небольшой период. Не то чтобы ему не хватало глубины, на самом деле, я считаю, что именно глубина материала является сильной стороной этого курса.

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

Существует также МНОГО советов по применению машинного обучения, таких как диагностика смещения и ошибки дисперсии, реализация наборов проверочных тестов, способы измерения производительности модели (точность, точность, отзыв и оценки F1), какие алгоритмы работают лучше с большим количеством / отсутствие данных и способы настройки указанных алгоритмов в соответствии с нашими потребностями и / или ситуацией.

Мой опыт, неделя за неделей

Неделя 1 - Введение, линейная регрессия и линейная алгебра

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

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

Неделя 2 - Дополнительная линейная регрессия, введение в Octave (или MatLab)

На этой неделе мы рассмотрим линейную регрессию с несколькими переменными. Нетрудно перейти от одномерной к многомерной линейной регрессии, и я не думаю, что многим это покажется слишком сложным.

Также есть введение в обычное уравнение, которое я никогда раньше не использовал, опять же, это было несложно, но весело! Самая сложная часть недели - это перевести это в код Octave во время первого задания по программированию.

Конечно, перед назначением мы знакомимся с Octave (или, если хотите, с MatLab). Octave - это просто MatLab с открытым исходным кодом, поэтому его довольно легко понять, если вы использовали MatLab (или Python, синтаксис очень похож).

Неделя 3 - Логистическая регрессия, регуляризация

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

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

Задание по программированию простое, но я ненадолго застрял из-за незначительных ошибок в моем коде (подумайте (1 / n * x), а не (1 / n) * x), к сожалению, это заняло у меня много времени на решение дольше, чем я хотел бы признать ...

Неделя 4 - Нейронные сети: представление

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

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

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

Неделя 5 - Нейронные сети: обучение

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

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

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

Неделя 6 - Советы по применению машинного обучения

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

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

Неделя 7 - Машины опорных векторов

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

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

Упражнение по программированию, возможно, было слишком простым, я бы хотел реализовать модель SVM вручную, но мы просто определяем функцию ядра Гаусса, что довольно просто. Вторая половина упражнения была интересной (но также простой), поскольку мы рассматриваем классификацию спама с помощью SVM. Это напомнило мне большой коммерческий проект машинного обучения, о котором я упоминал во вступлении, в котором я использовал рекуррентные нейронные сети (RNN) с word2vec и множеством других методов для классификации электронных писем клиентов, что было круто!

Неделя 8 - Обучение без учителя

Я отправился на эту неделю, совершенно не подвержен неконтролируемому обучению. Я знаю основную концепцию кластеризации K-средних, но не более того. Первое, что я понял, это то, что K-means - это супер просто, и это было большим облегчением! Оптимизация по сути такая же, как функция ядра Гаусса (и многие другие функции оптимизации, которые я теперь думаю). Тем не менее, это было очень интересно, и я вижу, что это очень полезно.

Вторая половина недели посвящена анализу основных компонентов (PCA). На высоком уровне я кое-что знал об этом, но очень мало. Я использовал модифицированную версию этого под названием t-SNE для визуализации вектора слов, но никогда не разбирался в ее внутренней работе. Что касается объема этого курса, я думаю, что PCA освещен хорошо и, опять же, не слишком сложен, что, как я подозреваю, во многом связано с глубоким пониманием и преподавательскими способностями Эндрю Нг.

Наконец, упражнение по программированию оказалось не слишком сложным. Я обнаружил, что логика кодирования немного сложнее, чем на 6-й и 7-й неделях, но опять же не слишком сложно. Я нашел это упражнение действительно полезным для завершения работы с K-средними и PCA.

Неделя 9 - Системы обнаружения и рекомендации аномалий

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

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

Неделя 10 и 11

Эти 2 недели короткие, без каких-либо заданий по программированию. Скорее завершение и заключение того, что мы уже узнали. Я закончил обе эти недели во время очень долгого перелета из Пекина в Лондон! К счастью, поскольку здесь нет задания по программированию, вы можете скачать видео и пройти 2 викторины со своего телефона, что потрясающе!

Несмотря на краткость, я все же нашел и 10, и 11 полезными и очень приятным способом закончить курс.

Вывод

Отличная универсальная основа для машинного обучения. Плюсы включают:

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

Минусы

  • Более поздние задания по программированию иногда бывают слишком абстрактными, спустя несколько недель казалось, что «напиши одно вычисление, а остальная часть предварительно написанного кода сделает всю тяжелую работу».

Заключительный за / против

  • Задания по программированию выполняются в Octave - это профессиональное средство, позволяющее учащимся обойти многие синтаксические / логические проблемы, которые, вероятно, возникнут с другими языками. Но минус, поскольку это не особенно широко используемый язык в промышленности ...

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

Пожалуйста, дайте мне знать, что вы думаете, или задайте вопросы в ответах ниже!

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



Спасибо,