Машинное обучение

Материал из llmdocs — справочник разработчика
Портал: ML и MLOps
Машинное обучение
ТерминАртур Сэмюэл (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

Подробнее о первых двух — в статье Обучение с учителем и без.

Как устроен процесс

  1. Постановка задачи — что предсказываем и как измерим успех в терминах бизнеса.
  2. Сбор и разметка данных — чаще всего самая дорогая часть.
  3. Подготовка признаков — очистка, кодирование категорий, нормализация, новые признаки.
  4. Обучение — подбор параметров модели, минимизирующих функцию потерь, обычно градиентным спуском или его вариантами.
  5. Оценка — на отложенных данных, которые модель не видела, с помощью подходящих метрик и кросс-валидации.
  6. Внедрение и мониторинг — модель обслуживает запросы, а за качеством и сдвигом данных следят; этим занимается 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]

См. также

Источники

  1. A. L. Samuel — Some Studies in Machine Learning Using the Game of Checkers (IBM Journal, 1959)
  2. Tom M. Mitchell — Machine Learning (McGraw Hill, 1997)
  3. scikit-learn — User Guide
  4. Google — Machine Learning Crash Course
  5. Krizhevsky, Sutskever, Hinton — ImageNet Classification with Deep Convolutional Neural Networks (NeurIPS 2012)
  6. I. Goodfellow, Y. Bengio, A. Courville — Deep Learning (MIT Press, 2016)