Ну, похоже, вы половина ответили на свой вопрос: это правда, что вы исправляете все ненулевые веса, вы не исправляете все на одну и ту же сумму.
Вместо этого вы корректируете весовые коэффициенты пропорционально их входящей активации, поэтому, если блок X активировался действительно сильно, а блок Y активировал всего один бит, и была большая ошибка, тогда вес, переходящий от блока X к выходу, быть исправлено гораздо больше, чем веса единицы Y для вывода.
Технический термин для этого процесса называется дельта-правилом, а его подробности можно найти в его вики-статье . Кроме того, если вы когда-либо захотите перейти на использование многослойных персептронов (однослойные персептроны очень ограничены в вычислительной мощности, см. обсуждение аргументов Минского и Паперта против их использования здесь ), здесь .
обсуждается аналогичный алгоритм обучения, называемый обратным распространением.