Создание нейрона и базовые свойства

Библиотека Synaptic представляет собой мощный инструмент для работы с искусственными нейронными сетями на JavaScript. В её основе лежат объекты Neuron, Layer и Network, которые позволяют строить как простые, так и сложные структуры.

Создание нейрона

Нейрон в Synaptic создаётся через конструктор класса Neuron:

const { Neuron } = require('synaptic');

let neuron = new Neuron();

При создании нейрон обладает следующими базовыми свойствами:

  • bias — смещение нейрона, которое добавляется к сумме взвешенных входов перед активацией. По умолчанию bias равен случайному числу.
  • squash — функция активации, которая преобразует входное значение нейрона в выходное. Synaptic предоставляет несколько стандартных функций: Neuron.squash.LOGISTIC, Neuron.squash.TANH, Neuron.squash.IDENTITY, Neuron.squash.HLIM.
  • activation — текущее значение выхода нейрона после применения функции активации.
  • old — значение активации нейрона на предыдущем шаге, используется для некоторых алгоритмов обучения.
  • trace — вспомогательная структура, хранящая данные о прошлых состояниях нейрона для обучения методом обратного распространения ошибки.

Соединение нейронов

Нейроны в Synaptic соединяются друг с другом через метод connect:

let neuron1 = new Neuron();
let neuron2 = new Neuron();

neuron1.connect(neuron2);

Каждое соединение (projected connection) обладает весом (weight), который определяет влияние одного нейрона на другой. Веса по умолчанию инициализируются случайными значениями, но их можно изменять вручную:

neuron1.connections.projected[neuron2.ID].weight = 0.5;

Основные методы нейрона

  • activate(input) — вычисляет активацию нейрона на основе входного значения. Если вход не передан, используется сумма входящих сигналов. Возвращает значение после применения функции активации.

  • propagate(rate, target) — выполняет шаг обучения нейрона с использованием обратного распространения ошибки. Параметры:

    • rate — скорость обучения;
    • target — целевое значение для нейрона (необязательный параметр для скрытых нейронов).
  • clear() — сбрасывает состояние нейрона (activation, old, trace) для повторного использования.

Функции активации

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

  • Логистическая (сигмоидная) функция [ f(x) = ] Хорошо подходит для вероятностных выходов (0–1).

  • Гиперболический тангенс (tanh) [ f(x) = (x)] Выход варьируется от −1 до 1, что удобно для центровки данных.

  • Identity (линейная функция) [ f(x) = x] Используется в выходных слоях при регрессии.

  • Hard Limit (пороговая функция) [ f(x) = x > 0 ? 1 : 0] Используется для бинарной классификации.

Настройка параметров нейрона

Каждый нейрон можно настроить вручную для точного управления процессом обучения:

neuron.bias = 0.1;
neuron.squash = Neuron.squash.TANH;

Это позволяет экспериментировать с различными типами нейронов и функциями активации в одной сети.

Внутренние структуры

Нейрон хранит три типа соединений:

  • connections.inputs — входящие соединения с другими нейронами.
  • connections.outputs — исходящие соединения.
  • connections.projected — список всех нейронов, на которые текущий нейрон проецирует сигнал.

Каждое соединение содержит следующие ключевые свойства:

  • weight — вес соединения;
  • from — ссылка на нейрон-источник;
  • to — ссылка на нейрон-приёмник;
  • gain — коэффициент усиления соединения.

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

Активация нейрона в цикле

Для динамических сетей активация нейрона может выполняться многократно:

for (let i = 0; i < 10; i++) {
    neuron.activate(Math.random());
    neuron.propagate(0.1, 0.5);
}

В этом примере нейрон получает случайные входные сигналы, активируется и обновляет свои веса через метод propagate.

Итоговые ключевые моменты

  • Нейрон в Synaptic является самостоятельной единицей с собственным состоянием и весами.
  • Функции активации и смещение позволяют регулировать динамику отклика нейрона.
  • Соединения с другими нейронами определяют топологию сети и распределение сигналов.
  • Методы activate и propagate обеспечивают работу и обучение нейрона.

Базовое понимание этих свойств является фундаментом для построения как однослойных, так и многослойных нейронных сетей в Synaptic.