Математика под капотом ИИ: Как на самом деле учатся нейросети

freeCodeCamp.org 9,8 млн 3 ч 53 мин 35 мин 26.09.2022
Главное

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

🤖 Введение в машинное обучение и основы работы с данными 0:00

Машинное обучение сегодня перестало быть закрытой областью для узкого круга ученых и превратилось в инструмент, доступный каждому, кто готов разобраться в логике алгоритмов и основ кодинга. Вводный курс от Кайли Инг (Kylie Ying), физика и инженера с опытом работы в MIT и CERN, ставит своей целью демистифицировать эту технологию для начинающих . Обучение начинается не с сухой теории, а с практического погружения: использования репозитория UCI Machine Learning и набора данных MAGIC Gamma Telescope для предсказания типов частиц на основе паттернов излучения .

ИИ, машинное обучение и наука о данных: в чем разница? 8:43

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

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

Три кита машинного обучения 9:52

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

  1. Обучение с учителем (Supervised Learning). Здесь мы используем размеченные данные. Это означает, что для каждого входного примера у нас есть правильный ответ (метка). Например, показывая компьютеру фотографии кошек и собак с соответствующими подписями, мы учим его предсказывать метки для новых изображений .
  2. Обучение без учителя (Unsupervised Learning). В этом случае данные не имеют меток. Алгоритм самостоятельно ищет структуру и скрытые закономерности в информации. Типичный пример — кластеризация, когда компьютер группирует похожие изображения (например, отделяя фотографии животных от пейзажей) на основе общих признаков, не зная заранее, что именно на них изображено .
  3. Обучение с подкреплением (Reinforcement Learning). Этот метод напоминает дрессировку: программный «агент» обучается в интерактивной среде, совершая действия и получая за них награды или штрафы . Цель агента — максимизировать общую награду в долгосрочной перспективе .

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

Анатомия данных: признаки и типы предсказаний 12:41

Для того чтобы модель могла «понимать» информацию, данные должны быть представлены в виде вектора признаков (feature vector). Признаки — это характеристики объекта, которые мы передаем модели для прогноза . Они делятся на две большие группы:

Качественные (категориальные) признаки:

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

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

Стратегия разделения данных: обучение, валидация, тест 22:54

Одной из самых критических ошибок новичков является обучение и проверка модели на одном и том же наборе данных. Если мы «скормим» алгоритму весь доступный массив для обучения, мы никогда не узнаем, насколько хорошо он справится с новой, ранее не виденной информацией . Способность модели работать с новыми данными называется обобщением (generalization) .

Для корректной оценки Кайли Инг предлагает разделять исходный датасет (представленный как матрица признаков $X$ и вектор целей $y$) на три части :

  1. Обучающая выборка (Training set): составляет около 60–80% данных. На ней модель «тренируется», подстраивая свои параметры, чтобы минимизировать разницу (лосс) между предсказанием и реальностью .
  2. Валидационная выборка (Validation set): используется как «проверка реальности» в процессе обучения. Она помогает настроить модель и убедиться, что она все еще способна обрабатывать невидимые данные, прежде чем мы зафиксируем финальный результат .
  3. Тестовая выборка (Test set): финальный экзамен для модели, который проводится только один раз в самом конце, чтобы получить непредвзятую оценку качества.

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

📉 Измерение ошибок и подготовка данных к обучению 25:06

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

Математика ошибок: функции потерь L1, L2 и бинарная кросс-энтропия 27:34

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

Кайли выделяет три основных типа функций потерь:

  1. L1 Loss: вычисляется как абсолютное значение разности между реальным и предсказанным результатом. Графически это выглядит как латинская буква V: чем сильнее отклонение в любую из сторон, тем выше штраф . Если реальное значение отличается от предсказанного на 10 единиц, потеря для этой точки составит ровно 10 .
  2. L2 Loss (MSE): квадратичная функция. Здесь разница между значениями возводится в квадрат. Это означает, что для небольших отклонений штраф минимален, но для крупных ошибок он возрастает экспоненциально . Модель при использовании L2 становится гораздо более чувствительной к выбросам.
  3. Бинарная кросс-энтропия (Binary Cross Entropy): специфическая функция для задач классификации, где результат — это вероятность (0 или 1) .

