Покорение математики машинного обучения: версия для начинающих

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

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

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

Каков минимальный объем математических знаний, необходимых для машинного обучения?

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

Вот неполный список тем, с которыми нужно быть знакомым:

  1. Линейная алгебра: Коллега, Skyler Speakman, недавно сказал, что Линейная алгебра — это математика 21 века, и я полностью согласен с этим утверждением. В машинном обучении линейная алгебра встречается повсюду. Такие темы, как анализ основных компонентов (PCA), разложение по сингулярным числам (SVD), собственное разложение матрицы, LU-разложение, QR-разложение/факторизация, симметричные матрицы, ортогонализация и ортонормализация, матричные операции, проекции, собственные значения и собственные векторы, векторные пространства и нормы. необходимы для понимания методов оптимизации, используемых для машинного обучения. Самое удивительное в линейной алгебре то, что существует так много онлайн-ресурсов. Я всегда говорил, что традиционный класс умирает из-за огромного количества ресурсов, доступных в Интернете. Мой любимый курс по линейной алгебре — это курс, предлагаемый MIT Courseware (проф. Гилберт Стрэнг).
  2. Теория вероятностей и статистика. Машинное обучение и статистика — не очень разные области. На самом деле, кто-то недавно определил машинное обучение как «ведение статистики на Mac». Некоторые из фундаментальных статистических и вероятностных теорий, необходимых для машинного обучения, включают комбинаторику, правила и аксиомы вероятностей, теорему Байеса, случайные величины, дисперсию и ожидание, условное и совместное распределения, стандартные распределения (бернуллиевское, биномиальное, полиномиальное, равномерное и гауссовское), момент Генерирующие функции, оценка максимального правдоподобия (MLE), априорная и апостериорная оценка, максимальная апостериорная оценка (MAP) и методы выборки.
  3. Многомерное исчисление: некоторые из необходимых тем включают дифференциальное и интегральное исчисление, частные производные, векторно-значные функции, направленный градиент, гессианское, якобианское, лапласианское и лагражианское распределение.
  4. Алгоритмы и комплексная оптимизация. Это важно для понимания вычислительной эффективности и масштабируемости нашего алгоритма машинного обучения, а также для использования разреженности в наших наборах данных. Требуется знание структур данных (бинарные деревья, хэширование, куча, стек и т. д.), динамического программирования, рандомизированных и сублинейных алгоритмов, графиков, градиентных/стохастических спусков и первично-двойственных методов.
  5. Другие: включает в себя другие математические темы, не охваченные в четырех основных областях, описанных выше. Они включают реальный и комплексный анализ (множества и последовательности, топология, метрические пространства, однозначные и непрерывные функции, пределы, ядро ​​Коши, преобразования Фурье), теорию информации (энтропия, прирост информации), функциональные пространства и многообразия.

Я не «хорошо разбираюсь в математике», стоит ли мне заниматься машинным обучением?

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

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

Чтобы было ясно, для достижения этого состояния комфорта потребуются время и усилия, но это определенно не то, с чем вы рождаетесь.

Какая часть ML — это математика, а какая — код?

Математика и код тесно переплетены в рабочих процессах машинного обучения. Код часто строится непосредственно на основе математической интуиции и даже использует синтаксис математической записи. Фактически, современные фреймворки для обработки данных (например, NumPy) позволяют интуитивно и эффективно преобразовывать математические операции (например, произведения матриц/векторов) в читаемый код.

ОК С чего начать?

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

Что дальше?

Хорошо, теперь вы понимаете, что вам нужно делать, и имеете представление об основах.

Вот несколько ресурсов, которые дадут вам хорошо сбалансированную картину всего происходящего.

Математика для машинного обучения: в целом это наиболее подробное руководство по математике, используемой в машинном обучении. (Это буквально почти вся математика, необходимая для машинного обучения.)

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

Поваренная книга матриц: сборник фактов и свойств, связанных с матрицами.

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

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

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