Расширение объяснения @zfy ... Уравнение для одного входа, одного нейрона, одного выхода должно выглядеть так:
y = a * x + b * 1 and out = f(y)
где x - это значение из входного узла, а 1 - это значение смещения; y может быть непосредственно вашим выводом или передаваться в функцию, часто сигмовидную функцию. Также обратите внимание, что смещение может быть любым постоянным, но чтобы упростить все, мы всегда выбираем 1 (и, вероятно, это так часто, что @zfy сделал это, не показывая и не объясняя это).
Ваша сеть пытается выучить коэффициенты a и b для адаптации к вашим данным. Итак, вы можете понять, почему добавление элементаb * 1
позволяет ему лучше соответствовать большему количеству данных: теперь вы можете изменить как наклон, так и перехват.
Если у вас есть более одного ввода, ваше уравнение будет выглядеть так:
y = a0 * x0 + a1 * x1 + ... + aN * 1
Обратите внимание, что уравнение все еще описывает один нейрон, одну выходную сеть; если у вас больше нейронов, вы просто добавляете одно измерение в матрицу коэффициентов, чтобы мультиплексировать входы во все узлы и суммировать вклад каждого узла.
Что вы можете написать в векторизованном формате как
A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT
т.е., помещая коэффициенты в один массив и (входы + смещение) в другой, вы получаете желаемое решение в виде точечного произведения двух векторов (вам нужно переставить X, чтобы фигура была правильной, я написал XT как 'X транспонированный')
Таким образом, в конце вы также можете увидеть свое смещение как еще один вход для представления той части вывода, которая фактически не зависит от вашего ввода.