Математика для Data Science и AI: Глубокое погружение

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

1. Линейная алгебра: от векторов и матриц до тензорных операций и собственных чисел

Линейная алгебра: от векторов и матриц до тензорных операций и собственных чисел

Добро пожаловать в курс «Математика для Data Science и AI: Глубокое погружение». Мы начинаем наше путешествие с фундамента, на котором держится практически всё современное машинное обучение — с линейной алгебры.

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

1. Скаляры и Векторы: Атомы данных

В мире данных всё начинается с единичного значения.

Скаляр

Скаляр — это просто одно число. В программировании это переменная типа int или float. В физике это величина, имеющая только значение, но не направление (например, температура или масса).

Вектор

Вектор — это упорядоченный список чисел. Если скаляр — это точка, то вектор — это стрелка в пространстве, указывающая направление и имеющая длину.

В Data Science вектор обычно представляет собой один объект данных. Например, если мы описываем квартиру, вектором может быть набор: [площадь, количество комнат, этаж].

Математически вектор-столбец записывается так:

Где:

  • — сам вектор (обычно обозначается жирным шрифтом).
  • — элементы (компоненты) вектора.
  • — размерность вектора (количество элементов).
  • !Графическое представление вектора на плоскости, показывающее его направление и компоненты.

    Операции с векторами

    Две самые важные операции, которые создают всё богатство линейной алгебры:

  • Сложение: Мы можем складывать два вектора одной размерности. Это происходит поэлементно.
  • Умножение на скаляр: Мы можем растянуть или сжать вектор, умножив каждый его элемент на число.
  • Где:

  • (альфа) — скаляр (число).
  • — исходный вектор.
  • — компоненты вектора.
  • 2. Матрицы: Таблицы данных

    Если вектор — это список чисел, то матрица — это двумерная сетка чисел, состоящая из строк и столбцов. В Data Science матрица чаще всего представляет собой целый набор данных (датасет), где строки — это объекты (например, разные квартиры), а столбцы — признаки (площадь, цена, район).

    Матрица размером выглядит так:

    Где:

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

    Это «сердце» нейронных сетей. Умножение матриц — это не просто перемножение чисел на одинаковых позициях. Это операция, сочетающая строки первой матрицы со столбцами второй.

    Чтобы умножить матрицу (размером ) на матрицу (размером ), количество столбцов в должно совпадать с количеством строк в . Результатом будет новая матрица размером .

    Формула для одного элемента результирующей матрицы:

    Где:

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

    > «Матричное умножение — это способ передачи информации от одного слоя нейросети к другому».

    3. Тензоры: Обобщение понятий

    В глубоком обучении (Deep Learning) мы часто используем библиотеки TensorFlow или PyTorch. Название «TensorFlow» намекает на то, что мы работаем с тензорами.

    Тензор — это обобщение скаляров, векторов и матриц на произвольное количество измерений.

    * Тензор ранга 0: Скаляр (просто число). * Тензор ранга 1: Вектор (массив 1D). * Тензор ранга 2: Матрица (таблица 2D). * Тензор ранга 3: Куб чисел (например, цветное изображение: высота ширина 3 цветовых канала RGB). * Тензор ранга 4: Пакет (batch) изображений (количество картинок высота ширина каналы).

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

    4. Важные операции линейной алгебры

    Транспонирование

    Транспонирование — это «поворот» матрицы вокруг её главной диагонали. Строки становятся столбцами, а столбцы — строками.

    Обозначается как . Если имеет размер , то будет иметь размер .

    Где:

  • — элемент транспонированной матрицы в -й строке и -м столбце.
  • — элемент исходной матрицы в -й строке и -м столбце.
  • Скалярное произведение (Dot Product)

    Это операция, которая принимает два вектора одинаковой длины и возвращает одно число (скаляр). Она показывает, насколько два вектора «смотрят» в одну сторону.

    Где:

  • — скалярное произведение векторов и .
  • — соответствующие компоненты векторов.
  • В нейросетях это используется для вычисления взвешенной суммы входов нейрона.

    5. Собственные числа и собственные векторы

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

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

    Уравнение выглядит так:

    Где:

  • — квадратная матрица (трансформация).
  • собственный вектор (eigenvector). Он не меняет направление.
  • (лямбда) — собственное число (eigenvalue). Это коэффициент растяжения или сжатия вектора .
  • !Иллюстрация собственного вектора, сохраняющего направление при трансформации.

    Зачем это нужно?

    В Data Science это используется для снижения размерности (метод главных компонент — PCA). Представьте, у вас есть данные с 1000 признаками. С помощью собственных векторов можно найти самые «важные» направления, вдоль которых данные меняются сильнее всего, и отбросить шум, оставив, например, только 10 главных признаков без существенной потери информации.

    Заключение

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

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

    2. Математический анализ: пределы, производные и градиенты функций многих переменных

    Математический анализ: пределы, производные и градиенты функций многих переменных

    В предыдущей статье мы построили фундамент из линейной алгебры: научились организовывать данные в векторы и матрицы. Теперь перед нами встает главный вопрос: как обучить машину?

    Обучение — это процесс улучшения. Чтобы улучшить модель, мы должны понимать, как изменение её параметров (весов) влияет на результат (ошибку). Именно здесь на сцену выходит математический анализ (Calculus). Это язык изменений, скоростей и оптимизации.

    В этой статье мы пройдем путь от школьного понятия функции до градиента — главного инструмента, который заставляет нейронные сети «учиться».

    1. Функции: От одной переменной к многим

    В Data Science мы постоянно работаем с функциями. Самая важная из них — функция потерь (Loss Function). Она показывает, насколько сильно ошибается наша модель.

    Функция одной переменной

    Классическая школьная функция выглядит так:

    Где:

  • — зависимая переменная (выходное значение).
  • — правило преобразования.
  • — независимая переменная (входное значение).
  • Пример: . Если , то .

    Функция многих переменных

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

    Математически это записывается так:

    Где:

  • — выходное значение (например, ошибка модели).
  • — входные переменные (параметры модели).
  • !Визуализация функции потерь в виде ландшафта, где высота z зависит от параметров x и y.

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

    2. Пределы: Понимание бесконечно малого

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

    Где:

  • — обозначение предела (от лат. limes — граница).
  • — переменная бесконечно приближается к значению .
  • — значение функции.
  • — число, к которому стремится функция.
  • В контексте производных нас интересует случай, когда изменение аргумента стремится к нулю. Это позволяет нам поймать «мгновенное» изменение.

    3. Производная: Скорость изменений

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

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

    Формальное определение через предел:

    Где:

  • — производная функции в точке (читается «эф штрих от икс»).
  • — крошечное изменение аргумента (приращение).
  • — изменение значения функции.
  • — отношение изменения функции к изменению аргумента.
  • Геометрический смысл

    Геометрически производная — это тангенс угла наклона касательной к графику функции в данной точке.

    * Если производная положительная — функция растет. * Если отрицательная — функция убывает. * Если равна нулю — мы находимся на вершине холма или на дне впадины (точка экстремума).

    !Касательная к графику функции, наклон которой демонстрирует значение производной в точке.

    Простые правила дифференцирования

    Нам не нужно каждый раз считать пределы. Есть готовые правила. Для Data Science важно помнить правило степенной функции:

    Если , то:

    Где:

  • — показатель степени.
  • — переменная.
  • Пример: Производная от равна . Производная от равна .

    4. Частные производные: Управление по отдельности

    Когда у нас функция многих переменных, например , мы не можем просто сказать «производная». Мы должны уточнить: по какой переменной мы смотрим изменение?

    Представьте, что вы стоите на склоне горы. * Если вы сделаете шаг на север (), высота изменится одним образом. * Если сделаете шаг на восток (), высота изменится иначе.

    Частная производная показывает скорость изменения функции при изменении только одной переменной, в то время как остальные считаются константами (замороженными).

    Обозначается специальным символом (читается «де» или «бэкслеш де»).

    Для функции :

  • Частная производная по (считаем просто числом):
  • Где: - — скорость изменения при изменении . - Производная от это , а считается константой, его производная равна 0.

  • Частная производная по (считаем просто числом):
  • Где: - — скорость изменения при изменении . - Производная от (константа) равна 0, а от равна .

    5. Градиент: Компас для нейросети

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

    Градиент — это вектор, составленный из всех частных производных функции. Он показывает направление наискорейшего роста функции.

    Для функции градиент обозначается символом (набла) и выглядит так:

    Где:

  • — вектор градиента.
  • — первая компонента вектора (частная производная по ).
  • — вторая компонента вектора (частная производная по ).
  • Зачем это нужно?

    Вспомним, что мы хотим минимизировать ошибку (спуститься с горы в самую низкую точку).

    > «Градиент всегда указывает в сторону самого крутого подъема. Следовательно, антиградиент (градиент со знаком минус) указывает в сторону самого крутого спуска».

    Именно на этом принципе работает алгоритм Градиентного спуска (Gradient Descent), который используется для обучения практически всех современных моделей AI. Мы считаем градиент функции потерь и делаем маленький шаг в противоположную сторону, обновляя веса модели.

    !Вектор градиента на карте высот, показывающий направление крутейшего подъема.

    6. Цепное правило (Chain Rule)

    Нейронные сети — это «слоеный пирог» из функций. Выход одного слоя является входом для следующего. Это называется сложной функцией (композицией функций).

    Пример: .

    Чтобы найти производную сложной функции, мы используем цепное правило:

    Где:

  • — итоговая производная по .
  • — производная внешней функции по внутренней.
  • — производная внутренней функции по аргументу.
  • — операция умножения.
  • В Deep Learning это правило лежит в основе алгоритма обратного распространения ошибки (Backpropagation). Оно позволяет нам понять, как изменение веса в самом первом слое нейросети влияет на ошибку в самом конце, проходя через все скрытые слои.

    Заключение

    Мы разобрали ключевые инструменты матанализа:

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

    3. Теория вероятностей и статистика: распределения данных, байесовский вывод и проверка гипотез

    Теория вероятностей и статистика: распределения данных, байесовский вывод и проверка гипотез

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

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

    1. Случайные величины и их природа

    В Data Science мы не всегда знаем точное значение переменной. Например, мы не можем точно предсказать цену акции завтра, но мы можем оценить вероятность того, что она вырастет.

    Случайная величина — это переменная, значение которой определяется случайным экспериментом. Она бывает двух типов:

  • Дискретная: Принимает конкретные, отдельные значения (орел/решка, количество писем в спаме, оценка фильма от 1 до 5).
  • Непрерывная: Может принимать любое значение из промежутка (рост человека, температура, время загрузки сайта).
  • Для описания вероятностей непрерывных величин мы используем функцию плотности вероятности (Probability Density Function, PDF). Площадь под графиком этой функции показывает вероятность попадания значения в определенный диапазон.

    2. Нормальное распределение: Король статистики

    Среди всех распределений данных одно занимает центральное место в машинном обучении — Нормальное распределение (или распределение Гаусса). Вы наверняка видели его график — это знаменитая «колоколообразная кривая».

    Почему оно так важно? Согласно Центральной предельной теореме, если мы возьмем сумму множества независимых случайных факторов, их результат будет стремиться к нормальному распределению. Ошибки измерений, рост людей, шум в сигналах — всё это часто распределено нормально.

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

    Где:

  • — значение плотности вероятности в точке (высота кривой).
  • — значение случайной величины.
  • (мю) — математическое ожидание (среднее значение). Оно показывает, где находится центр «колокола».
  • (сигма) — стандартное отклонение. Оно показывает ширину «колокола» (разброс данных). Чем больше , тем более пологий и широкий график.
  • — число Пи (примерно 3.14159).
  • — число Эйлера (примерно 2.71828).
  • !Иллюстрация того, как параметры мю (центр) и сигма (ширина) влияют на форму нормального распределения.

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

    3. Байесовский вывод: Обучение как обновление веры

    В классической статистике вероятность — это частота выпадения события (если подбросить монету 1000 раз, орел выпадет примерно 500 раз). Но в AI часто используется Байесовский подход.

    Суть байесовского мышления: Вероятность — это степень нашей уверенности. Когда мы получаем новые данные, мы обновляем нашу уверенность.

    Представьте, что вы разрабатываете спам-фильтр. Вы видите слово «выигрыш». Какова вероятность, что это спам? Теорема Байеса позволяет перевернуть вопрос: зная, как часто слово «выигрыш» встречается в спаме, мы можем найти вероятность того, что письмо является спамом.

    Формула Теоремы Байеса:

    Где:

  • апостериорная вероятность: вероятность события (письмо — спам), при условии, что произошло событие (в письме есть слово «выигрыш»).
  • правдоподобие: вероятность встретить слово «выигрыш» (), если мы точно знаем, что письмо — спам ().
  • априорная вероятность: наша начальная уверенность в том, что любое случайное письмо — это спам (до того, как мы прочитали текст).
  • полная вероятность события : вероятность встретить слово «выигрыш» в любом письме (и в спаме, и в нормальном).
  • > «Байесовский вывод — это математический процесс изменения мнения под воздействием новых фактов».

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

    4. Статистика и Проверка гипотез

    Если теория вероятностей дает нам правила игры, то статистика позволяет делать выводы о всей игре, наблюдая только за её частью.

    В Data Science мы всегда работаем с выборкой (sample) — частью данных, и хотим сделать вывод о генеральной совокупности (population) — всех возможных данных.

    Проверка гипотез

    Представьте, вы обучили новую модель нейросети (Модель Б) и хотите доказать, что она лучше старой (Модель А). Просто сравнить среднюю точность недостаточно — разница может быть случайной.

    Мы используем метод проверки гипотез:

  • Нулевая гипотеза (): Разницы между моделями нет, любые отличия случайны. (Аналог презумпции невиновности).
  • Альтернативная гипотеза (): Модель Б действительно лучше Модели А.
  • Чтобы принять решение, мы вычисляем p-value (p-значение).

    P-value — это вероятность получить такие же (или еще более выраженные) результаты, если бы на самом деле нулевая гипотеза была верна.

    * Если p-value очень маленькое (обычно меньше 0.05), это значит, что случайно получить такой результат почти невозможно. Мы отвергаем и говорим: «Результат статистически значим». * Если p-value большое, мы не можем отвергнуть . Возможно, модель лучше, но данных недостаточно, чтобы утверждать это наверняка.

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

    5. Связь с машинным обучением

    Все эти концепции пронизывают Data Science:

    * Инициализация весов: Веса в нейросетях в начале обучения задаются случайными числами из нормального распределения. * Функции потерь: Многие функции потерь (например, Cross-Entropy) выводятся из принципа максимального правдоподобия, который тесно связан с байесовской статистикой. * A/B тестирование: Когда компании тестируют новый интерфейс сайта, они используют проверку гипотез и p-value, чтобы понять, действительно ли новый дизайн увеличил продажи.

    Заключение

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

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

    4. Методы оптимизации: выпуклость, стохастический градиентный спуск и функции потерь

    Методы оптимизации: выпуклость, стохастический градиентный спуск и функции потерь

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

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

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

    1. Ландшафт оптимизации: Выпуклость

    Прежде чем начать спуск, важно понять, как устроена «поверхность» ошибки. В математике функции делятся на два важных типа: выпуклые и невыпуклые.

    Выпуклые функции (Convex Functions)

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

    Математически функция называется выпуклой, если отрезок, соединяющий любые две точки её графика, лежит над графиком (или на нём).

    Формальное определение:

    Где:

  • — функция, которую мы проверяем на выпуклость.
  • и — две любые точки входных данных.
  • (лямбда) — число от 0 до 1, определяющее точку на отрезке между и .
  • Левая часть неравенства — значение функции в промежуточной точке.
  • Правая часть неравенства — точка на прямой линии, соединяющей значения функции в и .
  • Для Data Science выпуклость — это мечта. Если функция потерь выпуклая (как в линейной регрессии), градиентный спуск гарантированно найдет лучшее решение.

    Невыпуклые функции (Non-convex Functions)

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

    * Глобальный минимум: Самая низкая точка во всем ландшафте (абсолютно лучшее решение). * Локальный минимум: Точка, которая ниже всех соседей, но не является самой низкой в целом (хорошее, но не идеальное решение). * Седловая точка: Место, где график изгибается вверх в одном направлении и вниз в другом (как седло для лошади). Здесь градиент равен нулю, но это не минимум.

    !Визуализация различий между выпуклым и невыпуклым ландшафтом оптимизации.

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

    2. Функции потерь: Измерение ошибки

    Чтобы спускаться, нам нужно знать высоту. В машинном обучении «высота» — это значение функции потерь (Loss Function). Она говорит нам, насколько сильно модель ошибается.

    Выбор функции зависит от задачи, которую мы решаем.

    Для задач регрессии: MSE

    Когда мы предсказываем число (цену квартиры, температуру), мы обычно используем среднеквадратичную ошибку (Mean Squared Error — MSE).

    Где:

  • — количество примеров в наборе данных.
  • — знак суммы (суммируем ошибку по всем примерам).
  • — реальное значение (истина) для -го примера.
  • (читается «игрек с крышкой») — предсказание модели.
  • — квадрат разницы между истиной и предсказанием.
  • Почему квадрат?

  • Он делает все ошибки положительными (ошибка -5 и +5 одинаково плохи).
  • Он сильно «наказывает» за большие промахи. Если ошибка выросла в 2 раза, штраф вырастет в 4 раза. Это заставляет модель быстрее исправлять грубые ошибки.
  • Для задач классификации: Cross-Entropy

    Когда мы предсказываем класс (кошка или собака, спам или не спам), MSE работает плохо. Здесь мы используем перекрестную энтропию (Cross-Entropy Loss). Она пришла из теории информации и вероятностей.

    Для бинарной классификации (два класса: 0 и 1):

    Где:

  • — значение функции потерь.
  • — истинная метка класса (0 или 1).
  • — предсказанная вероятность того, что объект относится к классу 1.
  • — натуральный логарифм.
  • Суть формулы проста: если истина , а модель предсказала вероятность (низкую), логарифм даст большое отрицательное число, и минус перед формулой превратит его в огромный штраф. Если же модель уверена (), штраф будет почти нулевым.

    3. Эволюция Градиентного спуска

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

    Формула обновления весов:

    Где:

  • — новые значения параметров (весов) модели.
  • — текущие значения параметров.
  • (альфа) — скорость обучения (learning rate). Размер шага.
  • — градиент функции потерь (вектор частных производных).
  • Но как именно мы считаем этот градиент? Есть три основных подхода.

    1. Пакетный градиентный спуск (Batch Gradient Descent)

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

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

    2. Стохастический градиентный спуск (SGD)

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

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

    3. Мини-пакетный спуск (Mini-batch SGD)

    Золотая середина, которую используют все современные нейросети. Мы берем небольшую группу примеров (батч), например, 32, 64 или 128 штук. Считаем ошибку по ним и делаем шаг.

    * Плюсы: Использует матричные операции (быстро считается на видеокартах), достаточно точный градиент, влезает в память.

    !Сравнение траекторий спуска: Batch GD (прямой), SGD (хаотичный) и Mini-batch (сбалансированный).

    4. Скорость обучения (Learning Rate)

    Параметр (альфа) в формуле выше — самый важный гиперпараметр при обучении. Он определяет длину вашего шага.

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

    Современные оптимизаторы (такие как Adam или RMSProp) умеют адаптивно менять длину шага: замедляться, когда спуск становится пологим, и ускоряться на крутых склонах.

    Заключение

    Мы разобрали физику обучения нейросетей:

  • Мы хотим найти минимум на сложном ландшафте (часто невыпуклом).
  • Мы используем MSE для предсказания чисел и Cross-Entropy для классификации.
  • Мы двигаемся с помощью Mini-batch SGD, балансируя между скоростью и точностью.
  • Теперь у нас есть все математические кирпичики. В следующей части курса мы наконец соберем их вместе, чтобы построить и обучить нашу первую полносвязную нейронную сеть с нуля, используя метод обратного распространения ошибки.

    5. Матричное исчисление и прикладная математика в архитектурах глубокого обучения

    Матричное исчисление и прикладная математика в архитектурах глубокого обучения

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

    В этой статье мы перейдем от теории к «двигателю» глубокого обучения. Мы разберем матричное исчисление — раздел математики, который позволяет вычислять производные не для отдельных чисел, а для целых таблиц данных одновременно. Также мы рассмотрим математическую суть популярных слоев нейросетей: свертки и Softmax.

    1. От Градиента к Якобиану

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

    Но что, если у нас есть слой нейросети, который принимает вектор (например, 100 признаков) и выдает тоже вектор (например, 50 признаков скрытого слоя)? Нам нужно знать, как каждый выход зависит от каждого входа.

    Здесь на сцену выходит Матрица Якоби (или Якобиан).

    Пусть у нас есть функция , которая преобразует вектор длины в вектор длины .

    Где:

  • — матрица Якоби размером (количество выходов количество входов).
  • — частная производная -го выхода по -му входу.
  • — компоненты выходного вектора.
  • — компоненты входного вектора.
  • Зачем это нужно? Когда мы делаем обратное распространение ошибки (Backpropagation) через слой, который меняет размерность данных, мы фактически умножаем вектор ошибки на матрицу Якоби. Это позволяет понять, какой вклад внес каждый входной нейрон в каждый выходной нейрон.

    !Матрица Якоби связывает изменения всех входных переменных со всеми выходными.

    2. Гессиан: Кривизна пространства

    Если градиент — это аналог первой производной (скорость), то Матрица Гессе (Гессиан) — это аналог второй производной (ускорение или кривизна).

    Для функции , принимающей вектор и выдающей скаляр, Гессиан — это квадратная матрица вторых частных производных.

    Где:

  • — матрица Гессе.
  • — вторая частная производная: сначала берем производную по , а от результата — по .
  • Физический смысл: Гессиан описывает форму ландшафта функции потерь. * Если все собственные числа Гессиана положительны — мы в «чаше» (локальный минимум). * Если все отрицательны — мы на вершине холма (локальный максимум). * Если есть и положительные, и отрицательные — мы в седловой точке (как седло лошади: вверх в одну сторону, вниз в другую).

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

    3. Матричное дифференцирование в Backpropagation

    Самая частая операция в нейросетях — это линейный слой:

    Где:

  • — выходной вектор.
  • — матрица весов.
  • — входной вектор.
  • — вектор смещения (bias).
  • Чтобы обучить сеть, нам нужно найти производную функции потерь по весам . Это выглядит как магия, но формула удивительно проста:

    Где:

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

    4. Математика свертки (Convolution)

    Сверточные нейросети (CNN) совершили революцию в компьютерном зрении. В их основе лежит математическая операция свертки.

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

    Для двумерного изображения и ядра формула одного пикселя выхода выглядит так:

    Где:

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

    !Операция свертки: ядро сканирует изображение для поиска признаков.

    5. Softmax: Превращение чисел в вероятности

    В задачах классификации (например, распознавание цифр от 0 до 9) нейросеть выдает набор чисел, которые могут быть любыми: . Как понять, что это значит?

    Нам нужно превратить их в вероятности: чтобы они были от 0 до 1 и в сумме давали 1. Для этого используется функция Softmax.

    Где:

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

    6. Регуляризация: Математика ограничений

    Иногда нейросеть начинает просто «заучивать» примеры, вместо того чтобы понимать закономерности. Это называется переобучением. Чтобы бороться с этим, мы добавляем к функции потерь штраф за слишком большие веса.

    Это называется L2-регуляризация (или Ridge Regression).

    Где:

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

    Заключение

    Мы увидели, как абстрактные формулы превращаются в рабочие механизмы AI:

  • Якобиан управляет потоками данных между слоями.
  • Гессиан объясняет сложность ландшафта обучения.
  • Свертка позволяет видеть паттерны.
  • Softmax дает вероятностную интерпретацию.
  • Теперь ваш математический фундамент полностью готов. Вы понимаете не только «как» нажать кнопку «обучить», но и «что» происходит внутри кремниевых мозгов в этот момент. В следующих частях курса мы начнем применять эти знания для построения конкретных архитектур.