Нет, это невозможно, , если (может быть) вы начнете использовать некоторые довольно странные, необычные функции активации.
Давайте сначала проигнорируем нейрон 2 и притворим, что нейрон 1 является выходным узлом. Пусть x0
обозначает значение смещения (всегда x0 = 1
) и x1
и x2
обозначают входные значения для примера, y
обозначают желаемый результат, и пусть w1, w2, w3
обозначают веса от x's
к нейрону 1. С проблемой XOR, мы имеем следующие четыре примера:
x0 = 1, x1 = 0, x2 = 0, y = 0
x0 = 1, x1 = 1, x2 = 0, y = 1
x0 = 1, x1 = 0, x2 = 1, y = 1
x0 = 1, x1 = 1, x2 = 1, y = 0
Пусть f(.)
обозначит функцию активации нейрона 1. Тогда, предполагая, что мы можем как-то обучать наши весы, чтобы решить эту проблему XOR, мы имеем следующий четыре уравнения:
f(w0 + x1*w1 + x2*w2) = f(w0) = 0
f(w0 + x1*w1 + x2*w2) = f(w0 + w1) = 1
f(w0 + x1*w1 + x2*w2) = f(w0 + w2) = 1
f(w0 + x1*w1 + x2*w2) = f(w0 + w1 + w2) = 0
Теперь основная проблема заключается в том, что обычно используются функции активации (ReLUs, сигмоид, tanh, функция idendity ..., возможно, другие), являются неубывающими. Это означает, что если вы дадите ему больший ввод, вы также получите больший результат: f(a + b) >= f(a)
, если b >= 0
. Если вы посмотрите на вышеупомянутые четыре уравнения, вы увидите, что это проблема. Сравнивая второе и третье уравнения с первым, сообщите нам, что w1
и w2
должны быть положительными, так как они должны увеличить выход по сравнению с f(w0)
. Но тогда четвертое уравнение не будет работать, потому что оно даст еще больший выход, а не 0
.
Я думаю (но на самом деле не пытался проверить, может быть, я чего-то не хватает), что было бы возможно, если вы используете функцию активации, которая сначала поднимается, а затем снова вниз. Подумайте о чем-то вроде f(x) = -(x^2)
с некоторым дополнительным термином, чтобы сдвинуть его от источника. Я не думаю, что такие функции активации обычно используются в нейронных сетях. Я подозреваю, что они будут вести себя не так красиво, когда тренируются, и не могут быть правдоподобными с биологической точки зрения (помните, что нейронные сети, по крайней мере, вдохновлены биологией).
Теперь, в вашем вопросе вы также добавили дополнительную ссылку от neuron 1 to neuron 2, которую я проигнорировал в обсуждении выше. Проблема здесь все-таки остается прежней. Уровень активации в нейроне 1 всегда будет выше (или, по крайней мере, как высокий) второго и третьего случаев. Neuron 2, как правило, снова имеет неустранимую функцию активации, поэтому не сможет изменить это (если вы не нанесете отрицательный вес между скрытым нейроном 1 и выходным нейроном 2, в этом случае вы столкнетесь с проблемой и будете прогнозировать слишком высокую значение для первого случая)
EDIT: Обратите внимание, что это связано с ответом Аарона, который, по существу, также о проблеме неубывающей функции активации, просто используя более формальный язык. Дайте ему тоже возвышение!
Вам не нужны два входа для XOR? –
'Я знаю, что искусственная нейронная сеть (ANN) из 3 нейронов в 2 слоях может решить XOR' Не могли бы вы предоставить эскиз (или ссылку для) этого решения? 'Но чтобы минимизировать этот ANN, может ли только 2 нейрона разрешить XOR?' (Минимизировать?) Слоистую или не слоистую? – greybeard
"minify this ANN" = уменьшить число нейронов – johnlowvale