Глиф Учебники

Что такое обучение с учителем

Справочник · Искусственный интеллект · 1 минута чтения

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

Примеры: письмо → «спам» или «не спам»; фото → «кошка» или «собака»; описание квартиры → цена.

Два вида задач

Пример: модель учится находить порог

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

Python
# (восклицательных знаков, метка): 1 — спам, 0 — не спам
examples = [(0, 0), (1, 0), (2, 0), (2, 1), (3, 0), (5, 1), (6, 1), (8, 1)]

best_threshold, best_correct = None, -1
for threshold in range(10):
    correct = sum(1 for marks, label in examples if (marks >= threshold) == (label == 1))
    if correct > best_correct:
        best_threshold, best_correct = threshold, correct

print("Порог:", best_threshold)
print("Верно на примерах:", best_correct, "из", len(examples))
print("Письмо с 7 знаками:", "спам" if 7 >= best_threshold else "не спам")
Вывод
Порог: 4
Верно на примерах: 7 из 8
Письмо с 7 знаками: спам

Правило «спам, если знаков 4 и больше» модель нашла сама — по меткам. Один пример, (2, 1), оно не объясняет: настоящие данные всегда немного «шумят». Модели посложнее работают так же, только подбирают не один порог, а тысячи или миллиарды весов.

Чем отличаются другие виды обучения

ВидЧто есть в данныхПример задачи
С учителемПримеры и правильные ответыРаспознать спам, оценить цену
Без учителяТолько примеры, без ответовРазбить покупателей на группы (кластеризация)
С подкреплениемДействия и награда за результатНаучиться играть в игру, управлять роботом

Подводные камни

Полный пример классификации с проверочной выборкой и библиотекой scikit-learn — в уроке Машинное обучение на Python.