F0. Что такое машинное обучение: объясняем с нуля
Самый первый урок без технического жаргона: чем модель отличается от обычной программы, что происходит внутри обучения, почему ответ модели это вероятность и чего машинное обучение принципиально не умеет.
- ✓Объяснять своими словами, что такое модель и чем она отличается от программы
- ✓Понимать, что происходит во время обучения и зачем нужна тестовая выборка
- ✓Различать классификацию, регрессию, кластеризацию и генерацию
- ✓Знать ограничения ML: вероятностный ответ, дрейф, перекосы данных
Что такое машинное обучение, если объяснить в двух предложениях
Обычную программу человек описывает по шагам: если пришло вот такое условие, сделай вот такое действие. Машинное обучение переворачивает этот порядок. Мы не описываем решение, мы показываем примеры того, как задача уже решалась раньше, и просим систему саму найти закономерность, по которой эти решения принимались
Найденную закономерность потом применяют к новым случаям, которых система никогда не видела. Именно её и называют моделью: не программу с прописанной логикой, а закономерность, вытащенную из данных и пригодную для повторного применения
Пример, на котором всё становится понятно
Представьте, что нужно отделять письма со спамом от обычной почты. Первый путь привычный: посадить человека, который выпишет правила. Есть слово «выигрыш» в теме, отправитель незнакомый, ссылок подозрительно много, значит спам. Такие правила работают до первого письма, которое их обходит, и список приходится дописывать бесконечно, потому что спамеры подстраиваются быстрее, чем выходят релизы
Второй путь и есть машинное обучение. Мы берём сто тысяч писем, про каждое уже известно, спам это или нет, и отдаём их алгоритму. Правил мы не формулируем вообще. Алгоритм сам замечает, какие сочетания слов, какие отправители, какая длина текста и какая доля ссылок чаще встречаются у спама, а какие у нормальной переписки. На выходе получается модель, которая для нового, ещё не виденного письма выдаёт оценку: насколько оно похоже на спам
Разница здесь принципиальная, и её стоит проговорить вслух. В первом случае знание живёт в голове человека и переносится в код руками. Во втором знание извлекается из накопленных примеров, и чем больше этих примеров, тем точнее оно становится без всякого участия программиста
Из чего собрана любая задача машинного обучения
За словом «модель» скрывается довольно короткий список составных частей. Разобравшись с ними один раз, вы перестанете терять нить в разговоре с командой
Датасет (dataset, набор данных) это таблица примеров, где одна строка описывает один случай. Для спама строкой будет письмо, для банка заявка на кредит, для маркетплейса просмотр товара
Признаки (features, в речи команды «фичи») это те характеристики случая, по которым система рассуждает. У письма это длина, язык, история отправителя, доля ссылок. У заявки на кредит это доход, стаж, платёжная дисциплина в прошлом. Признаки не берутся сами: их придумывают и считают люди, и качество этой работы влияет на результат сильнее, чем выбор алгоритма
Целевая переменная (target, она же метка, label) это тот самый известный ответ, ради предсказания которого всё затевается. Спам или не спам, вернёт кредит или не вернёт, купит или уйдёт
Разметка (labeling) это процесс проставления таких ответов. Часто её делают руками, и часто именно она оказывается самой дорогой и медленной частью проекта. Ста тысячам писем кто-то должен был сказать, спам это или нет
Обучение (training) это подбор внутренних настроек модели по данным. Именно на этом шаге закономерность и находится
Инференс (inference, применение) это работа готовой модели на новом случае. В продукте инференс это то, что происходит на каждом запросе пользователя, и именно он определяет задержку интерфейса и счёт за серверы
Что на самом деле происходит во время обучения
Внутри модель устроена как функция с большим количеством настраиваемых чисел. Эти числа называют параметрами или весами: каждый показывает, насколько сильно тот или иной признак влияет на ответ. Простая модель обходится десятками параметров, большая языковая модель миллиардами, но принцип от размера не меняется
Сначала параметры заполняют случайными значениями, и модель выдаёт полную бессмыслицу. Дальше начинается цикл, который повторяется много раз. Модель делает предсказание на примере из датасета, результат сравнивают с настоящим ответом и считают функцию потерь (loss), то есть меру того, насколько сильно предсказание разошлось с правдой. После этого параметры чуть-чуть сдвигают в ту сторону, где эта мера становится меньше
Проще всего представить себе спуск с горы в густом тумане. Видно только склон под ногами, вершины и подножия не видно, поэтому вы делаете небольшой шаг туда, где земля уходит вниз, потом снова оглядываетесь и снова шагаете. Так работает градиентный спуск, главный механизм обучения почти всех современных моделей. Гора здесь это ошибка, а подножие это набор параметров, при котором модель ошибается меньше всего
У этого цикла есть настройки, которые задают до начала обучения. Их называют гиперпараметрами, и продакту полезно понимать хотя бы две самые обсуждаемые
Скорость обучения (learning rate) задаёт размер шага при спуске. Слишком крупный шаг перепрыгивает через впадину, и обучение начинает болтаться на месте вместо того чтобы сходиться. Слишком мелкий шаг ведёт к цели верно, но так долго, что вы упрётесь в бюджет и сроки. Значение подбирают экспериментами, универсального нет
Число эпох (epochs) говорит, сколько раз модель пройдёт весь датасет целиком. Мало эпох, и модель не доучится, закономерность останется недооткрытой. Много эпох, и она начнёт зазубривать конкретные примеры вместо того чтобы обобщать
Почему модель проверяют на данных, которых она не видела
Датасет всегда делят минимум на две части. На обучающей выборке (train) модель учится, на тестовой (test) её проверяют, причём тестовую часть во время обучения не показывают ни в каком виде
Смысл этого разделения проще всего понять через студента. Если дать человеку экзамен, состоящий ровно из тех задач, которые он разбирал на семинаре, высокая оценка не докажет ничего: возможно, он просто запомнил ответы. Настоящее понимание проверяется на новых задачах того же типа
Когда модель отлично отвечает на знакомых примерах и плохо на новых, это называют переобучением (overfitting). Она выучила случайные особенности обучающих данных, включая шум и совпадения, вместо общей закономерности. Обратная беда называется недообучением (underfitting): модель слишком проста для задачи и не улавливает даже очевидный сигнал
Для продакта здесь есть практический вывод. Любую цифру качества, которую приносит команда, нужно уточнять одним вопросом: она получена на данных, которых модель не видела при обучении. Если ответ невнятный, цифре верить нельзя
Три больших семейства задач
Почти всё, о чём вам расскажут на планёрках, укладывается в три группы
Обучение с учителем (supervised learning) работает там, где правильные ответы известны заранее. Внутри него две основные задачи. Классификация приклеивает случаю категорию: спам или не спам, вернёт кредит или не вернёт, к какой теме относится обращение. Регрессия предсказывает число: сколько заказов будет завтра, какой срок доставки ожидать, сколько стоит квартира
Обучение без учителя (unsupervised learning) применяют, когда готовых ответов нет и никто не знает, как правильно. Самый частый его вид это кластеризация, то есть разбиение массы объектов на группы похожих. Так находят сегменты клиентов, о существовании которых до этого не догадывались
Обучение с подкреплением (reinforcement learning) устроено иначе: система совершает действия, получает награду или наказание и постепенно нащупывает выгодную стратегию. Так учат играть в игры и управлять роботами, а в продуктах его встречают редко, потому что для обучения нужна безопасная среда, где можно ошибаться миллионы раз
Отдельной ветвью выросли генеративные модели, к которым относятся большие языковые модели вроде тех, что стоят за ChatGPT и Claude. Они обучены предсказывать продолжение текста, и из этого простого умения выросла способность отвечать на вопросы, пересказывать, переводить и писать черновики
Почему ответ модели это всегда вероятность
Модель почти никогда не говорит «да» и «нет». Она выдаёт число, показывающее её уверенность: например, письмо похоже на спам на 0.87. Превратить это число в решение продукта должен человек, и делает он это через порог (threshold)
Выбор порога это чистое продуктовое решение, а не техническое. Поставили низко, значит ловим почти весь спам, но вместе с ним отправляем в папку часть нужных писем. Поставили высоко, значит нормальную почту не трогаем, зато часть спама доедет до пользователя. Идеального положения не существует, есть только осознанный выбор того, какая ошибка для вашего продукта дороже
Из вероятностной природы вытекает главное свойство, с которым продукту предстоит жить: модель будет ошибаться регулярно и по своему устройству, а не из-за недоработки разработчика. Поэтому интерфейс, поддержку и процессы вокруг AI-фичи проектируют сразу с расчётом на ошибку
Чего машинное обучение не умеет
Модель не понимает смысла. Она находит статистические связи, и связь легко перепутать с причиной. Классический пример: количество проданных зонтов отлично предсказывает дождь, но зонты не вызывают осадков. Если продукт делает вывод «повлияем на признак и получим другой результат», это уже разговор про причинность, и одной модели для него недостаточно
Модель не выходит за пределы своего опыта. На случаях, непохожих ни на что в обучающих данных, она отвечает уверенно и неправильно, и по её ответу невозможно понять, что она столкнулась с незнакомым
Модель стареет, потому что мир меняется. Поведение пользователей, ассортимент, цены, сезон, конкуренты, всё это сдвигается, а закономерность внутри модели остаётся вчерашней. Это расхождение называют дрейфом (drift), и он объясняет, почему AI-фича требует постоянного присмотра, а не разовой поставки
Модель наследует перекосы данных. Если в истории решения принимались несправедливо, модель аккуратно воспроизведёт эту несправедливость и придаст ей вид объективной математики
Место продакта в этой картине
Продакту не нужно уметь обучать модели, ему нужно уметь принимать решения вокруг них. Практически это означает четыре вещи
Сформулировать задачу так, чтобы её вообще можно было решать моделью: что предсказываем, на каких данных, в какой момент, кто пользуется ответом. Договориться, как измеряем успех, причём сразу в двух видах: техническим качеством модели и деньгами или временем пользователя. Решить, что происходит при ошибке: кто её замечает, как исправляет, что видит человек. И заранее понять, кто и как заметит устаревание модели
Всё это продуктовые вопросы, и ответы на них не появятся из технической части сами
Итог
Машинное обучение это способ получить правило из примеров вместо того чтобы выписывать его руками. Модель внутри это функция с настраиваемыми числами, которые подбирают, постепенно уменьшая ошибку на данных. Проверять её нужно на примерах, которых она не видела, отвечает она вероятностью, а не истиной, ошибается по своему устройству и постепенно расходится с изменившейся реальностью
Дальше в курсе разберёмся, когда за этот инструмент стоит браться, а когда он окажется дорогой ошибкой, и какие подходы существуют помимо классических моделей