Вы сказали:
На php простой алгоритм нейросети возможно выполнить ?
Анализ логов небольших текста
Да, на PHP возможно реализовать простой алгоритм нейросети, особенно если задача небольшая и ограничена по объему данных — например, анализ логов или коротких текстов. Однако нужно понимать, что PHP не является оптимальным языком для машинного обучения — для этого обычно используют Python. Но для учебных или простых задач — вполне можно.
Для образовательных целей ты можешь реализовать простую полносвязную нейросеть (например, perceptron) прямо на PHP:
Вход → Веса → Активация (например, sigmoid) → Выход
Обратное распространение ошибки (backpropagation) — тоже возможно
Пример мини-персептрона:
phpfunction sigmoid($x) {
return 1 / (1 + exp(-$x));
}
function sigmoid_derivative($x) {
return $x * (1 - $x);
}
// Пример обучения на OR
$inputs = [[0, 0], [0, 1], [1, 0], [1, 1]];
$outputs = [[0], [1], [1], [1]];
$weights = [rand()/getrandmax(), rand()/getrandmax()];
$bias = rand()/getrandmax();
$lr = 0.1;
for ($epoch = 0; $epoch < 10000; $epoch++) {
foreach ($inputs as $i => $input) {
$sum = $input[0]*$weights[0] + $input[1]*$weights[1] + $bias;
$pred = sigmoid($sum);
$error = $outputs[$i][0] - $pred;
$delta = $error * sigmoid_derivative($pred);
// Обновление весов
$weights[0] += $lr * $delta * $input[0];
$weights[1] += $lr * $delta * $input[1];
$bias += $lr * $delta;
}
}
Более практичный подход — реализовать нейросеть в Python, а затем вызывать её из PHP:
Через shell_exec() или proc_open()
Через REST API (например, Flask или FastAPI-сервер)
Или с помощью очереди (RabbitMQ, Redis Queue и т.п.)
Пример:
php$output = shell_exec("python3 my_neural_net.py 'лог текста'");
echo $output;
Существуют и библиотеки, которые имитируют машинное обучение на PHP (например, Rubix ML):
bashcomposer require rubix/ml
И пример простого классификатора:
phpuse Rubix\ML\Classifiers\KNearestNeighbors;
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\CrossValidation\Metrics\Accuracy;
$dataset = new Labeled(
[['ошибка', 'fatal'], ['предупреждение', 'warn'], ['норма', 'info']],
['bad', 'bad', 'good']
);
$estimator = new KNearestNeighbors(3);
$estimator->train($dataset);
$prediction = $estimator->predict([['ошибка', 'fatal']]);
Да, на PHP можно реализовать простую нейросеть — особенно для учебных или очень узких задач.
Для более серьёзного анализа логов лучше подключать сторонние инструменты: Python-модули, API или готовые ML-сервисы.
Если ты хочешь — могу помочь написать конкретную мини-нейросеть или классификатор на PHP под твой лог/тексты.
Хочешь пример под конкретный тип логов?
Конечно! Давай разберем первый пример — простейшую нейросеть на чистом PHP, шаг за шагом.
Это однослойный перцептрон (одна нейросеть с 2 входами и 1 выходом), который учится выполнять логическую операцию OR:
| Вход A | Вход B | OR (цель) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Входной слой: два входа (например, 0 и 1)
Весовые коэффициенты: каждая связь имеет «вес» — число, которое усиливает или ослабляет сигнал
Сумматор: умножаем входы на веса и складываем
Активационная функция (sigmoid): превращает сумму в число от 0 до 1
Обратное распространение (обучение): корректируем веса на основе ошибки
php// Сигмоида — активационная функция
function sigmoid($x) {
return 1 / (1 + exp(-$x));
}
// Производная сигмоиды — нужна для обучения
function sigmoid_derivative($x) {
return $x * (1 - $x);
}
// Входные данные (4 примера)
$inputs = [[0, 0], [0, 1], [1, 0], [1, 1]];
// Ожидаемые выходы для OR
$outputs = [[0], [1], [1], [1]];
// Случайные начальные веса и смещение (bias)
$weights = [rand()/getrandmax(), rand()/getrandmax()]; // [вес_1, вес_2]
$bias = rand()/getrandmax(); // смещение
$lr = 0.1; // Скорость обучения (learning rate)
// Обучаем 10 000 итераций
for ($epoch = 0; $epoch < 10000; $epoch++) {
foreach ($inputs as $i => $input) {
// Прямой проход: вычисляем выход
$sum = $input[0]*$weights[0] + $input[1]*$weights[1] + $bias;
$pred = sigmoid($sum);
// Считаем ошибку
$error = $outputs[$i][0] - $pred;
// Вычисляем дельту (градиент)
$delta = $error * sigmoid_derivative($pred);
// Обновляем веса и смещение
$weights[0] += $lr * $delta * $input[0];
$weights[1] += $lr * $delta * $input[1];
$bias += $lr * $delta;
}
}
// Проверка: предсказания
foreach ($inputs as $input) {
$sum = $input[0]*$weights[0] + $input[1]*$weights[1] + $bias;
$pred = sigmoid($sum);
echo "Вход: [" . implode(", ", $input) . "] → Предсказание: " . round($pred, 3) . "\n";
}
Входы: [0, 1]
Весы: например [0.7, 0.5]
Сумма: 0*0.7 + 1*0.5 + bias = 0.5 + bias
Применяется sigmoid: переводим в число от 0 до 1 — это "предсказание"
Считаем ошибку: цель - предсказание
Умножаем на производную сигмоиды — получаем "дельту"
Дельта говорит, в каком направлении и насколько менять веса
Обновляем веса и bias (смещение)
Нейросеть научится "угадывать" правильный результат логической функции OR.
Результат примерно такой:
lessВход: [0, 0] → Предсказание: 0.01
Вход: [0, 1] → Предсказание: 0.98
Вход: [1, 0] → Предсказание: 0.98
Вход: [1, 1] → Предсказание: 0.99
Можно обучать и на других функциях (AND, XOR — но XOR требует уже скрытого слоя)
Можно использовать это как основу для анализа текстов (если перед этим перевести текст в числовые векторы)
Хочешь, я покажу, как на основе этого анализировать простые текстовые логи (например, "error", "warn", "ok")?