Помимо функций потерь, Кайли Инг упоминает метрику точности (accuracy). На примере классификации изображений фруктов она объясняет: если из четырех картинок модель верно определила три (например, яблоко, апельсин и еще раз яблоко), её точность составит 75% . Однако для тонкой настройки алгоритмов функции потерь являются более информативным инструментом.

Подготовка данных: визуализация, масштабирование и оверсэмплинг 30:33

Перед тем как приступить к обучению, необходимо убедиться, что данные «понятны» алгоритму и сбалансированы. Ранее в разговоре Кайли уже касалась разделения данных, теперь же она фокусируется на их обработке внутри Google Colab. Визуализация через гистограммы с использованием библиотеки Matplotlib позволяет увидеть распределение признаков для двух классов: гамма-частиц (blue) и адронов (red) . Например, признак fLength показывает, что меньшие значения длины чаще соответствуют гамма-излучению, тогда как адроны распределены более равномерно .

Ключевым этапом подготовки становится масштабирование признаков. В исходном наборе данных некоторые колонки содержат значения в сотнях единиц, а другие — десятичные дроби вроде 0.03 . Такой разброс может негативно повлиять на результаты обучения. Чтобы исправить это, используется инструмент StandardScaler из библиотеки Scikit-learn . Он нормализует данные, делая их относительными к среднему значению и стандартному отклонению конкретного столбца .

Вторая критическая проблема — дисбаланс классов. В обучающей выборке Кайли обнаруживает около 7000 примеров гамма-частиц и только 4000 адронов . Если оставить всё как есть, модель может стать предвзятой в пользу более крупного класса. Для решения этой проблемы применяется метод Random Over Sampler :

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

Алгоритм K-ближайших соседей (KNN): логика близости 44:49

Первым конкретным алгоритмом, который разбирает Кайли Инг, становится KNN (K-Nearest Neighbors). В его основе лежит интуитивно понятная логика: объекты со схожими характеристиками, скорее всего, принадлежат к одному классу .

Для демонстрации используется пример с двумя признаками: доход семьи и количество детей. Цель — предсказать, владеет ли семья автомобилем (бинарная классификация) . На графике точки владельцев машин помечаются плюсом, а те, у кого машины нет — минусом. Если мы добавим на этот график новую, неизвестную точку, алгоритм KNN посмотрит на её «окружение» .

Для работы KNN критически важны два фактора:

  1. Функция расстояния: чаще всего используется Евклидово расстояние — длина прямой линии между двумя точками в многомерном пространстве . Математически это квадратный корень из суммы квадратов разностей координат X и Y .
  2. Параметр K: это число соседей, мнение которых учитывается. Обычно выбирают нечетное число (3 или 5), чтобы избежать ситуации «ничьей» при голосовании классов .

Если мы установим K=3, алгоритм найдет три ближайшие точки к нашему объекту. Если все три соседа не имеют машин (метки «минус»), то и новой точке с высокой вероятностью будет присвоена такая же метка . Таким образом, KNN классифицирует объекты на основе «мнения большинства» их ближайшего окружения .

📊 Оценка классификации и магия теоремы Байеса 50:55

Завершив разбор практической реализации алгоритмов классификации, Кайли Инг (Kylie Ying) переходит к критически важному этапу любого исследования в области машинного обучения — интерпретации результатов. Ранее в курсе обсуждался алгоритм K-ближайших соседей (KNN), и теперь, используя библиотеку Scikit-Learn, инструктор демонстрирует, как превратить сырые предсказания модели в осмысленные метрики качества. Обычной проверки «сколько угадали» часто недостаточно, особенно если данные распределены неравномерно.

Метрики качества: Precision, Recall и F1-score 54:39

Когда мы обучаем модель, первый вопрос, который возникает: «Насколько она хороша?». Стандартная точность (Accuracy) показывает процент правильных ответов, но Кайли Инг (Kylie Ying) подчеркивает, что этот показатель может быть обманчивым. Для более глубокого анализа используется отчет о классификации (classification report).

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

В примере с данными из кода точность модели составила около 82% . Однако при детальном рассмотрении выяснилось, что показатели для класса «0» (адроны) заметно хуже, чем для класса «1» (гамма-лучи), что наглядно демонстрирует важность раздельного анализа Precision и Recall для каждой категории .

