Класс Architect и предустановленные топологии

Библиотека Synaptic в JavaScript предоставляет мощные средства для создания и обучения нейронных сетей. Центральным компонентом для удобного проектирования сетей является класс Architect, который позволяет быстро создавать нейронные сети с заранее определёнными архитектурами.

Основные принципы работы с Architect

Класс Architect — это абстракция, объединяющая несколько слоёв нейронной сети в одну структуру. Он автоматически создаёт все необходимые нейроны и соединения между ними, что избавляет от ручного добавления каждого нейрона и каждой связи.

Синтаксис создания сети через Architect выглядит следующим образом:

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

const network = new Architect.Perceptron(2, 3, 1);

Здесь создаётся перцептрон с двумя входными нейронами, тремя скрытыми и одним выходным. Архитектура сети задаётся в виде аргументов конструктора: каждый аргумент определяет количество нейронов в соответствующем слое. Первое число — входной слой, последующие — скрытые слои, последнее — выходной слой.

Перцептрон (Perceptron)

Perceptron — самая простая и классическая архитектура многослойной сети. Основные особенности:

  • Используется для задач классификации.
  • Состоит из входного, одного или нескольких скрытых и выходного слоя.
  • Сигнальная функция нейронов обычно — сигмоида.

Пример создания и обучения перцептрона:

const myPerceptron = new Architect.Perceptron(2, 4, 1);

// Обучающие данные XOR
const trainingSet = [
  { input: [0, 0], output: [0] },
  { input: [0, 1], output: [1] },
  { input: [1, 0], output: [1] },
  { input: [1, 1], output: [0] },
];

const trainer = new Trainer(myPerceptron);
trainer.train(trainingSet, {
  rate: 0.2,
  iterations: 20000,
  error: 0.005,
  shuffle: true
});

LSTM (Long Short-Term Memory)

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

Создание сети LSTM:

const lstmNetwork = new Architect.LSTM(3, 5, 2);

Параметры конструктора:

  • Первый аргумент — количество входных нейронов.
  • Второй — количество нейронов LSTM в скрытом слое.
  • Третий — количество выходных нейронов.

Особенности LSTM:

  • Используется для обработки временных рядов, текста, аудио.
  • Содержит специальные блоки памяти (cell states) для удержания информации.
  • Автоматически управляет потоками забывания, обновления и вывода данных.

LSTM с несколькими скрытыми слоями

Можно создавать глубокие рекуррентные сети с несколькими LSTM-слоями:

const deepLSTM = new Architect.LSTM(4, 6, 6, 2);

В этом примере два скрытых слоя с 6 нейронами каждый. Такая структура позволяет сети лучше моделировать сложные зависимости во входных данных.

Нейронные сети типа Liquid

Liquid — менее известная, но мощная архитектура, имитирующая динамику нейронных сетей мозга. Используется для моделирования потоков данных и реакций на сложные стимулы.

Создание сети Liquid:

const liquidNet = new Architect.Liquid(3, 5, 2);

Особенности:

  • Содержит множество рекуррентных соединений.
  • Подходит для задач адаптивного управления и генерации сигналов.
  • Обеспечивает спонтанное поведение нейронной сети, близкое к реальному мозгу.

Преимущества использования Architect

  1. Удобство — автоматически создаёт слои и соединения.
  2. Гибкость — можно выбирать подходящую архитектуру для задачи.
  3. Чистый код — избавляет от ручного соединения каждого нейрона.
  4. Поддержка сложных сетей — LSTM и Liquid доступны сразу без необходимости ручного проектирования рекуррентных связей.

Общие рекомендации при работе с Architect

  • Для простых задач классификации лучше использовать Perceptron.
  • Для работы с последовательностями — LSTM.
  • Для экспериментов с адаптивными и динамическими системами — Liquid.
  • Сеть всегда можно преобразовать в JSON и сохранить, что упрощает повторное использование:
const json = myPerceptron.toJSON();
  • Для восстановления сети:
const restoredNetwork = Architect.fromJSON(json);
  • Тщательно подбирать количество скрытых слоёв и нейронов, чтобы избежать переобучения или недостаточного обучения.

Использование Architect значительно упрощает процесс проектирования нейронных сетей в Synaptic и позволяет сосредоточиться на обучении и анализе данных, а не на низкоуровневых деталях построения сети.