TensorFlow.js — это библиотека для машинного обучения на JavaScript, позволяющая строить, обучать и использовать модели прямо в браузере или на сервере с Node.js. В контексте вероятности и статистики библиотека предоставляет мощные инструменты для работы с данными, распределениями и вычислительными графами.
Базовым объектом TensorFlow.js является тензор
(tf.Tensor). Тензор — это многомерный массив чисел с
поддержкой автоматического дифференцирования. Для статистических
вычислений тензоры позволяют эффективно выполнять операции над большими
массивами данных.
Примеры основных статистических операций:
const tf = require('@tensorflow/tfjs');
// Создание тензора
const x = tf.tensor([1, 2, 3, 4, 5]);
// Среднее значение
const mean = x.mean(); // 3
// Дисперсия
const variance = x.sub(mean).square().mean(); // 2
// Сумма
const sum = x.sum(); // 15
// Максимум и минимум
const max = x.max(); // 5
const min = x.min(); // 1
Ключевой момент: все операции над тензорами являются векторизованными, что обеспечивает высокую производительность по сравнению с обычными циклами JavaScript.
Для моделирования вероятностных процессов и обучения моделей часто требуется генерация случайных данных. TensorFlow.js предоставляет функции:
tf.randomNormal([shape], mean, stdDev) — нормальное
распределение.tf.randomUniform([shape], minval, maxval) — равномерное
распределение.tf.randomPoisson(lam, shape) — распределение
Пуассона.const normal = tf.randomNormal([1000], 0, 1); // 1000 значений с μ=0, σ=1
const uniform = tf.randomUniform([1000], 0, 10); // 1000 значений в диапазоне 0–10
Эти тензоры можно использовать для оценки свойств распределений, вычисления статистик или построения графиков.
TensorFlow.js поддерживает операции, часто используемые в вероятностных моделях:
categoricalCrossentropy или
binaryCrossentropy.tf.exp, tf.log, tf.sigmoid) —
помогают реализовывать различные вероятностные модели.Пример вычисления softmax и логарифма вероятности:
const logits = tf.tensor([2.0, 1.0, 0.1]);
const probabilities = tf.softmax(logits); // [0.659, 0.242, 0.099]
const logProb = tf.log(probabilities); // [-0.417, -1.418, -2.312]
В машинном обучении часто нужно оценивать параметры распределений или проводить выборочные эксперименты. TensorFlow.js позволяет выполнять это с помощью методов тензоров и функций генерации случайных чисел.
Пример: выборка и оценка среднего и стандартного отклонения
const samples = tf.randomNormal([5000], 5, 2); // μ=5, σ=2
const sampleMean = samples.mean(); // приближенное к 5
const sampleStd = samples.sub(sampleMean).square().mean().sqrt(); // приближенное к 2
Ключевой момент: такие вычисления важны для проверки гипотез, анализа качества моделей и предварительной обработки данных.
Вероятностные и статистические вычисления в TensorFlow.js напрямую связаны с построением моделей:
Пример использования статистики для функции потерь:
const yTrue = tf.tensor([0, 1, 1, 0]);
const yPred = tf.tensor([0.1, 0.9, 0.8, 0.2]);
const loss = tf.losses.binaryCrossentropy(yTrue, yPred);
loss.print(); // показывает среднюю бинарную кросс-энтропию
TensorFlow.js оптимизирован для работы с GPU через WebGL, поэтому операции с тензорами и вероятностными вычислениями выполняются векторизовано, без необходимости писать сложные циклы. Это позволяет проводить симуляции Монте-Карло, статистический анализ и обучение моделей прямо в браузере с высокой производительностью.
Совет по оптимизации: использовать методы
tf.tidy() для управления памятью и предотвращения утечек
при создании большого числа временных тензоров.
TensorFlow.js содержит широкий набор функций:
add, sub,
mul, div, powsum,
mean, cumsummatMul,
transpose, diagmin, max,
argMax, argMin, variance,
stdЭти инструменты позволяют реализовать практически любые статистические и вероятностные модели, начиная от простых оценок параметров и заканчивая сложными нейросетевыми архитектурами с вероятностными слоями.