Условная вероятность и теорема Байеса 58:42

Следующий фундаментальный этап курса — изучение метода Naive Bayes (Наивный Байесовский классификатор). Но прежде чем переходить к алгоритму, необходимо разобраться в математическом фундаменте: условной вероятности и правиле Байеса.

Кайли Инг (Kylie Ying) приводит наглядный пример с тестированием на COVID-19. Представьте таблицу, где строки — это реальное состояние здоровья (болен/здоров), а столбцы — результат теста (положительный/отрицательный). Основной вопрос звучит так: «Какова вероятность того, что вы действительно больны, если ваш тест показал положительный результат?»

Математически это записывается как $P(A|B)$ — вероятность события A при условии, что событие B уже произошло. В примере инструктора, основанном на гипотетических данных, вероятность болезни при положительном тесте составила 96,4% .

Однако в реальности мы часто не имеем прямой статистики. Здесь на помощь приходит теорема Байеса, которая позволяет вычислить искомую вероятность через обратную: $P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$

Инструктор разбирает задачу с «неизвестной болезнью», где даны вероятности ложноположительных (0,05) и ложноотрицательных (0,01) результатов, а также общая распространенность болезни в популяции (0,1) . Подставив эти значения в формулу Байеса, Кайли Инг (Kylie Ying) показывает, как априорное знание (10% больных в мире) обновляется на основе свидетельства (положительного теста), превращаясь в апостериорную вероятность в 68,75% .

Метод Naive Bayes: сила «наивного» подхода 1:07:48

Когда принципы вероятности применяются к машинному обучению, рождается метод Naive Bayes. В этом контексте терминология становится более специфичной:

  1. Posterior (Апостериорная вероятность): вероятность того, что объект принадлежит к классу $C_k$ при данных признаках $x$.
  2. Likelihood (Правдоподобие): насколько вероятно увидеть такие признаки, если мы точно знаем, что объект принадлежит к классу $C_k$.
  3. Prior (Априорная вероятность): общая вероятность класса в популяции (например, как часто встречаются кошки в датасете).
  4. Evidence (Свидетельство): общая вероятность появления данных признаков .

Почему же метод называется «наивным»? Кайли Инг (Kylie Ying) объясняет: алгоритм делает допущение, что все признаки объекта независимы друг от друга . В реальности это почти никогда не так (например, дождь и ветер часто взаимосвязаны), но такое упрощение позволяет математически заменить сложную совместную вероятность на простое произведение вероятностей отдельных признаков.

Для иллюстрации используется пример с игрой в футбол: вероятность того, что матч состоится сегодня, зависит от ветра, дождя и дня недели . Алгоритм Naive Bayes просто перемножает вероятности каждого фактора (дождь при условии игры, ветер при условии игры и т.д.) и умножает результат на общую вероятность проведения игры . Несмотря на свою «наивность», этот метод оказывается поразительно эффективным в задачах классификации текстов и быстрой обработке больших данных.

📈 Логистическая регрессия и мощь опорных векторов 1:19:22

Завершив разбор метода Naive Bayes, Кайли Инг (Kylie Ying) переходит к более сложным инструментам классификации. Хотя ранее рассмотренные метрики качества (такие как Precision и Recall) показали, что наивный байесовский классификатор справляется с задачей неплохо, достигая точности около 72% , в арсенале специалиста по Machine Learning есть гораздо более гибкие алгоритмы. Четвёртая глава нашего курса посвящена двум фундаментальным столпам обучения с учителем: логистической регрессии и методу опорных векторов.

Логистическая регрессия: от прямой линии к вероятностям 1:19:22

Многих сбивает с толку название «логистическая регрессия», так как оно звучит как задача предсказания чисел, а не классов. Однако это мощный инструмент именно для классификации. Кайли Инг объясняет это на примере набора данных, где есть две группы точек: класс «0» и класс «1» . Если мы попытаемся провести через них обычную линию регрессии, как в классической статистике, мы столкнемся с проблемой: такая линия уходит в бесконечность в обе стороны, в то время как вероятность принадлежности к классу должна строго лежать в диапазоне от 0 до 1 .

