6. Ещё немного про XoR

6. Ещё немного про XoR#

Маша заметила, что на XoR ушло очень много персептронов. Она поняла, что первые два персептрона пытаются построить для третьего нелинейные признаки, которых нейросетке не хватает. Она решила самостоятельно добавить персептрону вход \(x_3 = x_1 \cdot x_2\) и реализовать XoR одним персептроном. Можно ли это сделать?

Решение

Маша обратила внимание на очень важную штуку. Нам не хватает признаков, чтобы реализовать XoR за один нейрон. Поэтому первый слой нейросетки сам их для нас придумывает. Чем глубже нейросетку мы построим, тем более сложные и абстрактные признаки она будет выделять из данных. Если добавить ко входу \(x_3 = x_1 \cdot x_2\), мы сделаем за нейросетку часть её работы и сможем обойтись одним нейроном. Например, вот таким:

\[ \hat y = [x_1 + x_2 - 2\cdot x_1 \cdot x_2 - 0.5 > 0] \]

Такая линия как раз будет задавать две скрещивающиеся прямые.

xor_features
\[\begin{equation*} \begin{aligned} & x_1 + x_2 - 2x_1x_2 - 0.5 = 0 \\ & 2x_1 + 2x_2 - 4x_1 x_2 - 1 = 0 \\ & 2x_1(1 - 2 x_2) + 2 x_2 - 1 = 0 \\ & (1 - 2 x_2) \cdot (2 x_1 - 1) = 0 \end{aligned} \end{equation*}\]

Получаем два решения. Прямую \(x_2 = 0.5\) и прямую \(x_1 = 0.5\).