2009-12-12 1 views
5

Является ли нейронная сеть с 2 входными узлами, двумя скрытыми узлами и выходом, предназначенным для решения проблемы XOR при условии отсутствия смещения? Или это может застрять?Проблема XOR разрешима с нейронной сетью 2x2x1 без предубеждений?

+0

Есть больше ограничений на отсутствие смещения, НЕ, например, невозможно. –

+0

вас может заинтересовать этот ответ http: // stackoverflow.com/questions/38561182/neural-network-xor-gate-not-learning/38767930 # 38767930 –

ответ

5

Оставьте предубеждение. Он не видит значения ваших входов.

С точки зрения аналоговой идентичности, мне нравится думать о смещении как смещение c-значение в прямолинейном уравнении: y = mx + c; он добавляет независимую степень свободы вашей системы, на которую не влияют входы в вашу сеть.

1

Если я правильно помню, у меня нет XOR без предвзятости.

+0

У меня есть (я надеюсь, что работает) нейронный сетевой класс, который, кажется, способен решить его с помощью 2 входов 3 скрытых нейрона и 1 выход , но не может с 2 скрытыми нейронами. Достаточно ли при вычислении net = w1x1 + w2x2 просто добавить 1 к уравнению, net = w1x1 + w2x2 + 1 или этого еще недостаточно? я должен иметь 3-й вес? Спасибо –

+2

Я думаю, что в вашем примере с 3 скрытыми нейронами один из нейронов действует как предвзятость, вот почему он работает. Я не могу придумать пример, который будет работать с двумя скрытыми узлами. В чем причина не использовать предвзятость? –

1

Я построил нейронную сеть без предубеждений, а архитектура 2x2x1 решает XOR в 280 эпох. Новичок в этом, так что не знал в любом случае, но он работает, так что это возможно.

Привет,

0

Да, вы можете если использовать функцию активации как Relu (Р (х) = тах (0, х))

Пример весов такой сети являются:

Layer1: [[-1, 1], [1, -1]] 
Layer2: [[1], [1]] 

Для первого (скрытого) слоя:

  • Если вход [0,0], оба узла будут иметь активацию 0: РЕЛУ (-1 * 0 + 1 * 0) = 0, ReLU (1 * 0 + -1 * 0) = 0
  • Если вход [1,0], один узел будет иметь активацию 0 ReLU (-1 * 1 + 1 * 0) = 0 и другая активация 1 ReLU (1 * 1 + -1 * 0) = 1
  • Если вход [0,1], один узел будет иметь активацию 1 ReLu (-1 * 0 + 1 * 1) = 1, а другая активация 0 ReLU (1 * 0 + -1 * 1) = 0
  • Если вход [1,1], оба узла будут иметь активацию 0: ReLU (- 1 * 1 + 1 * 1 = 0) = 0, РЕЛУ (1 * 1 + -1 * 1 = 0) = 0

Для второго (выходного) слоя: с весами [[1 ], [1]] (и не может быть никаких отрицательных активаций из предыдущего слоя из-за РЕЛУ), слой просто действует как суммирования активаций в слое 1

  • Если вход [0,0], сумма активаций в предыдущем слое 0
  • Если вход [1 , 0], сумма активаций в предыдущем слое равна 1
  • Если вход [0,1], сумма активаций на предыдущем слое равна 1
  • Если вход [1,1] сумма активаций в предыдущем слое равна 0

Хотя этот метод совпадает в соответствии с приведенным выше примером, он ограничивается использованием метки нуля (0) для ложных примеров задачи XOR. Если, например, мы использовали для False примеров и двойки для True примеров, этот подход больше не работал.

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