Математический переход к логистической регрессии строится в несколько этапов:

  1. Шансы (Odds): Вместо того чтобы предсказывать вероятность $P$, мы рассматриваем отношение вероятности успеха к вероятности неуспеха: $P / (1 - P)$. Это отношение уже может принимать значения от 0 до бесконечности .
  2. Логарифм шансов (Log-odds): Чтобы охватить весь диапазон значений от минус до плюс бесконечности, берется натуральный логарифм от шансов. Это позволяет соотнести линейное уравнение $mx + b$ с вероятностной природой данных .
  3. Сигмоидная функция: Инвертируя уравнение логарифма шансов, мы получаем формулу сигмоиды: $1 / (1 + e^{-x})$.

Графически сигмоида выглядит как S-образная кривая, которая асимптотически приближается к 0 и 1 . Она идеально подходит для классификации, так как плавно «сжимает» любые входные данные в вероятностный диапазон. Если у нас только один признак, это называется простой логистической регрессией, если много — множественной .

При реализации в библиотеке Scikit-learn Кайли использует класс LogisticRegression с параметрами по умолчанию, отмечая, что модель по умолчанию применяет штраф L2 (регуляризацию), чтобы избежать переобучения на аномалиях . В данном практическом примере логистическая регрессия показала точность 77%, что заметно лучше результата Naive Bayes .

Метод опорных векторов (SVM): поиск идеальной границы 1:29:20

Следующий алгоритм, который детально разбирает Кайли Инг, — это Support Vector Machines (SVM). Основная идея здесь заключается в поиске разделяющей гиперплоскости. В двумерном пространстве это просто линия, в трехмерном — плоскость, а в пространствах более высокой размерности — гиперплоскость .

Однако SVM не просто ищет любую линию, которая разделит «красные» и «синие» точки. Его цель — найти линию с максимальным отступом (margin) .

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

«Ядерный трюк» и нелинейная классификация 1:34:38

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

Здесь на сцену выходит Kernel Trick (ядерный трюк). Мы проецируем данные в более высокую размерность. Например, добавив к признаку $x$ новый признак $x^2$, мы превращаем линию в параболу на плоскости . Теперь данные становятся линейно разделимыми: мы можем провести прямую линию (гиперплоскость), которая четко отсечет одну группу от другой .

Эта математическая трансформация делает SVM невероятно гибким инструментом. При тестировании модели SVC (Support Vector Classifier) на учебном датасете точность подскочила до впечатляющих 87% . На текущем этапе обучения — это лучший результат среди всех классификаторов, включая KNN и Naive Bayes. Впрочем, Кайли Инг предупреждает, что даже этот результат можно попытаться превзойти, используя нейронные сети, к введению в которые она приступает в конце главы .

🧠 Архитектура нейронных сетей и механизмы обучения 1:39:40

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

Принципы построения искусственного нейрона 1:40:38

Архитектура нейронной сети начинается с концепции отдельного нейрона. Каждый такой узел принимает на вход определенные признаки (features), которые в математической модели обозначаются как $x_0, x_1, \dots, x_n$ . Однако эти входные данные не равнозначны для итогового результата. Каждому признаку соответствует свой специфический коэффициент — вес ($w$).

Процесс вычислений внутри нейрона выглядит следующим образом:

  1. Входные значения перемножаются с соответствующими им весами (например, $x_0 \times w_0, x_1 \times w_1$ и так далее) .
  2. Результаты этих произведений суммируются.
  3. К полученной сумме добавляется так называемый член смещения (bias term).

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

Роль активационных функций в создании нелинейных моделей 1:41:53

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

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

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

Обратное распространение ошибки и градиентный спуск 1:44:39

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

Метод, позволяющий сети найти этот путь вниз по склону, называется градиентным спуском (gradient descent) . Используя правила математического анализа (дифференцирование), алгоритм вычисляет градиент функции потерь относительно каждого веса в сети. По сути, это ответ на вопрос: «В какой степени конкретный вес $w_n$ влияет на итоговую ошибку?» .

Механизм обучения, называемый обратным распространением ошибки (backpropagation), работает следующим образом:

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

