← Вернуться к списку

Может ли нейронная сеть решить функцию XOR без использования скрытых слоев?

Краткое содержание

XOR является нелинейным набором данных. Его нельзя решить с помощью нейронных сетей, основанных на любом количестве перцептронов, но когда перцептроны применяют функцию активации сигмоиды, они могут решить набор данных XOR. Однако я столкнулся с источником, в котором утверждается, что следующее утверждение ложно: «Нейронная сеть с двумя слоями (один входной слой; один выходной слой; без скрытых слоев) может представлять функцию XOR». Тем не менее, я обучил модель без скрытых слоев, которая дает следующий результат: [INFO] data=[0 0], ground-truth=0, pred=0.5161, step=1 [INFO] data=[0 1], ground-truth=1, pred=0.5000, step=1 [INFO] data=[1 0], ground-truth=1, pred=0.4839, step=0 [INFO] data=[1 1], ground-truth=0, pred=0.4678, step=0 Таким образом, если я использую классификатор softmax, я могу разделить набор данных XOR с помощью нейронной сети без каких-либо скрытых слоев. Это делает утверждение неверным. Истинно ли, что мы не можем разделить нелинейный набор данных без скрытых слоев в нейронной сети? Если да, где я ошибаюсь в своем рассуждении из обучения нейронной сети?

Полный текст

Может ли нейронная сеть решить функцию XOR без использования скрытых слоев? Задать вопрос

Задан 5 лет, 8 месяцев назад Изменен сегодня Просмотрен 3k раз

Задан 5 лет, 8 месяцев назад

2 $\begingroup$ XOR — это нелинейный набор данных. Его нельзя решить с помощью любой сети перцептронов, но если перцептроны применяют сигмоидальную функцию активации, они могут решить набор данных XOR. Однако я столкнулся с источником, где утверждается, что следующее утверждение ложно: Двухслойная (один входной слой; один выходной слой; без скрытого слоя) нейронная сеть может представлять функцию XOR. Однако я обучил модель без скрытых слоев, которая дает следующий результат: [INFO] data=[0 0],ground-truth=0, pred=0.5161, step=1 [INFO] data=[0 1],ground-truth=1, pred=0.5000, step=1 [INFO] data=[1 0],ground-truth=1, pred=0.4839, step=0 [INFO] data=[1 1],ground-truth=0, pred=0.4678, step=0 Таким образом, если я использую классификатор softmax, я могу разделить набор данных XOR с помощью НН без каких-либо скрытых слоев. Это делает утверждение неверным. Всегда ли мы не можем разделить нелинейный набор данных без скрытых слоев в нейронной сети? Если да, то где я ошибаюсь в своем рассуждении при обучении НН, которое я провел выше? нейронные сети нелинейная регрессия проблема XOR Поделиться Улучшить этот вопрос Следовать изменен 14 минут назад Mr. AI Cool 1,332 2 2 серебряных бейджа 21 21 бронзовых бейджа задан 4 мая 2020 в 12:54 Hrushi 169 1 1 серебряный бейдж 10 10 бронзовых бейджей $\endgroup$ 4 $\begingroup$ Что, по-вашему, делает softmax? Какое изменение произойдет, если вы замените сигмоиду на softmax, когда выходной слой состоит всего из одного нейрона? $\endgroup$ SajanGohil – SajanGohil 2020-05-04 13:00:56 +00:00 Прокомментировано 4 мая 2020 в 13:00 $\begingroup$ Я имел в виду размещение softmax после последнего слоя, но теперь понимаю, что это уже не будет НН без скрытых слоев $\endgroup$ Hrushi – Hrushi 2020-05-04 13:06:13 +00:00 Прокомментировано 4 мая 2020 в 13:06 1 $\begingroup$ последний слой имеет веса, вы просто заменяете сигмоиду на softmax $\endgroup$ SajanGohil – SajanGohil 2020-05-04 13:07:24 +00:00 Прокомментировано 4 мая 2020 в 13:07 $\begingroup$ Но добавление softmax или сигмоиды сделает выход сети нелинейным (поскольку сигмоида или softmax — это нелинейные функции), и XOR — это тоже нелинейный набор данных. Есть ли какое-либо доказательство/обоснование того, что мы не можем разделить $\endgroup$ Hrushi – Hrushi 2020-05-04 13:14:59 +00:00 Прокомментировано 4 мая 2020 в 13:14 Добавить комментарий | 1 Ответ 1 Сортировать по: Сбросить к значению по умолчанию Наибольший балл (по умолчанию) Дата изменения (от новых к старым) Дата создания (от старых к новым) 3 $\begingroup$ Softmax — это распределение вероятностей, которое вы используете, когда хотите получить вероятности для всех множественных классов, которые вы предсказываете, которые не являются независимыми, т. е., exp(xi)/sum(exp(xj) для j во всех x), где xi — оценка одного нейрона, поэтому softmax хорош, если у вас более одного нейрона, но для всего одного нейрона (в данном случае) выход softmax всегда будет равен 1 (exp(xi)/exp(xi)). Теперь давайте визуализируем ваш набор данных, т. е. построим точки XOR как функцию X, Y на координатном пространстве. , [источник: https://www.researchgate.net/figure/The-exclusive-or-XOR-function-is-a-nonlinear-function-that-returns-0-when-its-two_fig4_322048911] Теперь, что бы вы ни делали, вы не можете разделить точки одной прямой линией wx+b, и после передачи в сигмоиду вы просто сжимаете значения для них, т. е. обрезанную wx+b. Теперь это все еще линейное уравнение. Теперь, когда вы добавляете еще один слой, скрытый, вы можете снова работать с первым выходом, который, если вы сжимаете между 0 и 1 или используете что-то вроде активации ReLU, создаст некоторую нелинейность, иначе это будет просто (w2(w1*x + b1)+b2, что снова является линейным уравнением, не способным разделить классы 0 и 1. Таким образом, после добавления скрытого слоя и передачи через функцию активации вы получаете нелинейный выход, например, с сигмоидой вы получаете w2*(1/+exp(w1*x+b1))+b2, который имеет довольно нелинейный член x, и после передачи через сигмоиду снова, вы ар