2

Я знаю, что искусственные нейронные сети (ИНС) из 3 нейронов в 2 слоя может решить XORМожет ли ANN из 2 нейронов решить XOR?

Input1----Neuron1\ 
     \/  \ 
    /\   +------->Neuron3 
    / \  /
Input2----Neuron2/ 

Но Минимизировать этот ИНС, может только 2 нейроны (Neuron1 занимает 2 входа, Neuron2 принимать только один вход) решить XOR?

Input1 
     \ 
     \ Neuron1------->Neuron2 
    /
Input2/ 

Искусственный нейрон получает один или несколько входов ... https://en.wikipedia.org/wiki/Artificial_neuron

Смещение входа '1' предполагается, что всегда есть в обеих схемах.

Боковые ноты:

один нейрон может решить XOR, но с дополнительным входом x1 * x2 или x1 + x2 https://www.quora.com/Why-cant-the-XOR-problem-be-solved-by-a-one-layer-perceptron/answer/Razvan-Popovici/log

Форма ИНС во второй схеме может решить XOR с дополнительным входом, как выше до Neuron1 или Neuron2?

+2

Вам не нужны два входа для XOR? –

+1

'Я знаю, что искусственная нейронная сеть (ANN) из 3 нейронов в 2 слоях может решить XOR' Не могли бы вы предоставить эскиз (или ссылку для) этого решения? 'Но чтобы минимизировать этот ANN, может ли только 2 нейрона разрешить XOR?' (Минимизировать?) Слоистую или не слоистую? – greybeard

+0

"minify this ANN" = уменьшить число нейронов – johnlowvale

ответ

4

Нет, это невозможно, , если (может быть) вы начнете использовать некоторые довольно странные, необычные функции активации.

Давайте сначала проигнорируем нейрон 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: Обратите внимание, что это связано с ответом Аарона, который, по существу, также о проблеме неубывающей функции активации, просто используя более формальный язык. Дайте ему тоже возвышение!

+0

спасибо, ваш ответ достаточно ясен, это означает, что это невозможно для традиционной многоуровневой сети. Однако, что, если во второй диаграмме Neuron1 принимает 2 входа, как обычно, Neuron2 принимает 3 входа (вход 1, вход 2 и выход Neuron1)? Я знаю, что соединение нейронов таким образом не является традиционной многоуровневой сетью, а процесс обратного распространения тоже не то же самое, но это может быть новое решение? – johnlowvale

+1

@johnlowvale Интуитивно, я так думаю. В вашем первоначальном примере единственное соединение между нейронами 1 и 2 на самом деле ничего не меняет с точки зрения того, какие функции могут быть аппроксимированы. Я подозреваю, что таким же образом структура в вашем новом вопросе может быть расширена путем размещения лишнего скрытого нейрона между входами 1 и 2 слева, а нейрон 2 справа, без какого-либо влияния на то, какие функции могут быть аппроксимированы. И это будет хорошо известная сеть со скрытым слоем из 2 узлов. Он может тренироваться медленнее, хотя. Лучший способ убедиться в этом - это реализовать и попробовать! –

4

Невозможно.

Во-первых, вам нужно равное количество входов для входов XOR. Самый маленький ANN, способный к моделированию любой двоичная операция будет содержать два входа. Вторая диаграмма показывает только один вход, один выход.

Во-вторых, и это, вероятно, самое прямое опровержение, вывод функции XOR не является аддитивным или мультипликативным отношением, но может быть смоделирован с использованием их комбинации. Нейрон обычно моделируется с использованием таких функций, как сигмоиды или линии, которые не имеют stationary points, поэтому один слой нейронов может приблизительно приближаться к аддитивному или мультипликативному соотношению.

Это означает, что требуется минимум двух уровней обработки для создания операции XOR.


Этот вопрос поднимает интересную тему для ANN. Они хорошо подходят для определения нечетких связей, но имеют тенденцию требовать от не менее столько же сложности сети, как и любой математический процесс, который бы разрешил проблему без какого-либо нечеткого поля для ошибки. Используйте ANN, где вам нужно определить что-то, что выглядит в основном как то, что вы идентифицируете, и используйте математику, где вам нужно знать точно ли что-то соответствует набору конкретных черт.

Понимание различия между ANN и математикой открывает возможность объединения двух в более мощные расчетные трубопроводы, такие как идентификация возможных кругов в изображении с использованием ANN, использование математики для определения их точного происхождения и использование второго ANN для сравнения этих истоков с конфигурациями на известных объектах.

+0

входной слой не включен в мой вопрос – johnlowvale

+0

это уже 2 слоя в моем вопросе – johnlowvale

+2

Имейте два нейронов, подключенных к обоим входам с весом 1, «спереди» с порогом 2, подключенным к третьему входу «out» с весом -2 и пороговое значение 1 - просто _не_ слоистое _ и использование отрицательного веса_. – greybeard

Смежные вопросы