Особое внимание Кайли уделяет параметру $\alpha$ (alpha), известному как скорость обучения (learning rate) . Она контролирует размер «шага» при спуске. Если установить слишком высокое значение, модель может «проскочить» минимум и начать расходиться (diverge). Если шаг будет слишком мал, обучение займет слишком много времени. Правильная настройка этого гиперпараметра критична для сходимости (convergence) нейронной сети .

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

🧠 Оптимизация и финальное тестирование нейросетевых моделей 2:05:40

В процессе создания современных систем машинного обучения этап проектирования архитектуры — это лишь половина дела. Финальный успех зависит от того, насколько точно настроены внутренние параметры и как модель справляется с данными, которые она никогда не видела в процессе обучения. Кайли Инг (Kylie Ying) завершает работу над классификатором частиц, демонстрируя, как теоретические выкладки о нейронных сетях превращаются в работающий программный код на базе TensorFlow и Keras.

Пошаговая разработка в TensorFlow: от структуры к предсказаниям 2:05:40

Разработка нейросетевой модели в TensorFlow традиционно начинается с выбора API. В данном курсе Кайли использует высокоуровневый интерфейс Keras, а именно — последовательную модель (Sequential). Этот подход позволяет выстраивать архитектуру «слой за слоем», где данные проходят путь от входных признаков через скрытые плотные слои (Dense) к итоговому результату.

Ключевым моментом в обучении является мониторинг качества. Кайли отмечает разницу между двумя типами точности, которые видит разработчик в консоли: точностью на тренировочном наборе и на валидационном . В процессе обучения система автоматически выделяет часть данных (например, 20% от тренировочного сета) для мгновенной проверки того, насколько хорошо модель усваивает закономерности. Однако Инг подчеркивает важный технический нюанс: при вызове метода model.fit вместо простого разделения (validation_split) предпочтительнее передавать заранее подготовленный набор данных через параметр validation_data . Это гарантирует, что валидация происходит на чистом, строго фиксированном сегменте данных.

Когда модель обучена, наступает этап предсказания с использованием метода model.predict. Поскольку на выходе нейросети стоит сигмоидная функция активации (о которой речь шла в предыдущих главах), модель выдает не четкие «нули» или «единицы», а вероятности — значения, близкие к 0 или 1 . Чтобы превратить эти вероятности в классы (например, отличить гамма-излучение от адронов), Кайли применяет пороговое значение 0.5:

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

Оптимизация гиперпараметров: роль Grid Search и Dropout 2:06:54

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

В результате экспериментов лучшей конфигурацией для текущей задачи оказалась модель со следующими параметрами:

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

Оценка эффективности: почему нейросеть не всегда лучше SVM 2:09:04

Итоговый анализ модели проводится с помощью отчета классификации, где оцениваются точность (precision), полнота (recall) и F1-мера. Кайли замечает любопытную динамику: при использовании нейросети точность для класса «адроны» (0) немного возросла, но полнота снизилась. Тем не менее, итоговый показатель F1 остался на достойном уровне 0.81 .

Общая точность модели (Accuracy) составила около 87% . Сравнивая этот результат с алгоритмами, изученными ранее (такими как метод опорных векторов или логистическая регрессия), Инг делает важный философский вывод для любого дата-сайентиста. Несмотря на колоссальную мощность и гибкость нейронных сетей, в данном конкретном случае нейросеть показала результаты, практически идентичные методу опорных векторов (SVM) .

«Нейронные сети очень, очень мощные, как вы могли заметить. Но иногда SVM или какая-то другая модель может оказаться более подходящей для задачи» .

Этот пример наглядно иллюстрирует, что выбор алгоритма зависит не от его «модности» или сложности, а от конкретных данных и вычислительных ресурсов. Достигнув планки в 87%, Кайли Инг завершает блок, посвященный задачам классификации, и подготавливает почву для перехода к следующему масштабному разделу обучения — регрессионному анализу . В дальнейшем обучении фокус сместится с предсказания категорий на работу с непрерывными числовыми значениями, где пригодятся уже другие метрики качества.

📈 Математика предсказаний: Линейная регрессия и её оценка 2:30:52

