Введение в машинное обучение

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

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

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

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

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

Что такое машинное обучение?

В традиционном программировании разработчик пишет четкие правила. Например: «Если сумма покупки больше 1000 рублей, сделай скидку 5%». Вы даете компьютеру данные и правила, а он выдает ответы.

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

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

Типы задач машинного обучения

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

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

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

Здесь выделяют два основных подтипа:

* Регрессия: Предсказание непрерывного числа. Пример*: Прогноз цены квартиры на основе её площади, района и этажа. Ответ может быть любым числом (5 млн, 12.5 млн и т.д.). * Классификация: Предсказание категории (класса). Пример*: Определение, является ли письмо спамом. Ответ ограничен конкретным набором вариантов: «Спам» или «Не спам».

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

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

* Кластеризация: Группировка похожих объектов. Пример*: Сегментация клиентов банка. Алгоритм сам выделит группу «студенты», «пенсионеры» или «бизнесмены» на основе их транзакций, даже если мы заранее не называли эти группы. * Понижение размерности: Упрощение данных с сохранением смысла. Пример*: Сжатие видео или визуализация сложных многомерных данных на 2D-графике.

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

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

!Иерархия основных типов задач в машинном обучении

Сбор данных: топливо для алгоритмов

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

  • Внутренние источники: Базы данных компании, логи серверов, история продаж.
  • Открытые датасеты: Kaggle, Google Dataset Search, государственные порталы открытых данных.
  • Веб-скрейпинг: Автоматический сбор информации с сайтов (важно соблюдать юридические нормы).
  • API: Получение данных через программные интерфейсы сервисов (например, погода, курсы валют, социальные сети).
  • Предварительная обработка данных (Preprocessing)

    В индустрии существует принцип Garbage In, Garbage Out («Мусор на входе — мусор на выходе»). Реальные данные всегда «грязные»: в них есть пропуски, ошибки, опечатки и выбросы. Работа Data Scientist'а на 70-80% состоит из чистки и подготовки данных.

    Разберем основные этапы предобработки.

    1. Очистка данных

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

    Что можно сделать: * Удалить строки с пропусками (если данных много, а пропусков мало). * Заполнить средним или медианой (для чисел). * Заполнить модой (самым частым значением) или специальной категорией «Неизвестно».

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

    Компьютеры понимают только числа. Они не знают, что такое «Красный», «Зеленый» или «Синий». Нам нужно перевести слова в цифры.

    Один из популярных методов — One-Hot Encoding (прямое кодирование). Мы создаем для каждого цвета отдельный столбец, где ставим 1, если цвет присутствует, и 0, если нет.

    Пример:

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

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

    Представьте, что у нас есть два признака: «Возраст» (от 0 до 100) и «Зарплата» (от 20 000 до 500 000). Для многих алгоритмов число 500 000 кажется гораздо более важным, чем 50, просто потому что оно больше. Это искажает обучение.

    Чтобы избежать этого, данные приводят к одному масштабу. Один из методов — нормализация (Min-Max Scaling). Она сжимает все значения в диапазон от 0 до 1.

    Формула нормализации выглядит так:

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

    > Пример: Если минимальная зарплата 20 000, максимальная 100 000, а у конкретного человека 60 000, то после нормализации его зарплата превратится в 0.5.

    4. Разделение выборки

    Финальный этап перед обучением — разделение данных на две части:

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

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

    Заключение

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

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

    2. Обучение с учителем: линейная регрессия, логистическая регрессия и деревья решений

    Обучение с учителем: линейная регрессия, логистическая регрессия и деревья решений

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

    Сегодня мы разберем три фундаментальных алгоритма обучения с учителем (Supervised Learning). Это «рабочие лошадки» машинного обучения. Несмотря на существование сложных нейросетей, именно эти алгоритмы решают до 60-70% задач в реальном бизнесе благодаря своей простоте, скорости и интерпретируемости.

    Линейная регрессия: искусство проводить линии

    Начнем с задачи регрессии — предсказания конкретного числа. Самый простой и понятный алгоритм для этого — линейная регрессия.

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

    Задача линейной регрессии — найти такую прямую линию, которая пройдет максимально близко ко всем этим точкам одновременно.

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

    Математика внутри

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

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

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

    Где: * — веса для каждого признака. * — значения признаков (площадь, этаж и т.д.).

    Как модель учится?

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

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

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

    Логистическая регрессия: когда нужно сказать «Да» или «Нет»

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

    Представьте, что нам нужно определить: уйдет клиент из банка или останется? Или: является ли опухоль злокачественной? Здесь ответом является не число (как цена), а класс (0 или 1, Да или Нет).

    Если мы попытаемся использовать обычную линейную регрессию, прямая линия уйдет в бесконечность. Она может выдать значение 5 или -10. Но вероятность события не может быть больше 100% или меньше 0%.

    Нам нужен инструмент, который «сплющит» любую прямую линию в диапазон от 0 до 1. Такой инструмент называется сигмоида.

    !S-образная кривая сигмоиды, преобразующая любые числа в диапазон от 0 до 1

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

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

    Где: * — вероятность того, что объект принадлежит к классу 1 (например, «спам»). * — число Эйлера (математическая константа, примерно равна 2.718). * — результат линейного уравнения ().

    Принятие решения

    Модель выдает нам вероятность. Например, для конкретного письма она говорит: «Вероятность спама 0.7 (70%)». Как принять окончательное решение?

    Мы устанавливаем порог (threshold). Обычно это 0.5. * Если предсказание > 0.5 Класс 1 (Спам). * Если предсказание 0.5 Класс 0 (Не спам).

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

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

    И линейная, и логистическая регрессии пытаются описать данные формулами. Но как мыслит человек? Часто мы задаем последовательные вопросы.

    На улице идет дождь?* * Да Есть ли у меня зонт? * Да Иду гулять. * Нет Остаюсь дома. * Нет Иду гулять.

    Именно так работает алгоритм Дерево решений. Он не использует сложные формулы с весами, а разбивает данные на группы, задавая вопросы.

    !Структура дерева решений: от корневого вопроса к листьям с ответами

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

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

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

    Например, если мы хотим отличить кошек от собак, вопрос «Вес больше 50 кг?» отлично отделит крупных собак от всех остальных. А вопрос «Есть ли уши?» будет бесполезен, так как уши есть у всех.

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

    Проблема переобучения

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

    Представьте дерево, которое выучило правило: «Если клиенту 34 года, он живет в Туле и его зовут Иван, то он вернет кредит». Это правило сработает на исторических данных, но оно бесполезно для новых клиентов. Это классический пример переобучения (overfitting).

    Чтобы бороться с этим, используют: * Ограничение глубины: Дерево не может задавать больше, например, 5 вопросов подряд. * Минимальное число объектов в листе: Нельзя создавать правило ради одного человека.

    Сравнение алгоритмов

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

    | Алгоритм | Тип задачи | Плюсы | Минусы | | :--- | :--- | :--- | :--- | | Линейная регрессия | Регрессия (числа) | Простая, быстрая, легко интерпретировать веса. | Работает только с линейными зависимостями. Чувствительна к выбросам. | | Логистическая регрессия | Классификация (категории) | Выдает вероятность события, надежная, хорошо изучена. | Плохо работает, если данные нельзя разделить прямой линией. | | Дерево решений | Регрессия и Классификация | Понимает нелинейные связи, наглядна (можно нарисовать), не требует масштабирования данных. | Склонна к переобучению, неустойчива (малое изменение данных меняет все дерево). |

    Заключение

    Мы рассмотрели три кита классического машинного обучения.

  • Линейная регрессия помогает предсказывать величины, проводя прямую линию сквозь данные.
  • Логистическая регрессия помогает классифицировать объекты, вычисляя вероятность принадлежности к классу.
  • Деревья решений имитируют человеческую логику, задавая последовательные вопросы.
  • В реальной практике одного дерева часто бывает недостаточно. Data Scientist'ы объединяют сотни деревьев в единый «лес», чтобы получить мощнейшие алгоритмы, такие как Случайный лес (Random Forest) или Градиентный бустинг. Но об этом — в будущих статьях.

    В следующем уроке мы поговорим о том, как понять, хороша ли наша модель. Мы разберем метрики качества: Accuracy, Precision, Recall и почему просто «процента правильных ответов» бывает недостаточно.

    3. Обучение без учителя: алгоритмы кластеризации и методы снижения размерности

    Обучение без учителя: алгоритмы кластеризации и методы снижения размерности

    В предыдущих статьях мы рассматривали обучение с учителем (Supervised Learning). Это ситуации, когда у нас есть «правильные ответы»: мы знаем, какая квартира сколько стоит, или какое письмо является спамом. Мы учили модель подражать этим ответам.

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

    Именно этим занимается обучение без учителя (Unsupervised Learning). В этом случае данные не имеют меток (labels). Задача алгоритма — найти скрытую структуру в этом хаосе.

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

    Кластеризация: искусство раскладывать по полочкам

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

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

    Рассмотрим самые популярные алгоритмы.

    K-Means (Метод k-средних)

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

    !Пошаговая иллюстрация итеративного процесса обучения K-Means

    Как это работает:

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

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

    Плюсы и минусы K-Means: * Плюсы: Прост в реализации, быстро работает на больших данных. * Минусы: Нужно заранее знать число кластеров . Плохо работает с кластерами сложной формы (например, если один кластер находится внутри другого, как желток в яйце).

    Иерархическая кластеризация

    Этот метод не требует заранее задавать количество кластеров. Он строит дерево вложенности (дендрограмму).

    Существует два подхода:

  • Агломеративный (снизу-вверх): Сначала каждая точка — это отдельный кластер. Затем мы объединяем две самые близкие точки в один кластер. Потом объединяем этот кластер с другой точкой или кластером, и так далее, пока все точки не сольются в один гигантский кластер.
  • Дивизивный (сверху-вниз): Наоборот, начинаем с одного кластера и делим его на части.
  • Результат можно представить в виде красивого дерева, где мы сами решаем, на каком уровне «отрезать» ветки, чтобы получить нужное число групп.

    DBSCAN: поиск плотных областей

    Если K-Means ищет сферы, то DBSCAN (Density-Based Spatial Clustering of Applications with Noise) ищет области высокой плотности точек, разделенные пустыми пространствами.

    Его главная фишка — он умеет находить выбросы (шум). Точки, которые находятся далеко от всех плотных групп, он помечает как «шум» и не включает ни в один кластер.

    !Демонстрация преимущества DBSCAN при работе с данными сложной геометрической формы

    Снижение размерности: проклятие размерности

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

    В машинном обучении существует проблема, называемая проклятием размерности (Curse of Dimensionality). Чем больше признаков, тем сложнее модели найти закономерности, так как данные становятся «разреженными» в огромном пространстве. Кроме того, мы не можем визуализировать 500 измерений — человеческий глаз воспринимает максимум 3.

    Методы снижения размерности позволяют сжать эти 500 признаков до 2-3 самых важных, сохранив при этом основной смысл данных.

    Метод главных компонент (PCA)

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

    Представьте, что вы держите в руках 3D-модель чайника и хотите сфотографировать её так, чтобы по плоской фотографии (2D) было максимально понятно, что это чайник. Если сфотографировать сверху, будет просто круг (плохо). Если сбоку — будет виден носик и ручка (хорошо).

    PCA делает именно это: он находит новые оси (главные компоненты), вдоль которых разброс (дисперсия) данных максимален.

    Математически мы ищем направление с максимальной дисперсией. Формула выборочной дисперсии:

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

    Алгоритм PCA:

  • Центрируем данные (вычитаем среднее).
  • Строим матрицу ковариации (как признаки зависят друг от друга).
  • Находим собственные векторы этой матрицы. Это и есть наши «главные компоненты».
  • Оставляем только те компоненты, которые объясняют больше всего вариативности в данных.
  • !Визуализация работы PCA: переход от трехмерного пространства к двумерному

    t-SNE и UMAP

    PCA — это линейный метод. Он хорошо работает, если данные простые. Но для сложной визуализации (например, картинок или текста) используют более современные алгоритмы: t-SNE и UMAP.

    Они работают по принципу сохранения соседей: если две точки были рядом в 100-мерном пространстве, они должны остаться рядом и на 2D-картинке. Эти методы часто используют для создания красивых карт данных, где похожие объекты собираются в визуальные островки.

    Зачем это нужно на практике?

  • Сжатие данных: Уменьшение размера файлов и ускорение обучения моделей (меньше признаков — быстрее расчеты).
  • Визуализация: Понимание структуры данных перед началом серьезной работы.
  • Рекомендательные системы: Группировка пользователей с похожими вкусами (кластеризация) или сжатие матрицы предпочтений (снижение размерности).
  • Предобработка: Удаление коррелирующих (дублирующих смысл) признаков с помощью PCA.
  • Заключение

    Обучение без учителя — это способ найти порядок в хаосе. Мы узнали, что: * K-Means быстро разбивает данные на группы, но требует знать число кластеров. * DBSCAN отлично справляется с шумом и сложными формами. * PCA помогает избавиться от лишних признаков и визуализировать сложные данные, сохраняя их суть.

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

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

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

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

    Сегодня мы открываем дверь в мир Глубокого обучения (Deep Learning). Мы разберем, как работают искусственные нейронные сети — алгоритмы, вдохновленные устройством человеческого мозга.

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

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

    Ученые подумали: «А что, если мы смоделируем этот процесс математически?» Так появился искусственный нейрон, или перцептрон.

    !Сравнение биологического нейрона и его математической модели

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

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

    Работа нейрона состоит из трех шагов:

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

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

    Затем применяется функция активации:

    Где: * — итоговый выход нейрона. * — функция активации. * — взвешенная сумма из предыдущей формулы.

    Зачем нужна функция активации?

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

    Функция активации добавляет нелинейность. Она позволяет сети учить сложные кривые и формы. Рассмотрим самые популярные функции.

    1. Сигмоида (Sigmoid)

    Эта функция превращает любое число в диапазон от 0 до 1. Она исторически была первой, так как похожа на вероятность.

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

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

    2. ReLU (Rectified Linear Unit)

    Звучит страшно, но это самая простая и популярная функция в современном Deep Learning. Её логика: «Если число отрицательное — верни 0, если положительное — оставь как есть».

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

    ReLU работает очень быстро и позволяет обучать глубокие сети эффективно.

    !Графики функций активации Сигмоида и ReLU

    Многослойный перцептрон: сила в единстве

    Один нейрон слаб. Но если объединить их в слои, начинается магия. Такая структура называется Многослойный перцептрон (Multilayer Perceptron, MLP).

    Архитектура обычно выглядит так:

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

    Как учится нейросеть? (Backpropagation)

    Самый частый вопрос новичков: «Кто задает веса ? Откуда сеть знает, на что умножать?»

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

    Этот процесс состоит из цикла, который повторяется тысячи раз:

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

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

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

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

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

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

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

    Формула обновления веса (упрощенно):

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

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

    Deep Learning vs Классическое ML

    Почему все говорят о нейросетях, если есть простые алгоритмы вроде деревьев решений?

    Главное отличие — работа с признаками (Feature Extraction).

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

    Вам нужно просто закинуть в неё «сырые» пиксели. Это позволяет работать с неструктурированными данными: картинками, звуком, текстом.

    Проблемы нейросетей

    Несмотря на мощь, у нейросетей есть недостатки:

  • Нужно много данных: Нейросеть с миллионами весов не обучится на 100 примерах. Ей нужны тысячи и миллионы.
  • «Черный ящик»: Мы часто не понимаем, почему сеть приняла именно такое решение. Интерпретировать миллионы весов человеку невозможно.
  • Ресурсоемкость: Для обучения требуются мощные видеокарты (GPU) и много времени.
  • Заключение

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

    Мы разобрали: * Перцептрон — базовый кирпичик сети. * Функции активации (ReLU, Sigmoid) — то, что делает сеть умной. * Backpropagation — метод, с помощью которого сеть учится на своих ошибках.

    В следующих статьях мы рассмотрим специализированные архитектуры: Сверточные сети (CNN) для зрения и Рекуррентные сети (RNN) для текста. Готовьтесь, будет еще интереснее!

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

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

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

    Представьте, что вы написали программу, которая предсказывает наличие болезни по снимку МРТ. Ваша модель сообщает, что ее точность — 99%. Звучит потрясающе, верно? Вы внедряете ее в больнице, и... пропускаете каждого второго больного пациента. Почему так произошло? Потому что вы неправильно оценили качество.

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

    Метрики качества: почему «процента правильных ответов» недостаточно

    Самая интуитивная метрика — это Accuracy (доля правильных ответов). Если из 100 фотографий модель правильно угадала 90, то Accuracy = 0.9 (или 90%).

    Но давайте вернемся к примеру с болезнью. Допустим, болезнь редкая, и она есть только у 1 человека из 100. Если наша модель вообще ничего не будет делать и просто всем подряд скажет «Здоров», она будет права в 99 случаях из 100. Ее Accuracy будет 99%. Но такая модель абсолютно бесполезна, ведь она пропустила единственного больного.

    Чтобы видеть полную картину, нам нужна Матрица ошибок (Confusion Matrix).

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

    Разберем четыре исхода на примере поиска спама:

  • True Positive (TP): Письмо было спамом, и мы сказали «Спам». (Успех)
  • True Negative (TN): Письмо было важным, и мы сказали «Не спам». (Успех)
  • False Positive (FP): Письмо было важным, но мы кинули его в спам. (Ложная тревога, ошибка I рода)
  • False Negative (FN): Письмо было спамом, но мы пропустили его во входящие. (Пропуск цели, ошибка II рода)
  • На основе этих данных строятся более точные метрики.

    Precision (Точность)

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

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

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

    Recall (Полнота)

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

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

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

    F1-Score

    Часто нам нужен баланс между Precision и Recall. Для этого используют их гармоническое среднее — F1-меру.

    Где: * — точность модели. * — полнота модели.

    Если одна из метрик (Precision или Recall) близка к нулю, то и F1 будет близок к нулю. Это отличная метрика для оценки моделей на несбалансированных данных.

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

    Главный враг любого Data Scientist'а — переобучение.

    Представьте студента, который готовится к экзамену по математике. * Студент А выучил наизусть все ответы из прошлогодних билетов, но не понял формул. На экзамене ему дали новые цифры, и он провалился. Это переобучение. * Студент Б вообще не открывал учебник и пытается угадать. Он тоже провалился. Это недообучение. * Студент В понял принципы решения задач. Он решит и старые, и новые задачи. Это хорошая модель.

    !Сравнение недообученной, оптимальной и переобученной моделей на графике.

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

    Именно для этого мы делили данные на Train (обучающую) и Test (тестовую) выборки в первой статье.

    * Если ошибка на Train низкая, а на Test высокая — модель переобучилась (зазубрила примеры). * Если ошибка высокая и там, и там — модель недообучилась (слишком слабая). * Если ошибки примерно равны и низкие — модель хороша.

    Кросс-валидация (Cross-Validation)

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

    Самый популярный метод — K-Fold Cross-Validation:

  • Мы делим все данные на равных частей (фолдов), например, на 5.
  • Сначала учим модель на частях 1-4, а проверяем на 5-й.
  • Потом учим на частях 1, 2, 3, 5, а проверяем на 4-й.
  • Повторяем процесс 5 раз, чтобы каждая часть побывала в роли экзаменатора.
  • Усредняем результат.
  • Это дает наиболее объективную оценку качества модели.

    !Иллюстрация процесса разделения данных и ротации тестовой выборки при кросс-валидации.

    Внедрение решений (Deployment)

    Модель, которая живет только в ноутбуке разработчика, не приносит пользы бизнесу. Финальный этап — деплой (deployment).

    1. Сериализация модели

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

    2. Создание API

    Чтобы сайт или мобильное приложение могли общаться с моделью, мы оборачиваем ее в веб-сервис (API).

    Работает это так:

  • Пользователь загружает фото в приложение.
  • Приложение отправляет фото на сервер.
  • Сервер запускает сохраненную модель, она обрабатывает фото.
  • Сервер возвращает ответ приложению.
  • 3. Мониторинг и Data Drift

    После запуска работа не заканчивается. Мир меняется.

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

    Это явление называется Data Drift (дрейф данных). Поэтому в продакшене необходимо постоянно следить за метриками качества и периодически дообучать модель на свежих данных.

    Заключение курса

    Поздравляю! Вы прошли курс «Введение в машинное обучение».

    Мы разобрали:

  • Как собирать и чистить данные.
  • Как предсказывать числа (регрессия) и категории (классификация).
  • Как находить структуру в хаосе (кластеризация).
  • Как работают нейросети.
  • И, наконец, как проверять качество и внедрять модели.
  • Машинное обучение — это не магия. Это математика, статистика и программирование, объединенные для решения реальных задач. Теперь у вас есть фундамент, чтобы углубляться в конкретные области: компьютерное зрение (CV), обработку естественного языка (NLP) или обучение с подкреплением.

    Удачи в обучении ваших первых моделей!