Взвешенные связи являются фундаментальным понятием при построении нейронных сетей в Mind.js. Они определяют степень влияния одного нейрона на другой, задавая численное значение, которое умножается на входные данные перед передачей сигнала следующему слою. В Mind.js веса реализуются как свойства объектов нейронов и играют ключевую роль в процессе обучения сети.
При создании нейронной сети с помощью Mind.js веса могут задаваться случайным образом или через предварительно определённые значения. Использование случайной инициализации предотвращает симметрию между нейронами, что важно для успешного обучения.
Пример случайной инициализации в Mind.js:
const { NeuralNetwork } = require('mind');
const net = new NeuralNetwork({
hiddenLayers: [3],
learningRate: 0.05
});
// Веса внутри сети создаются автоматически при первом обучении
Mind.js использует нормальное распределение для генерации начальных весов, что обеспечивает их близость к нулю и позволяет быстрее сходиться во время тренировки.
Каждое соединение между нейронами имеет вес w, который
умножается на значение входа x. Сумма произведений весов на
входы формирует сигнал для нейрона следующего слоя:
[ y = f(_{i} w_i x_i + b)]
где:
w_i — вес для i-го входа,x_i — значение i-го входа,b — смещение (bias),f — активационная функция.В Mind.js смещение также рассматривается как вес, привязанный к постоянному входу, равному 1.
Обучение нейронной сети заключается в постепенной корректировке весов для минимизации ошибки. Mind.js использует метод обратного распространения ошибки (backpropagation), где каждый вес корректируется в зависимости от частной производной функции ошибки по отношению к нему:
[ w = - ]
где:
η — коэффициент обучения
(learningRate),E — функция ошибки.Mind.js автоматически обновляет веса при вызове метода
train:
net.train([{ input: [0, 1], output: [1] }], {
iterations: 20000,
errorThresh: 0.005,
log: true,
learningRate: 0.05
});
Mind.js позволяет управлять весами через:
Пример ручной установки весов:
net.fromJSON({
sizes: [2, 3, 1],
layers: {
0: { 0: { bias: 0.1, weights: { 0: 0.5, 1: -0.4 } } },
1: { 0: { bias: -0.2, weights: { 0: 0.3, 1: 0.8, 2: -0.5 } } }
}
});
Правильная настройка и понимание весов позволяют создавать эффективные сети, способные решать сложные задачи классификации, регрессии и распознавания образов.
Mind.js предоставляет возможность извлечения весов для анализа:
const json = net.toJSON();
console.log(json.layers);
Это позволяет исследовать распределение весов, выявлять слишком большие или слишком маленькие значения и корректировать гиперпараметры сети.
Взвешенные связи формируют основу вычислительной мощности нейронной сети в Mind.js. Их правильная инициализация, адаптация и анализ напрямую определяют способность сети к обучению и качеству предсказаний.