Переход от задач классификации к регрессии требует смены инструментария не только в построении моделей, но и в методах их оценки. Если в предыдущих разделах Кайли Инг (Kylie Ying) фокусировалась на категориальных ответах, то теперь в центре внимания — предсказание непрерывных числовых значений. Фундаментом здесь выступает анализ остатков и статистические метрики, позволяющие понять, насколько удачно «линия наилучшего соответствия» описывает хаос реальных данных.

Анатомия ошибки: RSS, TSS и коэффициент детерминации 2:31:04

В основе линейной регрессии лежит стремление минимизировать разрыв между предсказанием и реальностью. Как отмечает Кайли Инг, компьютер в процессе обучения пытается минимизировать ошибку, которую математически выражают через сумму квадратов остатков (Residual Sum of Squares, RSS) . Возведение разницы в квадрат — это не просто технический прием, а способ «наказать» модель за крупные промахи: чем дальше точка от линии, тем сильнее она раздувает итоговый показатель ошибки .

Однако сама по себе величина RSS мало говорит о качестве модели без контекста. Для этого вводится понятие общей суммы квадратов (Total Sum of Squares, TSS). Чтобы вычислить TSS, мы представляем самый примитивный сценарий: что, если у нас нет регрессора, и для любого входного значения $x$ мы просто предсказываем среднее арифметическое всех $y$ в нашем наборе данных? . TSS показывает общую вариативность данных относительно этого среднего значения.

Сравнение этих двух величин дает нам ключевую метрику — $R^2$ (R-squared), или коэффициент детерминации:

  1. Если наше предсказание (линия наилучшего соответствия) намного точнее среднего значения, числитель (RSS) будет значительно меньше знаменателя (TSS) .
  2. В этом случае дробь $RSS/TSS$ стремится к нулю, а $R^2$ — к единице.
  3. Значение $R^2$, близкое к 1, обычно сигнализирует о том, что модель является хорошим предиктором, хотя это и не единственный показатель успеха .

Кайли также упоминает «скорректированный R-squared» (Adjusted R-squared). Это продвинутая версия метрики, которая учитывает количество добавленных признаков. В обычной линейной регрессии добавление любого нового $x$ почти всегда немного увеличивает $R^2$ чисто случайно; скорректированный коэффициент растёт только в том случае, если новый признак действительно улучшает модель больше, чем ожидалось бы по воле случая .

От теории к практике: Сеульский велопрокат 2:34:26

Для демонстрации работы регрессии используется реальный датасет UCI — данные о прокате велосипедов в Сеуле, Южная Корея . Целевая переменная здесь — количество арендованных велосипедов в час. Прежде чем приступать к вычислениям, Кайли Инг проводит критически важный этап подготовки данных, во многом перекликаясь с принципами масштабирования, затронутыми ранее в курсе.

Процесс подготовки включает несколько этапов:

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

Простая и множественная регрессия: Сравнение точности 2:48:16

Используя библиотеку sklearn, Кайли сначала строит модель простой линейной регрессии, где предиктором выступает только температура. После обучения (fit) модели, мы можем извлечь коэффициенты и свободный член (intercept), которые и формируют уравнение прямой .

Тестирование этой «температурной» модели на отложенной выборке дает $R^2 \approx 0.38$ . Это число говорит нам о наличии определенной связи (результат лучше нуля), но предсказательная сила модели ограничена. На графике видно, что хотя красная линия «наилучшего соответствия» и проходит через центр облака синих точек данных, она не может учесть огромный разброс .

Логичным шагом становится переход к множественной линейной регрессии (Multiple Linear Regression). Вместо одного признака модель обучается на совокупности факторов: температуре, влажности, точке росы, солнечной радиации, осадках и снеге . Результат не заставляет себя ждать: при включении всех значимых признаков коэффициент $R^2$ вырастает до $0.52$ . Это значительное улучшение, подтверждающее, что комбинация факторов описывает реальность точнее, чем один, даже самый важный параметр.

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

🕸️ Нейронные сети для решения задач регрессии 2:56:06

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

Линейная регрессия через призму нейронных сетей 2:56:23

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

Для реализации такой модели в TensorFlow используется библиотека Keras. В примере Кайли настраивает оптимизатор Adam, который уже упоминался ранее в курсе при обсуждении классификации. Основные параметры обучения включают:

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

