Машинное обучение
| Термин | Артур Сэмюэл (1959) |
|---|---|
| Основные виды | обучение с учителем, без учителя, с подкреплением |
| Задачи | классификация, регрессия, кластеризация, ранжирование, генерация |
| Популярные методы | линейные модели, деревья и бустинг, нейронные сети |
| Библиотеки | scikit-learn, XGBoost, CatBoost, PyTorch, JAX |
| Смежные области | статистика, оптимизация, анализ данных |
Машинное обучение (англ. machine learning, ML) — раздел искусственного интеллекта, изучающий алгоритмы, которые улучшают решение задачи на основе опыта, то есть данных, а не следуют вручную написанным правилам. Вместо того чтобы программировать, как отличить спам от обычного письма, разработчик показывает модели тысячи размеченных писем, и она сама находит закономерности.
Машинное обучение лежит в основе поиска и рекомендаций, распознавания речи и изображений, кредитного скоринга, машинного перевода и больших языковых моделей.
Определение и история
Термин ввёл Артур Сэмюэл из IBM: в 1959 году он описал программу для игры в шашки, которая улучшала игру, анализируя свои партии.[1] Классическое определение дал Том Митчелл (1997): программа обучается на опыте E относительно задачи T и меры качества P, если её качество на задаче T, измеренное P, растёт с опытом E.[2]
Развитие шло волнами. Перцептрон Розенблатта (1958) вызвал первую волну интереса к нейросетям; в 1990–2000-х доминировали статистические методы — метод опорных векторов, случайный лес, градиентный бустинг. В 2012 году свёрточная сеть AlexNet с большим отрывом выиграла конкурс ImageNet, начав эпоху глубокого обучения.[5] С 2017 года архитектура трансформер привела к современным языковым моделям.
Виды обучения
| Вид | Данные | Задачи | Примеры |
|---|---|---|---|
| С учителем (supervised) | примеры с правильными ответами | классификация, регрессия | спам-фильтр, прогноз цены |
| Без учителя (unsupervised) | данные без ответов | кластеризация, снижение размерности, поиск аномалий | сегментация клиентов |
| Самообучение (self-supervised) | ответы извлекаются из самих данных | предсказание следующего слова, восстановление фрагментов | предобучение LLM, эмбеддинги |
| С подкреплением (reinforcement) | награды за действия в среде | управление, игры, выравнивание моделей | AlphaGo, RLHF |
Подробнее о первых двух — в статье Обучение с учителем и без.
Как устроен процесс
- Постановка задачи — что предсказываем и как измерим успех в терминах бизнеса.
- Сбор и разметка данных — чаще всего самая дорогая часть.
- Подготовка признаков — очистка, кодирование категорий, нормализация, новые признаки.
- Обучение — подбор параметров модели, минимизирующих функцию потерь, обычно градиентным спуском или его вариантами.
- Оценка — на отложенных данных, которые модель не видела, с помощью подходящих метрик и кросс-валидации.
- Внедрение и мониторинг — модель обслуживает запросы, а за качеством и сдвигом данных следят; этим занимается MLOps.
Пример
Обучение классификатора в scikit-learn:[3]
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.metrics import classification_report
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
model = HistGradientBoostingClassifier(max_iter=200, learning_rate=0.1)
model.fit(X_train, y_train) # обучение на 80% данных
print(classification_report(y_test, model.predict(X_test))) # оценка на отложенных 20%
Ключевые понятия
- Признаки и целевая переменная — входные данные модели и то, что она предсказывает.
- Функция потерь — число, показывающее, насколько ошибается модель; обучение — её минимизация.
- Обобщение — способность работать на новых данных. Модель, запомнившая обучающую выборку, переобучена; слишком простая — недообучена (см. Переобучение и регуляризация).
- Гиперпараметры — настройки, которые не обучаются, а задаются: глубина деревьев, скорость обучения, число слоёв.
- Утечка данных — когда в признаки случайно попадает информация о правильном ответе, недоступная в реальной работе; даёт прекрасные метрики на тесте и провал в продакшене.
Классическое ML и глубокое обучение
Для табличных данных (строки и столбцы, как в базе) чаще всего лучше работают градиентный бустинг и линейные модели: они быстрее обучаются, проще интерпретируются и требуют меньше данных. Глубокие нейросети незаменимы для неструктурированных данных — текста, изображений, звука — и для больших объёмов, где они обучаются на GPU с помощью фреймворков вроде PyTorch.[6] Практичный путь в изучение — бесплатные курсы, например Machine Learning Crash Course от Google.[4]
См. также
Источники
- A. L. Samuel — Some Studies in Machine Learning Using the Game of Checkers (IBM Journal, 1959)
- Tom M. Mitchell — Machine Learning (McGraw Hill, 1997)
- scikit-learn — User Guide
- Google — Machine Learning Crash Course
- Krizhevsky, Sutskever, Hinton — ImageNet Classification with Deep Convolutional Neural Networks (NeurIPS 2012)
- I. Goodfellow, Y. Bengio, A. Courville — Deep Learning (MIT Press, 2016)