Библиотека 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.
activate и propagate обеспечивают
работу и обучение нейрона.Базовое понимание этих свойств является фундаментом для построения как однослойных, так и многослойных нейронных сетей в Synaptic.