В последней части мы рассмотрели модели персептрона. В этом блоге мы сосредоточимся на проблемах, которые он может и не может решить.

Из предыдущего блога мы знаем, что модель персептрона предоставляет линейное уравнение, которое можно использовать для различения классов. Примером таких задач являются задачи с вентилями ИЛИ и И, которые показаны ниже.

Рассмотрим три двумерные задачи: И и ИЛИ. Если мы представим эти задачи геометрически, бинарные входные шаблоны образуют вершины квадрата. Входные шаблоны 00 и 10 образуют нижний левый и верхний левый углы квадрата, а шаблоны 01 и 11 формируют нижний правый и верхний правый углы квадрата.

Теперь возьмем вентиль XOR, таблица показана ниже.

Если мы построим схему XOR точно так же, как И и ИЛИ, мы получим график, как показано ниже:

Из графика видно, что одна линия не может разделить данные. Мы также можем ясно понять эту проблему с помощью математических неравенств. Мы анализируем логическую таблицу XOR. Словесное описание проблемы XOR заключается в том, что выход должен быть включен, когда включен любой из входов, но не когда включены оба. Для решения этой задачи персептрон должен выполнить четыре неравенства:

Соблюдая неравенства, становится очевидным, что выполнение всего уравнения невозможно, так как и w1, и w2 должны быть больше, а их сумма w1 + w2 меньше.

По приведенному выше описанию мы можем сказать, что все проблемы, которые можно решить, разделив два класса гиперплоскостью, называются линейно разделимыми. Проблема XOR (в представленном виде) не является линейно разделимой проблемой.

Чтобы сделать задачу XOR линейно разделимой в трехмерной версии, первые два входа точно такие же, как исходный XOR, а третий вход — это AND первых двух. То есть input3 включен только тогда, когда input1 и input2 также включены. Добавляя соответствующую дополнительную функцию, можно разделить два класса с полученной плоскостью. Это представлено на графике ниже.

Вместо перекодирования входного представления есть еще один способ сделать задачу линейно разделимой — добавить дополнительный (скрытый) слой между входными и выходными данными. При наличии достаточного количества скрытых единиц любую неразрешимую задачу можно перекодировать в линейно разделимую.

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