Формализация задачи
Из приведенного алгоритма следует, что многослойный персептрон может рассчитывать выходной вектор y для любого входного вектора x, т.е. давать значение некоторой векторной функции y = f(x) . Следовательно, условие любой задачи, которая может быть поставлена персептрону, должно являться множеством векторов {x1, …, xS} с N1 компонентами каждый. Решением задачи будет множество векторов {y1, …, yS} с N0 компонентами: ys = f(xs), где s = 1..S – номер предъявляемого образа.
Персептрон формирует отображение X → Y для всех x X, что на практике означает построение отображения для произвольного количества точек:
здесь множество векторов x1...xS —представляет собой формализованное условие задачи, а множество y1 … yS — формализованное решение. Задача формализации, т.е. выбора смысла, которым наделяются компоненты входного и выходного векторов, пока решается только человеком на основе практического опыта. Жестких рецептов формализации для нейронных сетей пока не создано. Рассмотрим, как выбирается смысл входных и выходных данных в некоторых случаях.
Примеры формализации задач
1. Задача классификации.
Некоторый объект характеризуется несколькими параметрами p1, ..., pN, причем имеется M классов объектов, C1, ..., CM. При наблюдении объекта можно рассчитать или измерить его параметры, характеризуемые вектором p
i
где
0 ≤ cm ≤ 1 и . (1)
Здесь cm
- вероятность,
с которой объект относится к классу Cm.
Например, c1
= 0,9, с2
= 0,1 означает, что объект
1
2
В процессе обучения сеть строит отображение P → C. Целиком получить это отображение не возможно, но можно получить произвольное количество пар (p → c), связанных отображением. Для произвольного вектора p на входе мы можем получить приближенные вероятности принадлежности к классам на выходе.
Часто оказывается, что компоненты выходного вектора могут быть меньше 0 или больше 1, а второе условие (1) выполняется лишь приблизительно. Неточность — следствие аналоговости нейронных сетей. Большинство результатов, получаемых с помощью нейросетей, неточно. Кроме того, при обучении сети указанные условия, накладываемые на вероятности, не вводятся в сеть непосредственно, а неявно содержатся во множестве данных, на которых обучается сеть. Это — вторая причина некорректности результата.
Существуют и другие способы формализации.
2. Распознавание букв алфавита.
Будем представлять буквы в виде точечных изображений (рис. ).
Рис. . Точечное изображение.
Темной клетке-пикселу на изображении соответствует Iij = 1 , светлому — Iij = 0 . Задача состоит в том, чтобы определить по изображению букву, которая была предъявлена.
Построим МСП с Ni х Nj входами, где каждому входу соответствует один пиксел: xk = Iij . Яркости пикселов будут компонентами входного вектора.
В качестве выходных сигналов выберем вероятности того, что предъявленное изображение соответствует данной букве:
Сеть рассчитывает выход:
где выход c1 = 0,9 означает, к примеру, что предъявлено изображение буквы "А", и сеть уверена в этом на 90 %, выход c2 = 0,1 — что изображение соответствовало букве "Б" с вероятностью 10 % и т.д.
Существует другой способ: входы сети выбираются так же, а выход – только один, номер m предъявленной буквы. Сеть учится давать значение m по предъявленному изображению I:
(Iij) → m
В этом случае недостатком является то, что буквы, имеющие близкие номера m, но непохожие изображения, могут быть перепутаны сетью при распознавании.
Выбор количества нейронов и слоев
Не существует строго определенной процедуры для выбора количества нейронов и количества слоев в сети. Чем больше количество нейронов и слоев, тем шире возможности сети, тем медленнее она обучается и работает и тем более нелинейной может быть зависимость вход-выход.
Количество нейронов и слоев связано:
1) со сложностью задачи;
2) с количеством данных для обучения;
3) с требуемым количеством входов и выходов сети;
4) с имеющимися ресурсами: памятью и быстродействием машины, на которой моделируется сеть;
Были попытки записать эмпирические формулы для числа слоев и нейронов, но применимость формул оказалась очень ограниченной.
Если в сети слишком мало нейронов или слоев:
1) сеть не обучится и ошибка при работе сети останется большой;
2) на выходе сети не будут передаваться резкие колебания аппроксимируемой функции y(x).
Превышение требуемого количества нейронов тоже мешает работе сети.
Если нейронов или слоев слишком много:
1) быстродействие будет низким, а памяти потребуется много — на фон-неймановских ЭВМ;
2) сеть переобучится: выходной вектор будет передавать незначительные и несущественные детали в изучаемой зависимости y(x), например, шум или ошибочные данные;
3) зависимость выхода от входа окажется резко нелинейной: выходной вектор будет существенно и непредсказуемо меняться при малом изменении входного вектора x;
4) сеть будет неспособна к обобщению: в области, где нет или мало известных точек функции y(x) выходной вектор будет случаен и непредсказуем, не будет адекватен решаемой задаче.
Персептронная представляемость
Сложность задач, решаемых персептроном, существенно зависит от количества слоев. Рассмотрим эти различия.