Внутренние зависимости между модулями

Библиотека 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 — нейрон, управляющий величиной сигнала (необязательный).

Прямое распространение сигнала происходит следующим образом:

  1. Нейрон собирает входные значения, умножая их на соответствующие веса Connection.
  2. Полученная сумма проходит через функцию активации.
  3. Результат передаётся на все исходящие связи.

Обратное распространение ошибки (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.

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