Переход к глубоким архитектурам и нелинейности 3:00:09

Когда простых линейных зависимостей становится недостаточно, в игру вступают «настоящие» нейронные сети с несколькими слоями и функциями активации. Кайли Инг (Kylie Ying) переходит к построению более сложной модели, добавляя скрытый слой с 32 нейронами и функцией активации ReLU . Это позволяет модели улавливать нелинейные закономерности в данных, что невозможно для обычной регрессии.

При настройке выходного слоя для задачи предсказания количества арендованных велосипедов инструктор применяет важное ограничение: выходной нейрон также использует ReLU . Логика здесь проста — количество велосипедов не может быть отрицательным числом, и активация ReLU гарантирует, что предсказание всегда будет в диапазоне $[0, +\infty)$. Для этой модели скорость обучения устанавливается более консервативной — 0.001 .

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

Сравнительный анализ и оценка качества моделей 3:05:44

Заключительным этапом работы с регрессией становится сравнение эффективности классического и нейросетевого подходов на полном наборе данных. Ранее в разговоре Кайли упоминала, что коэффициент детерминации ($R^2$) для множественной линейной регрессии составлял около 0.52 . Для нейронных сетей основным мерилом становится расчет Mean Squared Error на тестовой выборке.

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

Результаты сравнения оказались любопытными:

  1. Среднеквадратичная ошибка: В некоторых случаях стандартная линейная регрессия показывала меньшее значение MSE, чем нейросеть .
  2. Визуализация: На графике рассеяния (True Values vs. Predictions) видно, что нейросеть склонна к недооценке значений в определенных диапазонах и дает больший разброс для высоких показателей .
  3. Выбор метода: Кайли подчеркивает, что нейросети не всегда являются лучшим выбором. Их преимущество проявляется там, где данные имеют явную нелинейную структуру, которую линейный регрессор просто не в состоянии «увидеть» .

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

📊 Кластеризация K-средних и метод главных компонент (PCA) 3:21:10

Девятая глава курса посвящена методам обучения без учителя — подходу, при котором алгоритм ищет внутренние закономерности в данных, не имея заранее заданных меток или правильных ответов. Кайли Инг (Kylie Ying) подробно разбирает два фундаментальных инструмента этого направления: алгоритм K-средних для группировки объектов и метод главных компонент (PCA) для упрощения структуры данных без потери важной информации.

Алгоритм K-средних: Итерация до стабильности 3:21:33

Процесс обучения в методе K-средних (K-Means) — это циклическое повторение шагов, которое в науке называется «ожиданием-максимизацией» (expectation-maximization). На этапе ожидания алгоритм приписывает каждую точку данных к ближайшему центроиду . На этапе максимизации происходит пересчет координат самих центроидов: они перемещаются в геометрический центр своих новых групп.

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

Основные характеристики метода K-средних:

PCA: Снижение размерности через поиск максимальной дисперсии 3:23:50

Второй критически важный метод обучения без учителя — это PCA (Principal Component Analysis). Его основная цель заключается в снижении размерности данных (dimensionality reduction) . Это необходимо, когда у объектов слишком много признаков (например, 100 характеристик), и нам нужно выделить из них несколько наиболее информативных.

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

Кайли Инг объясняет суть PCA через два дополняющих друг друга принципа:

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

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

Практика: Кластеризация набора данных о семенах пшеницы 3:33:50

Для практической реализации методов обучения без учителя используется набор данных «Seeds» из репозитория UCI . Он содержит геометрические параметры зерен пшеницы трех сортов: Kama, Rosa и Canadian. В распоряжении разработчика есть семь признаков, таких как площадь, периметр, компактность, длина и ширина зерна, а также коэффициент асимметрии .

Работа в Google Colab начинается с импорта классических библиотек: pandas для манипуляций с данными и seaborn для визуализации . При загрузке CSV-файла Кайли Инг обращает внимание на важный технический нюанс: поскольку данные разделены пробелами или табуляцией, в функции read_csv необходимо использовать параметр sep='\s+', чтобы Pandas корректно распознал колонки .

В процессе анализа данных выполняются следующие шаги:

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

Практическая визуализация и итоги: от многомерных данных к понятным кластерам 3:46:12

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

