Как это выглядит для PHP-разработчика
Проще всего понять это через привычную аналогию.
Любая модель очень похожа на обычную функцию или метод:
есть входные аргументы
есть вычисления
есть возвращаемое значение
В самом общем виде модель записывается так: f(x) = ŷ, где
x - входные данные
ŷ - предсказание модели
Важно: это не истинное значение, а лишь попытка его угадать.
Функция как основа модели
Допустим, мы хотим предсказывать цену квартиры по её площади.
Самая простая модель - линейная: ŷ = w · x + b
Она говорит:
Цена ≈ площадь × коэффициент + сдвиг
PHP-реализация
class LinearModel {
private float $w;
private float $b;
public function __construct(float $w, float $b) {
$this->w = $w;
$this->b = $b;
}
public function predict(float $x): float {
return $this->w * $x + $this->b;
}
}
Пример:
$model = new LinearModel(2.0, 0.0);
echo $model->predict(3.0);
// Результат: 6
// Объяснение: 2 * 3 + 0 = 6
С точки зрения PHP - это обычный класс.
С точки зрения машинного обучения - это уже модель.
Параметры модели
Ключевой момент - параметры.
В нашем случае это: w и b
Они не являются входными данными, но именно от них зависит поведение модели.
Важно чётко разделять:
входные данные (x) - приходят извне
параметры (w, b) - настраиваются
выход (ŷ) - результат
В классическом программировании параметры фиксированы.
В машинном обучении - наоборот: структура фиксирована, параметры подбираются автоматически.
Ошибка как мера качества
Как понять, хороша ли модель?
Для этого используется функция ошибки (loss function).
Она сравнивает:
предсказание (ŷ)
реальное значение (y)
и возвращает число - насколько модель ошиблась.
Простая ошибка
Например, самая простая функция потерь - разница между предсказанием и реальным значением: ŷ - y
function error(float $yTrue, float $yPredicted): float {
return $yPredicted - $yTrue;
}
Пример:
echo error(yTrue: 10.0, yPredicted: 7.0);
// Результат: -3
// Объяснение: 7 - 10 = -3
Квадрат ошибки (чаще используется)
На практике чаще используют квадрат ошибки (Squared Error или SE), потому что он всегда положительный и сильнее наказывает большие промахи: (ŷ - y)²
function squaredError(float $yTrue, float $yPredicted): float {
return ($yPredicted - $yTrue) ** 2;
}
Пример:
echo squaredError(yTrue: 4.0, yPredicted: 6.0);
// Результат: 4
// Объяснение: (6 - 4)^2 = 4
Почему именно квадрат:
- всегда положительный
- сильнее наказывает большие ошибки
Важное наблюдение
Ошибка зависит от ŷ.
А ŷ зависит от параметров (w, b).
👉 Значит, ошибка - это функция параметров модели.
Обучение как минимизация ошибки
Если собрать всё вместе:
- модель - функция с параметрами
- данные - пары (x, y)
- ошибка - мера качества
👉 Обучение = подбор параметров, уменьшающих ошибку
Простейшая иллюстрация на PHP
$dataset = [
[1.0, 2.0],
[2.0, 4.0],
];
$model = new LinearModel(w: 0.0, b: 0.0);
foreach ($dataset as [$x, $yTrue]) {
$yPredicted = $model->predict($x);
$loss = squaredError($yTrue, $yPredicted);
// здесь параметры должны обновляться,
// чтобы уменьшить loss
}
До обучения
$model = new LinearModel(w: 0.0, b: 0.0);
// Результат:
// y = 0 * x
// x = 1 → loss = 4
// x = 2 → loss = 16
После частичного обучения
$model = new LinearModel(w: 0.8, b: 0.0);
// Результат:
// y = 0.8 * x
// x = 1 → loss = 1.44
// x = 2 → loss = 5.76
Параметры постепенно меняются так, чтобы ошибка уменьшалась.
Ключевая идея
Никто не «объясняет» модели правила.
Мы просто:
- даём данные
- считаем ошибку
- уменьшаем её
Почему это важно для PHP-разработчика
Это понимание убирает магию.
Модель - это функция
Обучение - это оптимизация
Ошибка - обычная функция
Машинное обучение не противоречит программированию - оно продолжает его.
Что дальше
Когда это становится понятно, начинается настоящая инженерия:
какие функции использовать
какие ошибки выбирать
как оптимизировать параметры
Полезные материалы
Книга: https://apphp.gitbook.io/ai-for-php-developers
Онлайн-демо: https://aiwithphp.org/books/ai-for-php-developers/examples/part-1/what-is-a-model
Top comments (0)