Что такое модель в математическом смысле

Функция, параметры, ошибка.

Что такое модель в математическом смысле

Когда мы говорим о модели в машинном обучении, полезно сразу отбросить все ассоциации с "искусственным интеллектом" и сложными абстракциями. В математическом смысле модель – это функция. Не больше и не меньше. Она принимает какие-то входные данные и возвращает результат. Различие заключается в том, что функция не является жёстко заданной и допускает настройку параметров.

Проще всего это понять, если думать как PHP-разработчик. Любая модель очень похожа на обычный метод или функцию, которую вы пишете каждый день. Есть входные аргументы, есть вычисления внутри и есть возвращаемое значение.

В самом общем виде модель можно записать так:

f(x)=y^f(x) = ŷ

Здесь x – входные данные, а ŷ – предсказание модели. Черта над y неслучайна: это не истинное значение, а лишь попытка его угадать.

Функция как основа модели

Допустим, мы хотим предсказывать цену квартиры по ее площади. В простейшем случае модель можно взять линейную:

y^=wx+bŷ = w · x + b

Это уже полноценная модель. Она говорит: "Цена (y^) примерно равна площади (xx), умноженной на некий коэффициент (ww), плюс некий сдвиг (bb)".

Если переписать это на PHP, получится почти банальный код:

Пример:

С точки зрения PHP это обычный класс. Никакой магии. Но с точки зрения машинного обучения – это модель.

Параметры модели

Ключевой момент здесь – параметры. В нашем примере это (ww) и (bb). Они не являются входными данными, но именно от них зависит поведение модели. Если изменить (ww) или (bb), функция начнет выдавать другие результаты.

Важно четко разделять:

  • входные данные (xx) – то, что приходит "снаружи";

  • параметры (ww, bb) – то, что живет внутри модели и настраивается;

  • выход (y^) – результат работы модели.

В обычном программировании вы чаще всего задаете параметры жестко в коде. В машинном обучении все наоборот: структура функции фиксирована, а параметры подбираются автоматически.

Ошибка как мера качества

Теперь возникает главный вопрос: как понять, что одни параметры лучше других? Для этого вводится понятие ошибки, или функции потерь.

Ошибка – это функция (общепринятое название - Loss function), которая сравнивает предсказание модели с реальным значением и возвращает число, показывающее, насколько мы ошиблись. Чем меньше это число, тем лучше модель.

Например, самая простая ошибка – разница между предсказанием и реальностью:

y^yŷ ​- y

Пример:

На практике чаще используют квадрат ошибки (Squared Error или SE), потому что он всегда положительный и сильнее наказывает большие промахи:

(y^y)2(ŷ − y​) ^ 2

Пример:

Обратите внимание на важный момент. Ошибка напрямую зависит от $yPredicted, а $yPredicted зависит от параметров модели. Значит, в конечном итоге ошибка – это функция от параметров модели.

Обучение как минимизация ошибки

Если собрать все вместе, картина становится очень простой и приземленной.

У нас есть:

  • модель – функция с параметрами;

  • данные – пары входов и правильных ответов;

  • ошибка – способ измерить качество предсказаний.

Обучение модели – это процесс подбора таких параметров, при которых суммарная ошибка на данных становится минимальной.

Даже в PHP это легко представить в виде цикла. Примитивно и неэффективно, но концептуально верно:

Пример:

Конкретный способ изменения параметров – это уже вопрос алгоритмов оптимизации, о которых мы будем говорить отдельно. Но важно уловить саму идею: никто не "объясняет" модели правила. Мы лишь говорим ей, насколько она ошиблась, и позволяем постепенно уменьшать эту ошибку.

Почему это понимание критично

Для PHP-разработчика такое представление особенно ценно. Оно показывает, что машинное обучение не противоречит классическому программированию и не заменяет его. Напротив, оно опирается на те же самые базовые идеи: функции, параметры, вычисления.

Модель – это не черный ящик. Это функция.

Обучение – это не магия. Это оптимизация.

Ошибка – это не абстракция. Это обычная функция, возвращающая число.

Если вы это поняли, то страх перед машинным обучением уже исчез. Дальше начинается инженерия: какие функции брать, какие ошибки использовать и как эффективно подбирать параметры.

Чтобы самостоятельно протестировать этот код, установите примеры из официального репозитория GitHub или воспользуйтесь онлайн-демонстрацией для его запуска.

Last updated