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

Нужен ли мне диплом математика для построения нейронных сетей?

Короткий ответ: абсолютно нет! Существует множество библиотек, которые реализуют сложную математику для нас, и вам определенно не понадобится математическая степень для построения нейронных сетей. Однако базовое понимание математики, лежащей в основе нейронных сетей, действительно важно для понимания того, как они работают, в случае, если вам нужно отладить или оптимизировать свой алгоритм.

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

Где я могу узнать о нейронных сетях?

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

Математика, которую вы должны знать, чтобы понимать нейронные сети

Что такое нейронная сеть?

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

На рисунке 1 показано очень простое изображение нейронной сети. Основными частями нейронной сети являются:

  • Входной слой
  • Скрытый слой (их может быть несколько)
  • Выходной слой

Входной слой

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

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

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

Ресурсы

Скрытый слой

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

Взвешенная сумма

Взвешенная сумма, также известная как скалярное произведение, используется для вычисления значения, указанного на рисунке 1 как значение z. Она использует 3 переменные: w, x и b. . W - это матрица чисел, представляющих веса, которые инициализируются перед вычислением. Несмотря на то, что похоже, что w и x умножаются, на самом деле происходит скалярное произведение.

W имеет показатель степени T, который на самом деле не является показателем, он представляет транспонирование w. B - это систематическая ошибка, которая представляет собой просто число, которое инициализируется перед вычислением. X - входной вектор из предыдущего слоя. Вам не нужно беспокоиться о том, как инициализируются w и b, поскольку это будет описано далее в этой статье. Приведенные ниже ресурсы будут посвящены скалярному произведению, транспонированию матриц и умножению матриц.

Ресурсы

Активация

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

Ресурсы

Прямое распространение

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

Обратное распространение

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

Функция затрат

функция стоимости используется для расчета эффективности алгоритма. Различные нейронные сети могут использовать разные функции стоимости, поэтому это зависит от нейронной сети, которую вы используете. В нашем примере нейронной сети используется логистическая регрессия, которая имеет связанную функцию стоимости. Функция стоимости показана на рисунке 2. Не волнуйтесь, если функция стоимости выглядит немного пугающей. Если вы пройдете исчерпывающий курс по нейронным сетям, подробности будут объяснены. Даже если вы не понимаете функцию стоимости прямо сейчас, мы можем сосредоточиться на некоторых конкретных частях функции, чтобы вы были лучше подготовлены к ее пониманию позже.

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

Ресурсы

Градиентный спуск

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

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

Ресурсы

Последние мысли

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

Источники изображений

Отказ от ответственности

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