Библиотека Synaptic представляет собой модульную систему для
создания, обучения и эксплуатации нейронных сетей в JavaScript. Основные
модули включают Layer, Neuron,
Network, Trainer и
Architect. Каждый из них выполняет строго определённую
функцию, а их совместная работа обеспечивает гибкость и расширяемость
всей архитектуры.
- Neuron — базовый строительный блок сети. Каждая
нейронная единица имеет входы, выходы и функцию активации. Внутренние
связи между нейронами реализуются через объекты типа
Connection, которые хранят веса и информацию о
смещении.
- Layer — слой нейронов, состоящий из массива
объектов Neuron. Слой отвечает за согласованную работу группы нейронов и
управление их связями с соседними слоями.
- Network — структура, объединяющая слои и их нейроны
в полную архитектуру. Network предоставляет методы для прямого
распространения сигнала (activate) и обратного
распространения ошибки (propagate), инкапсулируя работу
отдельных нейронов и слоев.
- Trainer — модуль для обучения сети с использованием
различных алгоритмов. Работает напрямую с объектом Network, модифицируя
веса Connection в соответствии с выбранной стратегией обучения.
- Architect — набор шаблонов для создания стандартных
типов сетей: Perceptron, LSTM, Liquid. Он использует Layer и Network для
построения готовой архитектуры с минимальным количеством кода.
Взаимосвязи между слоями и
нейронами
Каждый нейрон Layer может иметь связи с нейронами
как того же слоя (рецидивные), так и предыдущих или последующих слоев.
Эти связи реализуются через объекты Connection, которые
хранят:
- from — нейрон источника;
- to — нейрон приёмника;
- weight — вес связи;
- gater — нейрон, управляющий величиной сигнала
(необязательный).
Прямое распространение сигнала происходит следующим образом:
- Нейрон собирает входные значения, умножая их на соответствующие веса
Connection.
- Полученная сумма проходит через функцию активации.
- Результат передаётся на все исходящие связи.
Обратное распространение ошибки (backpropagation)
учитывает ту же структуру: каждый Connection получает корректировку веса
на основе градиента ошибки, что обеспечивает согласованность обучения на
уровне сети, слоя и отдельного нейрона.
Network как агрегатор
модулей
Объект Network выступает посредником между всеми компонентами. Он не
только хранит слои, но и реализует методы:
- activate(inputArray) — инициирует прямое
распространение сигналов по всем слоям.
- propagate(learningRate, targetArray) — корректирует
веса всех связей согласно ошибке.
- toJSON() / fromJSON() — позволяет сохранять и
восстанавливать полную структуру сети, включая слои, нейроны, связи и их
веса.
Network гарантирует, что изменения на уровне отдельного слоя или
нейрона корректно интегрируются в работу всей системы. При этом Trainer
оперирует исключительно Network, что упрощает процесс обучения и
тестирования сетей.
Роль Trainer и алгоритмов
обучения
Trainer инкапсулирует алгоритмы обучения, включая:
- SGD (Stochastic Gradient Descent) — стохастический
градиентный спуск;
- ADAM — адаптивный метод с моментумом;
- Resilient Propagation — метод, оптимизирующий
скорость обучения без явного задания learningRate.
Trainer оперирует сетью через activate и
propagate, не вмешиваясь напрямую в внутреннюю
структуру нейронов. Это позволяет легко заменять алгоритмы обучения без
изменения архитектуры сети.
Architect и
автоматизация создания сетей
Architect предоставляет удобные функции для построения стандартных
конфигураций:
- Perceptron(input, hidden, output) — многослойный
персептрон с заданным количеством нейронов на каждом слое.
- LSTM(input, hidden, output) — сеть с долговременной
памятью.
- Liquid(input, hidden, output) — сеть с
динамическими связями между нейронами.
Каждая функция Architect создаёт объекты Layer и соединяет их через
Network, автоматически назначая связи Connection и устанавливая функции
активации.
Внутренние
зависимости и целостность системы
В Synaptic наблюдается строгая иерархия зависимостей:
- Neuron зависит от Connection и функции
активации.
- Layer агрегирует Neuron, управляет их связями.
- Network объединяет Layer и управляет
последовательностью активации и обучения.
- Trainer зависит от Network для реализации
алгоритмов обучения.
- Architect использует Layer и Network для
автоматизированного построения сетей.
Эта система обеспечивает модульность: изменения внутри нейрона не
нарушают работу слоёв или сети, а модификации Network корректно
распространяются на Trainer и Architect.
Каждый модуль сохраняет чёткие интерфейсы для взаимодействия, что
позволяет строить сложные нейронные архитектуры, комбинируя стандартные
и пользовательские компоненты.