Основы машинного обучения: от теории к практике

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

1. Введение в машинное обучение: основные понятия, типы задач и виды обучения

Введение в машинное обучение: основные понятия, типы задач и виды обучения

Добро пожаловать в курс «Основы машинного обучения: от теории к практике». Мы начинаем наше путешествие в мир искусственного интеллекта с самой базы. Сегодня мы разберемся, что такое машинное обучение (Machine Learning, ML), чем оно отличается от обычного программирования и какие задачи оно способно решать.

Машинное обучение окружает нас повсюду: от рекомендаций фильмов на стриминговых сервисах до голосовых помощников в наших смартфонах. Но как именно машина «учится»?

Машинное обучение против традиционного программирования

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

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

Схема выглядит так: > Данные + Правила = Ответы

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

Схема меняется на: > Данные + Ответы = Правила

!Сравнение потоков данных в классическом программировании и ML

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

Основные термины и математическая интуиция

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

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

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

    Формально это можно записать так:

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

    Когда модель обучена, мы используем её для предсказаний. Предсказанное значение обычно обозначается «с крышечкой» (hat):

    Где: * — предсказанное значение целевой переменной. * — обученная модель. * — новые входные данные.

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

    Три столпа машинного обучения

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

    !Классификация видов машинного обучения

    1. Обучение с учителем (Supervised Learning)

    Это самый распространенный тип ML. Здесь у нас есть «учитель», который знает правильные ответы. Датасет состоит из пар: «входные данные» и «правильный ответ».

    Аналогия: Ученик в школе решает примеры, а учитель говорит, где он ошибся, и показывает правильное решение.

    Задачи обучения с учителем делятся на два подтипа:

    Регрессия (Regression): Целевая переменная — это число*. Примеры:* Предсказание цены квартиры, прогноз температуры на завтра, оценка выручки магазина. Классификация (Classification): Целевая переменная — это категория* (класс). Примеры:* Определение спама в почте (спам / не спам), распознавание рукописных цифр (0-9), диагностика болезни (болен / здоров).

    2. Обучение без учителя (Unsupervised Learning)

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

    Аналогия: Ребенку дали коробку с деталями LEGO разных цветов и форм, но не дали инструкцию. Ребенок начинает сам сортировать их: кубики к кубикам, колеса к колесам, красные к красным.

    Основные задачи:

    * Кластеризация (Clustering): Группировка объектов по схожим признакам. Примеры:* Сегментация клиентов банка (VIP, эконом, студенты), группировка новостей по темам. * Снижение размерности (Dimensionality Reduction): Упрощение данных с сохранением их сути. Это полезно для визуализации или сжатия информации.

    !Пример работы алгоритма кластеризации

    3. Обучение с подкреплением (Reinforcement Learning)

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

    Аналогия: Дрессировка собаки. Если собака выполняет команду — она получает лакомство (награду). Если грызет тапки — получает выговор (штраф). Со временем собака учится вести себя так, чтобы получать максимум лакомств.

    Математически это часто описывается через стремление максимизировать суммарную награду:

    Где: * — суммарная награда за все время. * — шаг времени от 0 до конечного момента . * — награда, полученная на шаге .

    Примеры: Обучение роботов ходить, игровые боты (Dota 2, шахматы, Go), автопилоты автомобилей.

    Обобщающая способность (Generalization)

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

    Если студент выучил ответы на билеты экзамена наизусть, но не понял предмет, он провалится на первом же дополнительном вопросе. То же самое и с моделью. Это явление называется переобучением (overfitting), и мы будем детально бороться с ним в следующих статьях курса.

    Резюме

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

    2. Работа с данными: предварительная обработка, очистка и разведочный анализ

    Работа с данными: предварительная обработка, очистка и разведочный анализ

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

    В сообществе Data Science существует золотое правило:

    > Garbage In, Garbage Out (Мусор на входе — мусор на выходе).

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

    Жизненный цикл данных в ML

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

  • Разведочный анализ данных (EDA — Exploratory Data Analysis): Понимание того, с чем мы имеем дело.
  • Очистка данных (Data Cleaning): Исправление ошибок и пропусков.
  • Конструирование признаков и предобработка (Feature Engineering & Preprocessing): Приведение данных к виду, понятному машине.
  • !Схематичное изображение процесса превращения сырых данных в подготовленный датасет.

    1. Разведочный анализ данных (EDA)

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

    Наша цель на этом этапе — найти закономерности, аномалии и проверить гипотезы с помощью статистики и визуализации.

    Описательная статистика

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

    Среднее значение (Mean) — это сумма всех значений, деленная на их количество. Оно показывает «центр масс» наших данных.

    Где: * — среднее арифметическое значение выборки. * — количество объектов в выборке. * — знак суммирования (сигма). * — значение признака для -го объекта.

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

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

    Разброс данных

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

    Где: * (сигма) — стандартное отклонение. * — квадратный корень. * — количество объектов. * — конкретное значение. * — среднее значение.

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

    2. Очистка данных (Data Cleaning)

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

    Работа с пропущенными значениями (Missing Values)

    В таблицах пропуски часто обозначаются как NaN (Not a Number) или null. Модели машинного обучения (за редким исключением) не умеют работать с пустотой. У нас есть три пути:

  • Удаление: Если пропусков мало (например, менее 5% строк), мы можем просто удалить эти строки. Если в каком-то столбце пропусков 90%, лучше удалить весь столбец.
  • Заполнение (Imputation): Мы можем заполнить пустоты:
  • * Средним или медианой (для чисел). * Самым частым значением (модой) для категорий. * Константой (например, -1 или 0).
  • Умное заполнение: Использовать другую ML-модель, чтобы предсказать пропущенные значения на основе остальных данных.
  • Выбросы (Outliers)

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

    Для обнаружения выбросов часто используют визуализацию Boxplot («Ящик с усами»).

    !Структура диаграммы Boxplot для определения аномальных значений.

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

    3. Предобработка данных (Preprocessing)

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

    Кодирование категориальных признаков

    Представьте столбец «Цвет машины»: Красный, Зеленый, Синий. Мы не можем подать слова в формулу. Нам нужно превратить их в цифры.

    Label Encoding (Порядковое кодирование): Каждой категории присваивается число: Красный = 1, Зеленый = 2, Синий = 3. Проблема: Модель может решить, что Синий (3) «больше» или «лучше», чем Красный (1), хотя между цветами нет математического порядка.

    One-Hot Encoding (Горячее кодирование): Мы создаем новые столбцы для каждого уникального значения. В строке ставится 1, если объект относится к категории, и 0 — если нет.

    | Цвет | -> | Цвет_Красный | Цвет_Зеленый | Цвет_Синий | |---|---|---|---|---| | Красный | -> | 1 | 0 | 0 | | Зеленый | -> | 0 | 1 | 0 | | Синий | -> | 0 | 0 | 1 |

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

    Масштабирование признаков (Scaling)

    Представьте, что у нас есть два признака:

  • Возраст (от 0 до 100).
  • Зарплата (от 20 000 до 500 000).
  • Для многих алгоритмов (особенно тех, что основаны на измерении расстояний, как k-NN или градиентный спуск) зарплата будет казаться гораздо более важным признаком просто потому, что числа там больше. Чтобы уравнять их вклад, мы используем масштабирование.

    Нормализация (Min-Max Scaling): Приводит все значения к диапазону от 0 до 1.

    Где: * — новое нормализованное значение. * — исходное значение. * — минимальное значение в столбце. * — максимальное значение в столбце.

    Стандартизация (Z-score Normalization): Делает так, чтобы среднее значение стало равно 0, а стандартное отклонение — 1. Это полезно, если данные имеют нормальное распределение (колокол).

    Где: * — стандартизированное значение (z-оценка). * — исходное значение. * (мю) — среднее значение выборки. * (сигма) — стандартное отклонение выборки.

    Резюме

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

  • EDA: Мы изучаем данные, считаем среднее и медиану, строим графики, чтобы понять природу данных.
  • Очистка: Мы решаем, что делать с пропусками (удалять или заполнять) и боремся с выбросами.
  • Кодирование: Мы превращаем текст и категории в числа (One-Hot Encoding).
  • Масштабирование: Мы приводим признаки к одному масштабу, чтобы модель адекватно оценивала их важность.
  • Теперь, когда наши данные чисты и структурированы, мы готовы к самому интересному — выбору и обучению модели. Об этом мы поговорим в следующей статье.

    3. Классические алгоритмы: линейные модели, деревья решений и методы кластеризации

    Классические алгоритмы: линейные модели, деревья решений и методы кластеризации

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

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

    Мы рассмотрим три фундаментальных подхода:

  • Линейные модели (для регрессии и классификации).
  • Деревья решений (интуитивно понятные правила).
  • Алгоритм K-Means (для кластеризации).
  • 1. Линейные модели

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

    Линейная регрессия (Linear Regression)

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

    !Визуализация принципа линейной регрессии: поиск оптимальной прямой.

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

    Где: * — целевая переменная (например, цена). * — вес (weight), коэффициент наклона прямой. Он показывает, насколько сильно влияет на . * — значение признака (площадь). * — смещение (bias), точка пересечения с осью Y. Это базовая цена, если площадь равна нулю.

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

    Где: * — предсказанное значение. * — свободный член (bias). * — веса для каждого признака. * — значения признаков.

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

    Логистическая регрессия (Logistic Regression)

    Пусть вас не обманывает название. Логистическая регрессия используется для задач классификации, а не регрессии. Например: уйдет клиент или останется (1 или 0)?

    Если мы попробуем использовать обычную прямую линию для предсказания класса (0 или 1), результат может уйти в бесконечность (например, выдать 150 или -20), что не имеет смысла для вероятности.

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

    !Сигмоида трансформирует любое число в вероятность от 0 до 1.

    Формула сигмоиды:

    Где: * — результат функции (вероятность), значение в диапазоне . * — число Эйлера (основание натурального логарифма, ). * — результат линейного уравнения ().

    Если , мы говорим, что это класс 1. Если меньше — класс 0. Это и есть «граница принятия решения».

    2. Деревья решений (Decision Trees)

    Линейные модели хороши, но они предполагают, что зависимость простая и монотонная. Но что, если зависимость сложная? Например, «Если человек младше 18, он не получит кредит. Если старше 18, но доход низкий — тоже нет. Если старше 18 и доход высокий — получит».

    Деревья решений имитируют логику принятия решений человеком. Это набор правил «Если ... то ...», выстроенных в иерархическую структуру.

    Анатомия дерева

  • Корневой узел (Root Node): Самый верхний вопрос, который лучше всего разделяет выборку на две части.
  • Внутренние узлы (Decision Nodes): Узлы, где происходит проверка условия (например, «Возраст > 18?»).
  • Листья (Leaf Nodes): Конечные узлы, где мы получаем ответ (прогноз).
  • !Пример простой структуры дерева решений.

    Как строится дерево?

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

    Для оценки чистоты используются математические метрики, такие как Энтропия или Неопределенность Джини. Мы не будем углубляться в формулы энтропии сейчас, но суть проста: если в группе только объекты одного класса — энтропия равна 0 (идеальный порядок). Если 50/50 — энтропия максимальна (хаос).

    Плюсы и минусы деревьев

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

    > «Дерево решений — это как человек, который вызубрил все ответы на билеты, но не понял предмет. На экзамене с новыми вопросами он провалится».

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

    3. Кластеризация: Метод K-средних (K-Means)

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

    Самый популярный алгоритм — K-Means.

    Алгоритм работы

    Представьте, что у вас есть рассыпанные на столе пуговицы разных цветов, и вы хотите разложить их на 3 кучки, но вы дальтоник и ориентируетесь только на положение пуговиц.

  • Инициализация: Мы выбираем количество кластеров (например, 3). Случайным образом ставим 3 точки в пространстве данных. Эти точки называются центроидами.
  • Присвоение: Для каждой точки данных мы считаем расстояние до всех центроидов и относим точку к самому близкому.
  • Пересчет: Теперь, когда у каждого кластера появились свои точки, мы вычисляем новый центр масс для каждого кластера и передвигаем центроид туда.
  • Повторение: Повторяем шаги 2 и 3, пока центроиды не перестанут двигаться.
  • Для расчета близости обычно используется Евклидово расстояние:

    Где: * — расстояние между точками и . * — количество признаков (размерность пространства). * — координаты точек по -му признаку. * — сумма квадратов разностей координат.

    !Итеративный процесс обучения алгоритма K-Means.

    Проблема выбора K

    Главная сложность K-Means — нужно заранее сказать алгоритму, сколько кластеров искать. Если выбрать неправильное число, результат будет бессмысленным. Для подбора часто используют «Метод локтя» (Elbow Method), анализируя график изменения ошибки.

    Резюме

    Сегодня мы пополнили наш арсенал тремя мощными инструментами:

  • Линейная регрессия — проводит прямую линию через данные. Идеальна для простых зависимостей и предсказания чисел.
  • Логистическая регрессия — использует сигмоиду для классификации (разделения на классы).
  • Деревья решений — строят иерархию правил. Очень понятны, но любят переобучаться.
  • K-Means — группирует данные без учителя, основываясь на расстоянии между точками.
  • В следующей статье мы узнаем, как понять, хороша ли наша модель. Мы поговорим о метриках качества: Accuracy, Precision, Recall и ROC-AUC.

    4. Основы нейронных сетей и введение в глубокое обучение

    Основы нейронных сетей и введение в глубокое обучение

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

    Здесь на сцену выходят нейронные сети и глубокое обучение (Deep Learning). Именно эти технологии стоят за недавним взрывом популярности искусственного интеллекта, включая ChatGPT и Midjourney.

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

    От биологии к математике

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

    Биологический нейрон работает по следующему принципу:

  • Он получает электрические сигналы от других нейронов через отростки, называемые дендритами.
  • Если суммарный сигнал превышает определенный порог, нейрон «активируется».
  • Он передает импульс дальше по длинному отростку — аксону — к другим нейронам через контакты, называемые синапсами.
  • !Сравнение биологического прототипа и его математической модели.

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

    Анатомия искусственного нейрона

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

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

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

    Математически это выглядит так:

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

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

    2. Функция активации

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

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

    Самая популярная функция сегодня — ReLU (Rectified Linear Unit). Она работает очень просто: если число отрицательное, она превращает его в ноль. Если положительное — оставляет как есть.

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

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

    Архитектура нейронной сети

    Один нейрон может решать только примитивные задачи. Сила нейросетей — в коллективе. Мы объединяем нейроны в слои.

    Типичная полносвязная сеть (Multilayer Perceptron, MLP) состоит из трех типов слоев:

  • Входной слой (Input Layer): Принимает сырые данные (например, 784 нейрона для картинки 28x28 пикселей). Здесь вычисления не производятся.
  • Скрытые слои (Hidden Layers): Находятся между входом и выходом. Именно здесь происходит вся магия выделения признаков. Если скрытых слоев много (обычно больше двух), такое обучение называют глубоким (Deep Learning).
  • Выходной слой (Output Layer): Выдает финальный результат. Например, вероятности классов.
  • !Структура многослойного перцептрона: от входа к выходу через скрытые слои.

    Почему «Глубокое» обучение?

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

    Эта иерархия признаков делает Deep Learning невероятно эффективным для работы с изображениями, звуком и текстом.

    Как учится нейросеть: Магия обратного распространения

    Самый частый вопрос: «Откуда нейросеть знает, какие веса нужно выставить?». Ответ: она их подбирает методом проб и ошибок. Этот процесс называется обучением.

    Процесс обучения состоит из цикла, который повторяется тысячи раз (эпох):

    1. Прямое распространение (Forward Propagation)

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

    2. Вычисление ошибки (Loss Function)

    Мы сравниваем предсказание сети с правильным ответом . Функция потерь (Loss Function) показывает, насколько сильно ошиблась сеть. Чем больше ошибка, тем хуже настроены веса.

    3. Обратное распространение ошибки (Backpropagation)

    Это ключевой алгоритм, который сделал революцию в 80-х годах. Мы идем от выхода к входу и вычисляем, какой вклад внес каждый конкретный вес в общую ошибку.

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

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

    Где: * — новое, обновленное значение веса. * — текущее значение веса. * (альфа) — скорость обучения (learning rate). Это шаг, с которым мы двигаемся. Если шаг слишком большой, мы можем «проскочить» идеальное значение. Если слишком маленький — будем учиться вечно. * — градиент (частная производная). Это величина, показывающая, как сильно изменится ошибка , если мы немного изменим вес . Она указывает направление роста ошибки, поэтому мы вычитаем её (движемся в сторону уменьшения).

    !Визуализация метода градиентного спуска: поиск минимума функции потерь.

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

  • Прямой проход: Выстрел.
  • Ошибка: Вы видите, что стрела ушла на 1 метр левее и на 0.5 метра выше.
  • Обратное распространение: Вы понимаете: «Ага, нужно сдвинуть руку правее и чуть ниже». Вы корректируете свои мышцы (веса).
  • Повторяете, пока не попадете в «яблочко».
  • Когда использовать Deep Learning?

    Нейросети — не панацея. У них есть свои недостатки по сравнению с классическим ML.

    | Характеристика | Классическое ML (Random Forest, Linear Regression) | Глубокое обучение (Neural Networks) | | :--- | :--- | :--- | | Данные | Хорошо работает на малых и средних данных | Требует огромных объемов данных | | Железо | Работает на обычном CPU (процессоре) | Требует мощных GPU (видеокарт) | | Время обучения | Секунды или минуты | Часы, дни или недели | | Интерпретируемость | Понятно, почему принято решение (особенно в деревьях) | «Черный ящик» — сложно понять логику внутри | | Тип данных | Таблицы (Excel, SQL) | Картинки, текст, звук, видео |

    Если у вас есть таблица с продажами за год из 1000 строк, нейросеть будет избыточна и, скорее всего, переобучится. Но если вам нужно создать систему распознавания речи — без Deep Learning не обойтись.

    Резюме

  • Нейрон — это математическая функция, которая взвешивает входы, суммирует их и пропускает через функцию активации.
  • Функция активации (например, ReLU) добавляет нелинейность, позволяя сети учить сложные закономерности.
  • Глубокое обучение — это использование многослойных нейронных сетей, где каждый слой учит все более абстрактные признаки.
  • Обучение происходит через алгоритм обратного распространения ошибки (Backpropagation): сеть сравнивает свой ответ с правильным и корректирует веса, чтобы уменьшить ошибку.
  • Теперь вы понимаете, что происходит «под капотом» современного ИИ. В следующей статье мы перейдем к практике и разберем, как оценивать качество наших моделей, чтобы не обмануть самих себя красивыми цифрами.

    5. Оценка качества моделей, метрики эффективности и борьба с переобучением

    Оценка качества моделей, метрики эффективности и борьба с переобучением

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

    Представьте, что вы обучили нейросеть предсказывать курс доллара. Она выдала прогноз «75 рублей». Как понять, можно ли доверять этому числу? А если она ошиблась, то насколько критично?

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

    1. Как проверять модель: Разделяй и властвуй

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

    Это равносильно тому, чтобы дать студенту перед экзаменом ответы на билеты, а потом на экзамене спросить именно эти билеты. Студент получит «отлично», но знает ли он предмет? Скорее всего, нет. Он просто запомнил ответы.

    В машинном обучении мы всегда делим данные на части:

  • Обучающая выборка (Train set): Обычно 70-80% данных. На них модель учится, подбирает веса и ищет закономерности.
  • Тестовая выборка (Test set): Оставшиеся 20-30%. Эти данные мы прячем от модели во время обучения. Мы показываем их только в самом конце, чтобы устроить «честный экзамен».
  • Иногда выделяют еще и третью часть — Валидационную выборку (Validation set), которую используют для настройки параметров модели в процессе обучения, чтобы не «подглядывать» в тестовую.

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

    2. Метрики для задач регрессии

    Напомню, задача регрессии — это предсказание числа (например, цены квартиры). Здесь мы не можем просто сказать «угадал» или «не угадал», потому что цена 10.5 млн и 10.6 млн — это почти одно и то же. Нам важно измерить расстояние ошибки.

    MSE (Mean Squared Error) — Среднеквадратичная ошибка

    Это одна из самых популярных метрик. Мы берем ошибку на каждом объекте, возводим её в квадрат и находим среднее.

    Где: * — значение среднеквадратичной ошибки. * — количество объектов в выборке. * — знак суммы (суммируем значения для всех объектов от 1 до ). * — реальное значение целевой переменной для -го объекта. * — предсказанное моделью значение для -го объекта.

    Зачем квадрат? Чтобы ошибки «в плюс» и «в минус» не гасили друг друга (ошибка +5 и -5 в сумме дали бы 0, но квадрат делает их положительными: 25 и 25). Кроме того, квадрат сильно «штрафует» за большие ошибки.

    MAE (Mean Absolute Error) — Средняя абсолютная ошибка

    Если мы не хотим слишком сильно штрафовать за редкие большие промахи, мы берем модуль разности.

    Где: * — значение средней абсолютной ошибки. * — количество объектов. * — модуль числа (абсолютное значение). * — реальное значение. * — предсказанное значение.

    Пример: Если MAE = 5000 при предсказании зарплаты, это значит, что в среднем модель ошибается на 5000 рублей.

    3. Метрики для задач классификации

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

    Ловушка Accuracy (Доля правильных ответов)

    Самая интуитивная метрика:

    Где: * — точность (доля правильных ответов). * (True Positive) — верно предсказанный положительный класс. * (True Negative) — верно предсказанный отрицательный класс. * (False Positive) — ложное срабатывание (ошибка 1-го рода). * (False Negative) — пропуск события (ошибка 2-го рода).

    Почему это опасно? Представьте, что мы ищем редкую болезнь, которой болеет 1 человек из 100. Если наша модель будет всегда говорить «Здоров», её Accuracy будет 99%! Цифра красивая, но модель абсолютно бесполезна, так как пропустила больного.

    Для таких случаев нам нужны Precision и Recall.

    Матрица ошибок (Confusion Matrix)

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

    | | Реально: 1 (Болен) | Реально: 0 (Здоров) | |---|---|---| | Предсказано: 1 | TP (Верно: Болен) | FP (Ложная тревога) | | Предсказано: 0 | FN (Пропуск болезни) | TN (Верно: Здоров) |

    Precision (Точность)

    Отвечает на вопрос: «Из всех, кого модель назвала больными, сколько на самом деле больны?»

    Где: * — точность определения класса. * — количество истинно положительных срабатываний. * — количество ложноположительных срабатываний.

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

    Recall (Полнота)

    Отвечает на вопрос: «Из всех реально больных, скольких модель смогла найти?»

    Где: * — полнота охвата целевого класса. * — количество истинно положительных срабатываний. * — количество ложноотрицательных пропусков.

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

    F1-Score

    Если нам важен баланс между Precision и Recall, мы используем их гармоническое среднее:

    Где: * — метрика, объединяющая точность и полноту. * — значение точности. * — значение полноты.

    4. Переобучение (Overfitting) и Недообучение (Underfitting)

    Это две главные проблемы при обучении моделей.

    Недообучение (Underfitting)

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

    Переобучение (Overfitting)

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

    !Иллюстрация понятий недообучения, оптимальной модели и переобучения на примере регрессии.

    Как обнаружить переобучение?

    Сравните метрики на Train и Test: * Если ошибка на Train низкая, а на Test — высокая Переобучение. * Если ошибка высокая и там, и там Недообучение.

    5. Борьба с переобучением

    Что делать, если модель переобучилась? Есть несколько проверенных методов.

  • Больше данных. Чем больше примеров видит модель, тем сложнее ей их просто запомнить, приходится искать общие правила.
  • Упрощение модели. Уменьшите глубину дерева решений или количество нейронов в сети.
  • Регуляризация (Regularization). Это метод добавления «штрафа» за сложность модели прямо в формулу ошибки. Мы говорим модели: «Ты можешь использовать большие веса, только если это действительно сильно уменьшает ошибку».
  • Кросс-валидация (Cross-Validation).
  • Кросс-валидация

    Вместо того чтобы один раз разбить данные на Train и Test, мы делаем это несколько раз. Например, делим данные на 5 частей (фолдов).

    * Шаг 1: Учим на частях 1-4, тестируем на 5. * Шаг 2: Учим на частях 1,2,3,5, тестируем на 4. * ... и так далее.

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

    Резюме

  • Никогда не проверяйте модель на тех же данных, на которых учили. Всегда используйте отложенную (тестовую) выборку.
  • Выбирайте метрику под задачу. Для предсказания цен — MSE или MAE. Для классификации — смотрите не только на Accuracy, но и на Precision/Recall, особенно если классы не сбалансированы.
  • Бойтесь переобучения. Если модель идеально работает на тренировке, но плохо на тесте — она просто «зазубрила» данные. Используйте регуляризацию и кросс-валидацию.
  • Теперь вы знаете, как не дать себя обмануть красивыми цифрами. В следующей части курса мы поговорим о том, как выводить наши модели в реальный мир (Deployment) и делать их полезными для бизнеса.