На плоскости, с помощью четырех прямых, обозначенных (w1), (w2), (w3) и (w4), выделена область D, которая представлена на рисунке 1. Границы области D можно интерпретировать как охраняемый периметр.
Спроектируйте и реализуйте нейронную сеть, которая бы со 100-процентным результатом распознавала принадлежность объекта защиты, представляемого точкой с координатами (x1, x2), к области D (считаем, что границы области принадлежат области).
Результатом работы нейронной сети должно быть значение 1, если объект защиты с координатами (x1,x2) принадлежит D или 0 в противном случае.
Сеть, которую вам необходимо построить, должна быть двухслойной.
В ее входном слое три значения – 1, x1 и x2 координаты точки (х1,х2).
В первом слое четыре персептрона, каждый из которых реализует разбиение плоскости на две полуплоскости одной из заданных прямых (w1)-(w4).
Во втором слое один персептрон, реализующий булеву функцию AND от четырех входов (выходов предыдущего слоя). f(u) – функция активации.
В графическом виде нужная нейросеть может быть представлена как на рисунке 2.
А в матричной форме – как на рисунке 3:
Конечно, представление сети в матричной форме неоднозначно, но мы постараемся устранить эту неоднозначность.
Коэффициенты векторов матрицы w нормируем. Так, чтобы w_2^i=\{-1,1\}, i=1,2,3,4. А если w_2^i=0, то w_1^i=\{-1,1\}
Вам необходимо построить нейронную сеть, которая распознавала бы принадлежность точки к области D, представленной на рисунке. В случае, если точка находится на границе либо внутри этой области – нейросеть должна выдавать значение 1, в противном случае – значение 0.
Решение должно быть получено при помощи двухслойной нейросети. Ответом на задание будет матрица w для работы с первым слоем и первый коэффициент h_0 матрицы для работы со вторым слоем.
Формат входных данных
В первой строке – число N – количество точек (x, y), принадлежность которых к области D надо определить с помощью нейронной сети.
Далее идут N строк, каждая из которых состоит из двух вещественных чисел, разделенных пробелами – координат точек.
Формат выходных данных
В первой строке – два натуральных числа N_1 и M_1, число строк и число столбцов матрицы для работы с первым слоем нейросети.
В каждой из следующих N_1 строк – коэффициенты строк матрицы. По M_1 целых чисел. Числа разделены пробелами. Порядок столбцов соответствует порядку линий (w1)-(w4).
В следующей строке – значение коэффициента h_0, вещественное число, округленное до двух цифр после точки.
В следующих P строках выводится по одному числу - 0 если соответствующая точка лежит вне прямоугольника или 1 – если внутри его или на границе.
Примеры
стандартный ввод | стандартный вывод |
---|
1
0.0 0.0
| 3 5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0.00
1
|
1
1 1.5
| 3 5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0.00
0
|
7
1.0 0.0
0.0 0.0
0.0 10.0
0.5 0.5
0.5 0.501
-0.5 -0.5
-0.5 -0.501
| 3 5
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0.00
1
1
0
1
0
1
0
|
В примере матрицы умышленно сделаны нулевыми