Персептрон является одним из базовых компонентов нейронных сетей и представляет собой модель искусственного нейрона, способную выполнять классификацию входных данных. Его структура включает входные сигналы, веса, сумматор и функцию активации, которые совместно определяют выходное значение нейрона.
[ z = _{i=1}^{n} w_i x_i + b]
где ( b ) — смещение (bias), добавляемое для сдвига порога активации. 4. Функция активации (activation function) — преобразует сумму взвешенных входов в конечный выход. В классическом персептроне используется пороговая функция:
[ y = ]
Работа персептрона заключается в следующем:
Таким образом, персептрон реализует линейное разделение данных, создавая границу, разделяющую классы в многомерном пространстве входов.
Обучение персептрона выполняется с использованием правила обучения на основе ошибки, которое корректирует веса по мере обработки обучающих примеров. Алгоритм включает следующие шаги:
[ = y_ - y_]
где ( y_ ) — правильная метка, а ( y_ ) — предсказанный выход. 3. Корректируются веса и смещение:
[ w_i := w_i + x_i] [ b := b + ]
где ( ) — скорость обучения (learning rate).
Этот процесс повторяется до тех пор, пока ошибки на обучающем наборе не станут минимальными или пока не будет достигнуто заданное количество итераций.
В библиотеке ConvNetJS персептрон реализован через
слой типа fc (fully connected), который соединяет все
входные нейроны с каждым нейроном следующего слоя. Основные шаги
использования персептрона в ConvNetJS:
var layer_def = {};
layer_def.type = 'fc';
layer_def.num_neurons = 10; // количество нейронов в слое
net.addLayer(layer_def);
Trainer, который
применяет стохастический градиентный спуск:var trainer = new convnetjs.Trainer(net, {
method: 'sgd',
learning_rate: 0.01,
momentum: 0.9,
batch_size: 10
});
Vol,
представляющий многомерный тензор:var x = new convnetjs.Vol([1.0, 0.5, -1.2]);
var stats = trainer.train(x, 1); // 1 — правильная метка класса
forward:var output = net.forward(x);
fc и объект
Trainer для управления процессом обучения.Персептрон остаётся фундаментальной моделью для понимания работы нейронных сетей и используется как строительный блок более сложных архитектур в ConvNetJS и других фреймворках.