Вероятность и статистика в контексте ML

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 поддерживает операции, часто используемые в вероятностных моделях:

  • Функция активации softmax — переводит вектор чисел в распределение вероятностей.
  • Логарифмическая вероятность — удобна для обучения моделей с использованием функции потерь 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 напрямую связаны с построением моделей:

  • Регрессия и классификация — требуют нормализации данных, расчета вероятностей ошибок и метрик.
  • Байесовские методы — используют распределения для апостериорной оценки.
  • Генеративные модели (например, GAN или VAE) — полагаются на выборки из вероятностных распределений.

Пример использования статистики для функции потерь:

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, pow
  • Суммирование и агрегация: sum, mean, cumsum
  • Матричные операции: matMul, transpose, diag
  • Статистические: min, max, argMax, argMin, variance, std

Эти инструменты позволяют реализовать практически любые статистические и вероятностные модели, начиная от простых оценок параметров и заканчивая сложными нейросетевыми архитектурами с вероятностными слоями.