При визуализации двух графиков — результатов предсказания и реальных данных — цвета могут не совпадать. «Вы не должны сравнивать сами цвета между графиками, — поясняет инструктор, — ваша задача — сравнить, какие именно точки попадают в те или иные цветовые группы в каждом конкретном случае» . Если пространственное распределение точек в «розовом» кластере на одном графике соответствует распределению в «темно-розовом» на другом, это означает, что модель успешно выявила структуру данных . Ранее в курсе подробно рассматривался алгоритм K-средних, и теперь эти знания применяются для итоговой оценки качества сегментации.

Реализация PCA: сжатие семи измерений в два 3:47:50

Для того чтобы сделать данные наглядными, Кайли Инг (Kylie Ying) переходит к практической реализации метода главных компонент (PCA). Этот метод позволяет отобразить многомерное пространство признаков на плоскость. В рассматриваемом примере исходный датасет содержал семь характеристик для каждого образца зерна: площадь (area), периметр (perimeter), компактность (compactness), длина (length), ширина (width), асимметрия (asymmetry) и длина бороздки (groove) . Работа с семимерным пространством невозможна для человеческого восприятия, поэтому требуется редукция размерности.

Процесс реализации в коде выглядит следующим образом:

  1. Из библиотеки sklearn.decomposition импортируется класс PCA .
  2. Создается экземпляр модели, где параметр n_components устанавливается равным 2. Это означает, что мы хотим сжать все признаки в две основные оси (главные компоненты) .
  3. Применяется метод fit_transform к исходному набору данных x.

Результат трансформации наглядно демонстрирует мощь алгоритма. Исходная матрица имела форму (210, 7), что означало 210 образцов по 7 признаков в каждом . После применения PCA структура данных меняется на (210, 2) . Теперь каждый образец представлен как точка в двухмерном пространстве, где первая и вторая координаты (PCA 1 и PCA 2) аккумулируют в себе наиболее значимую вариативность исходных семи признаков .

Сопоставление с истинными метками и финальная оценка модели 3:50:01

Для финальной проверки точности обучения без учителя необходимо визуально сравнить полученные кластеры с «истиной» (ground truth). Кайли Инг (Kylie Ying) конструирует новые датафреймы, используя функцию горизонтального стека (H stack) . Она объединяет трансформированные PCA-координаты с метками, полученными от K-means, а затем создает аналогичный набор данных с оригинальными классами из исходного файла .

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

Инструктор обращает внимание на то, что хотя алгоритм иногда ошибается в зонах перекрытия кластеров, он успешно выделяет основные типы зерен, такие как Kama и Canadian . Самое важное здесь то, что модель пришла к этим выводам самостоятельно: «Наш алгоритм смог найти три различные категории и проделал отличную работу по их предсказанию без какой-либо информации от нас. Мы не давали алгоритму никаких меток заранее» .

Заключение и слова благодарности 3:53:20

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

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

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

💬 Цитаты

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

Кайли Инг (Kylie Ying) 1:42:22

«Иногда линейная регрессия может работать лучше, чем нейросеть; выбор правильной модели приходит с опытом.»

Кайли Инг (Kylie Ying) 3:11:44

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

Кайли Инг (Kylie Ying) 2:34:11

«F1-score — это своего рода комбинация точности и полноты. Мы будем ориентироваться в основном на него.»

Кайли Инг (Kylie Ying) 57:43

«PCA — это способ найти в пространстве направление с наибольшей дисперсией.»

«Логистическая регрессия — это по сути попытка подогнать наши данные под сигмоидную функцию.»

👥 Спикер
📖 Термины
SVM (Метод опорных векторов)
Алгоритм классификации, который ищет гиперплоскость, максимизирующую отступ между разными классами данных.
Backpropagation (Обратное распространение ошибки)
Метод обучения нейронных сетей путем вычисления вклада каждого веса в общую ошибку с помощью производных.
PCA (Метод главных компонент)
Математическая процедура снижения размерности данных при сохранении их вариативности.
Сигмоида
Функция, преобразующая любое входное число в значение в диапазоне от 0 до 1, часто интерпретируемое как вероятность.
Искусственный интеллект Kylie Ying Machine Learning TensorFlow Нейронные сети Data Science