# 1. Основные понятия, концепции и принципы ML

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

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

## Базовые сущности в ML-системах

С архитектурной точки зрения полезно оперировать следующими сущностями.

- **Датасет**: структурированный набор примеров, на которых обучается и проверяется модель. Источниками могут быть логи продакшн-систем, сторонние датасеты, ручная разметка. Качество и репрезентативность датасета критичны для итогового поведения системы.
- **Признаки (features)**: представление исходных данных в форме, пригодной для обучения модели. Это может быть вектор числовых значений, токенизированный текст, признаки, полученные из логов или телеметрии. Архитектурно признаки формируются в отдельных пайплайнах подготовки данных.
- **Модель**: параметризованная функция, которая аппроксимирует некоторую зависимость между признаками и целевой переменной. Модель существует в нескольких формах — как артефакт обучения (файл весов, конфигурация), как сервис инференса в рантайме и как версия в системе управления жизненным циклом.
- **Инференс**: процесс применения обученной модели к новым данным. На архитектурном уровне это, как правило, отдельный путь выполнения запроса (online-инференс) или пакетная обработка (batch scoring).
- **Метрики качества**: численные показатели, по которым оценивается полезность модели (точность, полнота, ROC AUC, бизнес-метрики). Важны как для выбора версии модели, так и для мониторинга в продакшене.

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

Для обсуждения архитектуры достаточно различать несколько базовых типов задач.

- **Обучение с учителем**: есть входные данные и целевая метка (класс, число, ранжирование). Модель учится предсказывать эту метку. Примеры: классификация писем как спам/не спам, прогнозирование вероятности оттока клиента. Архитектурно это предполагает наличие контура разметки и хранения «правильных ответов».
- **Обучение без учителя**: целевых меток нет, модель ищет структуру в данных (кластеризация, понижение размерности). Это полезно для предварительного анализа, сегментации пользователей, построения признаков. На уровне системы такие модели часто работают в офлайн-пайплайнах.
- **Обучение с подкреплением**: агент взаимодействует со средой и обучается по сигналу вознаграждения. В прикладной архитектуре сложных бизнес-приложений встречается реже, но концептуально важно понимать, что качество зависит от дизайна среды и механизма обратной связи.

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

## Жизненный цикл ML-модели

Жизненный цикл ML-модели существенно отличается от жизненного цикла обычного сервиса и включает как минимум следующие этапы.

1. **Сбор и подготовка данных**. Данные поступают из продакшн-систем, сторонних источников, ручной разметки. На этом этапе важно обеспечить согласованные схемы, контроль качества, анонимизацию, управление доступом.
2. **Формирование признаков**. Исходные данные преобразуются в форму, пригодную для обучения: агрегация, нормализация, кодирование категориальных признаков, извлечение временных и поведенческих паттернов.
3. **Обучение и валидация**. На подготовленных признаках обучаются разные конфигурации моделей, выбираются гиперпараметры. Ключевое требование к архитектуре — воспроизводимость экспериментов: одни и те же входные данные и конфигурация должны давать идентичный результат.
4. **Выбор и фиксация версии**. Выбранная модель, используемые датасеты и конфигурации формируют версию, которая далее будет развёрнута. Эта версия должна быть однозначно идентифицируема и трассируема.
5. **Деплоймент и интеграция**. Модель разворачивается как часть продакшн-архитектуры: в виде отдельного сервиса инференса, библиотеки внутри существующего сервиса или компонента, встроенного в поток обработки данных.
6. **Мониторинг и эксплуатация**. Помимо классических метрик инфраструктуры (задержки, ошибки, использование ресурсов) требуется мониторинг качества предсказаний и свойств входящих данных.
7. **Переобучение и эволюция**. По мере накопления новых данных и изменений в предметной области модели требуют переобучения. Этот цикл должен быть автоматизирован и интегрирован в процессы разработки.

## Архитектурные принципы ML-систем

Из описанного жизненного цикла следуют характерные принципы проектирования:

- **Разделение ответственности**. Пайплайны подготовки данных, инфраструктура обучения, контур инференса и мониторинг качества должны рассматриваться как отдельные подсистемы с явными интерфейсами. Это снижает связанность и упрощает смену технологий.
- **Воспроизводимость и трассируемость**. Архитектура должна позволять восстановить, из какого набора данных и с какой конфигурацией была получена любая продакшн-модель, какие эксперименты к этому привели и как менялось качество во времени.
- **Управление версиями данных и моделей**. Версионирование кода недостаточно: требуется управлять версиями датасетов, признаков, конфигураций и моделей, а также обеспечивать совместимость разных версий между собой.
- **Наблюдаемость качества**. Система мониторинга должна учитывать статистику входящих данных, распределения признаков, ключевые продуктовые и модельные метрики. Это позволяет своевременно обнаруживать деградацию.
- **Интеграция с бизнес-процессами**. ML-компоненты должны быть встроены в цепочку бизнес-ценности: иметь понятные точки принятия решений, возможность объяснения поведения и механизм обратной связи от пользователей и доменных экспертов.

Соблюдение этих принципов обеспечивает управляемость и предсказуемость ML-систем, что критично для их эксплуатации в ответственных сценариях.
