Логические нейронные сети

Трассировка логической структуры нейросети

Разбить на страницы
Показывать лекцию целиком

"Чтоб бешеной пляской землю овить,

скучную, как банка консервов,

давайте весенних бабочек ловить

сетью ненужных нервов!"

11.1. Задачи обучения нейросети методом трассировки

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

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

Обобщим метод трассировки, ориентировав его на произвольно структурированное (использующее скобки) логическое описание СПР, в частности, – на его дистрибутивную форму.

Начнем с рассмотрения аналогий.

Задачу трассировки соединений в логической матрице для построения электронной схемы можно представить в двух вариантах.

  • На плате размещены логические элементы. Среди них заданы входные и выходные. Необходимо соединить элементы так, чтобы получить требуемое функциональное устройство. (При ориентации на технологии изготовления электронных плат, например печатных, учитывают дополнительные требования минимизации числа пересечений связей.)
  • На плате размещены логические элементы и в некоторой конфигурации введены связи между ними. Топология связей, при выделении входов и выходов, может быть как случайной, так и регулярной. Необходимо подтвердить существование некоторых связей и ликвидировать другие так, чтобы сформировать требуемое функциональное устройство. При этом может допускаться введение минимального количества недостающих связей.
  • Как правило, при таких постановках задачи трассировки не рассматриваются обратные связи.

    Исходя из аналогий, обусловленных общей логической базой, сформулируем и решим две задачи построения обученной (обучения) нейронной сети в соответствии с ее специализацией в составе СПР.

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

    11.2. Формирование обученной нейросети на основе заданного множества нейроподобных элементов

    Под нейроподобным элементом, который мы условились называть нейроном, подразумевается не столько овеществленный образ – электронный аналог, программный модуль и др., сколько реализуемая им передаточная функция.

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

    Скобочная запись задает последовательность формирования обученной нейросети. Процесс такого формирования (обучения) заключается в рекурсивной коммутации подструктур – термов на основе содержимого скобок в соответствии с их вложенностью.

    Продолжим рассмотрение примера на основе логического описания (10.1). Перепишем его, используя символ обобщенной операции, реализуемой передаточной функцией, но сохранив скобки:

    $$\begin{array}{l} ((X_{1} \ X_{7})\ (X_{3} \ X_{5} )) \(X_{10} \ X_{13} ) \to R_{1} ,\\ ((X_{1} \ X_{7} )\ (X_{4} \ X_{6} )) \(X_{2} \ X_{12} \ X_{14} ) \to R_{2} ,\\ X_{8} \ (X_{1} \ X_{10} ) \to R_{3} ,\\ (Х_{9} \ (Х_{1} \ Х_{10} ))\ (Х_{2} \ Х_{15} ) \to R_{4} ,\\ Х_{2} \(Х_{11} \ Х_{13} ) \to R_{5} .\end{array}$$

    Прежде всего из множества Х необходимо выделить нейроны входного – рецепторного – и выходного слоев. Исходя из этого, а также, задав количество необходимых и предполагаемых нейронов разного функционального назначения, закрепим и переобозначим нейроны: Х = {X1, ..., X15, 1, ..., 11, R1, ..., R5}. Нейроны 1, ..., 11 в будущих построениях исполнят роль нейронов скрытых слоев – скрытых нейронов.

    Составим матрицу следования, первоначально содержащую "пустые" элементы. На рис. 11.1 представлена такая матрица S, соответствующая уже полученному решению. Однако пока не следует учитывать единичные элементы: их необходимо сформировать в процессе решения задачи.

    Для удобства пользования и учитывая, что данная матрица при отсутствии обратных связей – треугольная, она выполнена в виде "шахматки", где диагональные элементы отмечены.

    Итак, чтобы сигналы возбуждения направленно проходили от входных нейронов к выходным, необходимо сформировать связи с единичными весами, используя скрытые нейроны. Пусть скрытые нейроны образуют ресурс – множество М свободных нейронов, первоначально M = {1, ..., 11}.

    (рис 11.1) Матрица следования после обучения нейросети

    Организуем последовательный анализ выражений (11.1).

    При просмотре первого выражения, анализируя открывающие и закрывающие скобки, найдем первую скобку самого высокого уровня вложенности. Она соответствует выражению 1 Х7). Закрепим за ним первый свободный нейрон 1 из М, предположив тем самым, что он выполняет аналог операции, указанной в скобках. Сформируем уточненную строку матрицы следования S, соответствующую нейрону 1, записав веса связей, равные единице, в столбцы, соответствующие нейронам Х1 и Х7.

    Обозначим исследованную "скобку" именем нейрона 1 и перепишем логическое выражение:

    $$(1\ (Х_{3 }\ Х_{5})) \ (Х_{10 }\ Х_{13}) \to R_{1 }.$$

    Продолжим поиск "скобок" самого высокого уровня вложенности.

    Находим "скобку" 3 Х5). В общем случае такая "скобка" могла встретиться ранее, и за ней мог быть закреплен скрытый нейрон. В целях экономии нейронов сформируем уточненную строку матрицы следования, записав единицы в столбцах, соответствующих нейронам Х3 и Х5. Однако, прежде чем поместить строку на ее место, проверим, нет ли в S идентичной строки? В данном случае такой строки нет. Тогда соотнесем полученную строку с очередным свободным нейроном 2 и поместим ее в S.

    Перепишем логическое выражение, заменив обработанную "скобку":

    (12)(Х10Х13)->R1 .

    Продолжая так же, закрепим нейрон 3 за "скобкой" 10Х13) и сформируем соответствующую этому нейрону строку матрицы S. Запись логического выражения примет вид

    (12)3 -> R1 .

    Следующий обзор этой записи приводит к замене "скобки" $$(1\wedge 2)$$ именем нейрона 4 и к формированию строки матрицы следования, соответствующей этому нейрону. Эта строка содержит единицы в строках, соответствующих нейронам 1 и 2. Запись логического выражения примет вид

    4 3 -> R1.

    Отсутствие скобок говорит о необходимости введения связей 4 -> R1 и 3 -> R1. Таким образом, строка, соответствующая нейрону R1 выходного слоя, содержит единицы в столбцах, соответствующих нейронам 3 и 4.

    Трассировка решения R1 закончена.

    Анализируем логическое выражение

    ((X1 X7 ) (X4 X6 )) (X2 X12 X14 ) -> R2 .

    Строка матрицы S, сформированная по "скобке" 1Х7), совпадает со строкой, соответствующей нейрону 1. Значит, можно "сэкономить", повторно использовав этот нейрон. Преобразуем запись:

    (1 (X4 X6 )) (X2 X12 X14 ) -> R2 .

    За следующей "скобкой" 4 Х6) закрепим нейрон 5, сформировав для него строку матрицы S, и запись примет вид

    (1 5) (X2 X12 X14 ) -> R2 .

    Продолжив ее обзор, получим новый вид записи (1 5) 6 -> R2 , а затем 7 6 -> R2 . Сформированные при этом строки матрицы S показаны на рисунке. Аналогично анализируются другие логические выражения (11.1), что не вносит новых особенностей в неформально изложенный алгоритм.

    Нейросеть, представленная матрицей следования S, близка к нейросети, показанной на рис. 10.2.

    11.3. Оптимальное закрепление рецепторов за событиями в нейросети заданной структуры

    Если задана структура нейросети (подразумевается ее "овеществленная" проекция на плоскость или даже реализация на плате, на кристалле, на решетке связанных процессорных элементов и т.д.), то от распределения рецепторов между событиями зависит возможность формирования отдельных термов без введения дополнительных связей. Например, если достоверность событий Х1 и Х7 подается на входы, значительно отстающие друг от друга, то при заданной, например, регулярной структуре связей могут возникнуть большие трудности в реализации аналога конъюнкции $$Х_{1} \wedge Х_{7}$$, используемой далее в качестве отдельного терма, который входит в состав других логических конструкций. Необходимое объединение этих событий на входе одного нейрона может быть достигнуто даже не ранее, чем на выходном слое. Это потребует введения дополнительных связей для построения необходимого терма.

    Чтобы минимизировать число вводимых дополнительных связей или исключить их вовсе, необходимо на основе анализа конструкций, входящих в состав описания вида (11.1), построить предпочтительный ряд следования событий, реализующий компромисс в выборе минимальных расстояний между элементами этого ряда.

    Пусть на рис. 11.2 представлена структура нейросети, которую следует обучить в соответствии с логическим описанием (11.1) создаваемой СПР. На рисунке отображено окончательное решение задачи трассировки, и связи с единичными весами выделены. Произведем обоснование этого решения и, прежде всего, распределим события между нейронами- рецепторами.

    Воспользуемся следующим алгоритмом упорядочения событий.

  • Организуем сквозной просмотр всех выражений (11.1) и выпишем последовательность имен событий в порядке их обнаружения.
  • Просматриваем слева направо сформированную последовательность и находим имя события, входящего в эту последовательность неоднократно.
  • Находим среднее значение позиций, занимаемых именем найденного события в последовательности, и определяем для него ближайшее целое, не меньшее найденного.
  • Найденное значение определяет новый порядковый номер данного события в последовательности. Заносим имя события на новую позицию и исключаем другие его вхождения в последовательность.
  • Шаги 2-4 повторяем до достижения единственности вхождения всех имен событий в последовательность.
  • (рис 11.2) Обученная нейросеть

    В рассматриваемом примере последовательность имен событий первоначально имеет вид

    $$\begin{array}{l} \:| \overline{\phantom{Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6}}}\downarrow \\ Х_{1} Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6} Х_{2} Х_{12} Х_{14} Х_{8} Х_{1} Х_{10} Х_{9} Х_{1} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Имя Х1 входит неоднократно. Новая его позиция определяется как ](1 + 7 + 15 + 18) : 4[ = 11. После переноса Х1 на новое место (показано стрелкой) и исключения его прежних вхождений последовательность имен принимает вид

    $$\begin{array}{l} \:| \overline{\phantom{Х_{3} Х_{5}}}\downarrow \\ Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{7} Х_{4} Х_{6} Х_{1} Х_{2 }Х_{12} Х_{14} Х_{8} Х_{10} Х_{9} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новое место Х7 определяется как ](1 + 6) : 2[ = 4. Последовательность принимает вид

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}}\:|\overline{\phantom{Х_{13} Х_{4} Х_{6} Х_{1} Х_{2} Х_{12}}}\downarrow\\ Х_{3} Х_{5} Х_{7}Х_{10} Х_{13} Х_{4} Х_{6} Х_{1 }Х_{2} Х_{12} Х_{14} Х_{8} Х_{10} Х_{9} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новое место Х10 определяется как ](3 + 13 + 15) : 3[ = 11. Последовательность принимает вид

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}}\: | \overline{ \phantom{Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}}}\downarrow\\ Х_{3} Х_{5} Х_{7}Х_{13} Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}Х_{14} Х_{8} Х_{9} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новая позиция Х13 определяется как ](4 + 18) : 2[ =11. Получаем новый вид последовательности:

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}}\: |\overline{\phantom{ Х_{12} Х_{10}Х_{13}Х_{14} Х_{8}}}\downarrow \\ Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}Х_{13}Х_{14} Х_{8} Х_{9} Х_{2} Х_{15} Х_{2}Х_{11} \end{array}$$

    Отыскивается новое место Х2, как ](7 + 14 + 16) : 3[ = 13, и последовательность имен событий принимает окончательный вид, отображенный на рисунке:

    $$Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}Х_{12} Х_{10}Х_{13}Х_{14} Х_{8} Х_{2}Х_{9} Х_{15} _{}Х_{11}.$$

    Заметим, что при реализации на компьютере "кнопки" или окна на панели управления могут располагаться в удобном для пользователя порядке, соединяясь с закрепленными за ними рецепторами.

    11.4. Обучение-трассировка нейросети заданной структуры

    Как видно из примера, рассмотренного в лекции 10, если нейросеть не может быть сведена к однослойной на заданной графической структуре, то при трассировке необходимо следовать структуре логического выражения. Это требует такой структуризации обучаемой нейросети, при которой "скобки" в порядке их вложенности соответствуют выделенным подструктурам сети. Тогда подструктуры нейросети образуют расширяемый ресурс, предоставляемый для реализации "скобок", – от максимального уровня вложенности до нулевого.

    В рассматриваемой сети (рис. 11.2) максимальная длина статического пути возбуждения равна трем. Более того, данная нейросеть является трехслойной в "традиционном" смысле [13, 15, 19, 20], т.е. в ней нет связей "через слой".

    Запишем первое логическое выражение из описания (11.1):

    ((X1 X7) (X3 X5)) (X10 X13) -> R1.

    Ему соответствует максимальная длина логических цепочек, равная трем, что следует из порядка вложенности скобок. Тогда справедливо предположение о том, что "скобки" (X1X7) и (X3X5) могут быть реализованы не далее чем на первом слое (3 - 2 = 1), чтобы не воспрепятствовать формированию подструктур, в которые они входят. Охватывающая их "скобка" ((X1X7)(X3X5)) должна быть реализована на втором слое. Не далее чем на этом же, т.е. на невыходном, слое может быть реализована и скобка (X10 X13).

    Предположим, что сквозная нумерация позволяет выделить подмножества нейронов, принадлежащих одному слою или, в общем случае, имеющих одинаковую максимальную длину статической цепочки, как показано на рис. 11.2. Действительно, нейроны 1-12 образуют первый слой нейросети, нейроны 13-21 – второй слой, третий слой – выходной. Тогда и в описывающей нейросеть матрице следования S, наличие которой лишь подразумевается ввиду ее громоздкости, можно отчеркнуть строки и столбцы нейронов, принадлежащих, в данном случае, одному слою. (Напомним, что в матрице S связи обозначаются значениями весов, первоначально равными нулю.)

    Построим матрицу S1 (рис. 11.3) на основании выражения, определяющего решение R1.

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

    Приступим к реализации первой "скобки" третьего уровня вложенности.

    В столбцах, соответствующих событиям Х7 и Х1, ведя поиск в пределах нейронов первого слоя, найдем первую строку, которая содержит максимальное число нулей, указывающих наличие связей. Такая строка, где нули находятся во всех выделенных столбцах, соответствует нейрону 3. В матрицах S и S1 меняем эти нули на единицы – формируем единичные веса связей. В матрице S при строке, соответствующей нейрону 3, указываем число введенных единиц, m3 = 2. В записи выражения меняем "скобку" на имя нейрона, реализующего ее. Запись принимает вид

    (3 (X3 X5)) (X10 X13) -> R1.

    Перейдем к реализации "скобки" (X3 X5) того же уровня вложенности.

    (рис 11.3) Матрица S1 после трассировки решения R1

    В столбцах, соответствующих нейронам X3 и X5, найдем строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 1 первого слоя. Меняем в S и S1 найденные нули на единицы, в матрице S указываем значение m1 = 2. Преобразуем запись выражения:

    (3 1) (X10 X13) -> R1.

    Скобка (X10 X13) может быть реализована как на первом, так и на втором слое. В столбцах, соответствующих нейронам X10 и X13, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 6. Меняем выделенные нули на единицы и указываем число таких единиц в S: m6 = 2. Запись выражения преобразуется:

    (3 1) 6 -> R1.

    Анализируя столбцы, соответствующие нейронам 1 и 3, находим нейрон 13 второго слоя, реализующий скобку (3 1), отмечаем значение m13 = 2. Запись выражения преобразуется к виду

    13 6 -> R1.

    Анализируя столбцы, соответствующие нейронам 6 и 13, включив в рассмотрение нейроны выходного слоя, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 15. Однако она содержит нуль лишь в столбце нейрона 6. Меняем этот нуль в матрицах S и S1 на единицу, полагаем m15 = 1. Запись выражения преобразуется к виду

    1315 -> R1.

    Затем реализуем единственную "скобку" нулевого уровня вложенности с помощью нейрона R1. Трассировка первого решения закончена. В результате ее введены отмеченные на рисунке связи Х3 -> 1, Х5 -> 1, Х7 -> 3, Х1 -> 3, Х10 -> 6, Х13 -> 6, 1 -> 13, 3 -> 13, 6 -> 15, 13 -> R1, 15 -> R1.

    Для трассировки решения

    ((X1X7)(X4X6))(X2X12 X14) -> R2

    построим матрицу следования S2 (рис. 11.4). Для этого исключим из матрицы S все нейроны- рецепторы, не участвующие в приведенной выше записи выражения, а также неиспользуемые нейроны выходного слоя. Затем с помощью одного просмотра сверху вниз исключим представительство тех нейронов, где число единиц в строках меньше соответствующего значения m.

    При анализе "скобки" (X1 X7) обнаруживаем в столбцах, соответствующих нейронам X1 и X7, две единицы в строке, соответствующей нейрону 3, при том, что m3 = 2. Запись выражения преобразуется к виду

    (3 (X4 X6)) (X2 X12 X14) -> R2.

    В строке, соответствующей Х4 и Х6, нет строки, содержащей единицы во всех позициях. Находим первую строку, соответствующую нейрону первого слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка, содержащая нули во всех позициях, соответствует нейрону 2. В матрицах S и S2 меняем выделенные нули на единицы, фиксируем значение m2 = 2. Запись выражения преобразуется:

    (3 2) (X2 X12 X14) -> R2.

    В соответствии с уровнем вложенности присутствующие в записи "скобки" могут быть реализованы как на первом, так и на втором слое нейросети. В столбцах, соответствующих Х2, Х12, Х14, нет строки нейрона первого или второго слоя, содержащей единицы во всех столбцах. Находим первую строку, содержащую максимальное число нулей при нулевом значении m. Такая строка соответствует нейрону 7. Меняем выделенные нули на единицы, фиксируем значение m7 = 2. Запись выражения принимает вид

    $$(3 \ 2) \(X_2 \ 7) \to R_2.$$

    Преобразование первой скобки производится с помощью нейрона 14 аналогично предыдущему. Фиксируем значение m14 = 2 и формируем новую запись:

    14 (X2 7) -> R2.

    Выделяем столбцы, соответствующие нейронам Х2 и 7, и так как в этих столбцах нет строки, соответствующей нейронам второго слоя и содержащей единицы во всех позициях (нейрон 7 принадлежит первому слою и может участвовать в термах, создаваемых на втором слое), находим первую строку, соответствующую нейрону второго слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка соответствует нейрону 16, который становится преемником лишь нейрона 7. Меняем выделенный нуль на единицу, фиксируем значение m16 = 1. Запись выражения принимает вид

    14 (X216) -> R2.

    Теперь выделяем столбцы нейронов Х2 и 16. Находим в них строку с максимальным числом нулей при нулевом значении m не далее, чем на втором слое нейронов. Такая строка соответствует нейрону 9. Меняем выделенный нуль на единицу, полагаем m9 = 1. Запись принимает вид

    14 (9 16) -> R2.

    Выделяем столбцы, соответствующие нейронам 9 и 16. В них находим строку с максимальным числом нулей и при нулевом m не далее чем на втором слое нейронов. Такая строка соответствует нейрону 18.

    Однако прежде чем использовать этот нейрон, заметим, что здесь мы впервые сталкиваемся с необходимостью введения дополнительной связи. Ведь нейрон 16 принадлежит "предельному" слою для реализованного им терма. Его объединение с нейроном 18 возможно лишь на слое более высокого уровня, что не позволяет реализовать все выражение. Нейрон 9 принадлежит первому слою, т.е. к предыдущему по отношению к нейрону 16. Его объединение с нейроном 16 с помощью непосредственной связи 9 -> 16 обеспечивает правильную реализацию "скобки".

    Таким образом, сформулируем правило: если "скобка" объединяет нейроны, среди которых один принадлежит слою максимального уровня, допустимого для формирования терма, а другие нейроны, образующие эту же "скобку", принадлежат предыдущему слою, то необходимо ввести дополнительные связи, соединяющие эти нейроны с первым, если такие связи не были заданы, и присвоить им единичный вес.

    Введем связь 9 -> 16 и уточним значение m16 = 2. Запись выражения принимает вид

    14 16 -> R2,

    что с очевидностью приводит к окончанию трассировки второго решения, как показано на рис. 11.4.

    (рис 11.4) Матрица S2 после трассировки решения R2

    Заметим, что дополнительная связь Х2 -> 7, введенная на первом этапе реализации "скобки", возможно, исключила бы сложный анализ создавшейся ситуации.

    Аналогично, без элементов новизны, производится трассировка решения R3 с помощью матрицы S3 (рис. 11.5) введением единичных весов связей Х1 -> 5, Х10 -> 5, Х8 -> 8, 5 -> 17, 8 -> 17, 17 -> R3 .

    Произведем трассировку решения R4, записав определяющее его выражение

    91 Х10 )) (Х2 Х15 ) -> R4 .

    Матрица S4 представлена на рис. 11.6.

    (рис 11.5) Матрица следования S3 после трассировки решения R3

    Выделим столбцы, соответствующие нейронам Х1 и Х10, и находим в них строку, соответствующую нейрону 5, в которой единицы записаны во всех позициях, m5 = 2. Заменим "скобку" именем нейрона 5:

    9 5) 2 Х15 ) -> R4 .

    "Скобку" 2 Х15) реализуем с помощью нейрона 11, и запись принимает вид

    9 5)11-> R4.

    Анализ первой скобки приводит к единичному весу связи Х9 -> 10, а затем 10 -> 19. Запись выражения принимает вид

    (195)11-> R4.

    Дальнейший анализ "скобки" свидетельствует о том, что нейрон 19 принадлежит слою максимального уровня, на котором эта "скобка" может

    быть реализована. Нейрон 5 принадлежит предыдущему слою. Тогда по правилу, изложенному выше, вводим дополнительную связь 5 -> 19. Полагаем m19 = 2. Запись выражения принимает вид

    1911-> R4.

    Полученная "скобка" может быть реализована на выходном слое нейронов. Анализируем столбцы, соответствующие нейронам 11 и 19, находим в них первую строку с максимальным числом нулей при нулевом значении m, соответствующую нейрону 20, и вводим единичный вес связи 11 -> 20. Запись выражения принимает вид

    1920-> R4.

    Однако анализ столбцов, соответствующих нейронам 19 и 20, свидетельствует об отсутствии связей этих нейронов с нейроном R4. Введем дополнительные связи 19 -> R4 и 20-> R4.

    Трассировка решения R4 закончена.

    (рис 11.6) Матрица следования S4 после трассировки решения R4

    Для трассировки решения R5 составим матрицу S5 (рис. 11.7) и запишем в первоначальном виде логическое выражение

    Х211 Х13) -> R5.

    Выделяем столбцы, соответствующие нейронам Х11 и Х13. В них нет строки, соответствующей нейрону не более чем второго слоя и содержащей единицы. Находим первую строку, содержащую максимальное число нулей при нулевом значении m. Эта строка соответствует нейрону 12. Меняем нуль на единицу, положив m12= 1 ; запись выражения принимает вид

    Х2(12 Х13) -> R5.

    Продолжаем анализ "скобки", в результате чего запись выражения принимает вид

    Х2(21 Х13) -> R5.

    Вновь выделяем столбцы, соответствующие нейронам 21 и Х13 и не обнаруживаем в них, в пределах второго слоя, строк, содержащих единицы или нули. Так как нейрон 21 принадлежит предельному для формируемого

    терма слою, вводим дополнительную связь Х13 -> 21. Запись выражения принимает вид

    Х221 -> R5.

    Дальнейшие преобразования приводят к использованию нейрона 9 и к введению дополнительных связей 9 -> R5 и 21 -> R5.

    (рис 11.7) Матрица следования S5 после трассировки решения R5

    Трассировка нейросети закончена.

    11.5. Алгоритм трассировки нейросети по описанию системы принятия решений в дистрибутивной форме

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

    Следует напомнить предпосылки настоящего алгоритма, отличающие его от упомянутого.

  • Логическое описание СПР состоит из структурированных выражений, использующих скобки. Создаваемые нейросетевые подструктуры, объединенные связями с единичными весами, должны отображать порядок вложенности этих скобок. Это усложняет алгоритм трассировки вводом ограничений на длину статической цепочки возбуждения или на предельный слой нейронов при формировании подструктур нейросети – "скобок" в логической записи.
  • Дистрибутивная форма записи логических выражений обеспечивает единственность вхождения переменных, что значительно упрощает создание подструктур нейросети.
  • В остальном изложенный ниже алгоритм основан на схожих действиях, что и упомянутый.

    Алгоритм.

  • Подготовительные действия.

  • Используя сквозную нумерацию нейронов, разобьем весь диапазон номеров скрытых нейронов на множества по их принадлежности одному слою, если заданная сеть "слоистая", или по одинаковым максимальным длинам статических цепочек возбуждения (что для удобства также условно отнесем к одному слою). Таким образом, с учетом нейронов выходного слоя, будет установлен ранг r (в частности, число слоев) нейросети.
  • Найдем максимальное значение s уровня вложенности скобочных выражений ("скобок") в дистрибутивном описании СПР.
  • Заданную для трассировки -обучения нейросеть следует считать корректной, если выполняется соотношение s <= r.

  • Строим матрицу следования S, отображающую заданную нейросеть. Элемент этой матрицы на пересечении строки $$\alpha$$ и столбца $$\beta$$ пуст, если в заданной нейросети отсутствует синапсическая связь $$\beta \to \alpha$$. Если такая связь существует, этот элемент имеет значение 0 – первоначально заданного веса синапсической связи. (В процессе трассировки некоторые веса приобретают единичное значение.) Каждую строку матрицы S, соответствующую скрытому нейрону, сопроводим признаком $$m_{\alpha }$$, который указывает число единиц, введенных в процессе трассировки.
  • Организуем перебор записей всех выражений i = 1, ..., P из описания вида (11.1). Для каждой записи выполняем пп. 4-15. Если запись исчерпана, трассировка i-го решения заканчивается. По исчерпании записей всех выражений трассировка нейросети заканчивается.
  • Фиксируем первоначальную запись i -го выражения и строим матрицу следования Si исключением из матрицы S строк и столбцов, которые соответствуют переменным, не входящим в запись, а также всем решениям, кроме Ri.
  • В матрице Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие столбцы) которые содержат число ранее введенных единиц, меньшее значения m, указанного при строке.
  • Организуем просмотр выделенной записи и находим очередное внутрискобочное выражение ("скобку") самого высокого уровня вложенности. Если "скобок" больше нет, трассировка решения закончена, выполняем п. 3.
  • Ставим в соответствие уровню s* вложенности скобки множество нейронов слоя r – s* + 1, который является предельным для формирования терма – нейрона, реализующего (концентрирующего в себе возбуждение) данную "скобку".
  • Выделяем множество столбцов матрицы Si, которые соответствуют нейронам, образующим "скобку".
  • В совокупности выделенных столбцов находим строку, во всех позициях которой стоят единицы. Если такая строка найдена, переходим к выполнению п. 15.
  • В совокупности выделенных столбцов находим первую строку, в пределах, допустимых для данной "скобки", содержащую максимальное число нулей.
  • Если нейрон, соответствующий найденной строке, принадлежит предельному для данной "скобки" слою, записываем единицы (возможно, введя дополнительные связи с единичными весами) во все позиции, соответствующие выделенным столбцам. Переходим к выполнению п. 14.
  • Если этот нейрон не принадлежит предельному слою, меняем найденные нули на единицы (присваиваем связям единичный вес). Переходим к выполнению п. 14.
  • Если в выделенных столбцах не найдена строка с единицами и нулями, находим первый из представленных в Si нейрон предельного слоя и по всем позициям выделенных столбцов записываем единицы. То есть вводим дополнительные связи с единичными весами.
  • Отображаем введенные изменения в матрице S. Количество введенных единиц указываем в признаке m модифицированной строки, если она не соответствует нейрону выходного слоя.
  • В записи исследуемого выражения меняем использованные нейроны (или всю "скобку"), передавшие возбуждение нейрону со скорректированными связями, на имя этого нейрона. Из матрицы Si исключаем соответствующие этим нейронам, отображенным в "скобке", строки и столбцы. Переходим к выполнению п. 6.
  • Описание алгоритма закончено.

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

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

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

    Моделирование ассоциативного мышления фактически эквивалентно созданию таблиц, фиксирующих опыт вида "если $$\dots$$, то $$\dots$$ ", т.е. связывающих возникающие ситуации с принимаемым по ним решениям. Распространение возбуждения в нейросети с помощью передаточной функции является эффективным механизмом и оригинальным методом интерполяции (экстраполяции) опыта, т.е. нахождения по максимальной величине возбуждения наиболее близкого решения либо определения математического ожидания исхода с помощью значений возбуждения нескольких нейронов выходного слоя.

    Благодаря логическому методу построения математический аппарат нейронных сетей прост и доходчив, разработка нейросети недорога, она не требует специальных знаний пользователя. В то же время нейросеть легко допускает включение в рассмотрение новых факторов, изменение решений и т.д.

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

    В представленном здесь алгоритме трассировки нейросети с заданными связями при дистрибутивном описании единичные веса вводятся в строгом соответствии с логической схемой СПР. В этом отличие данного алгоритма от алгоритма, изложенного в лекции 4. При этом используемым ресурсом являются все скрытые нейроны, независимо от структуры транзитивных связей.

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

    Анализ примеров позволяет с уверенностью говорить о высокой актуальности СПР, реализуемых с помощью однослойных и совершенных нейросетей, что значительно облегчает решение задачи трассировки -обучения.

    Страницы:

    "Чтоб бешеной пляской землю овить,

    скучную, как банка консервов,

    давайте весенних бабочек ловить

    сетью ненужных нервов!"

    11.1. Задачи обучения нейросети методом трассировки

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

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

    Обобщим метод трассировки, ориентировав его на произвольно структурированное (использующее скобки) логическое описание СПР, в частности, – на его дистрибутивную форму.

    Начнем с рассмотрения аналогий.

    Задачу трассировки соединений в логической матрице для построения электронной схемы можно представить в двух вариантах.

  • На плате размещены логические элементы. Среди них заданы входные и выходные. Необходимо соединить элементы так, чтобы получить требуемое функциональное устройство. (При ориентации на технологии изготовления электронных плат, например печатных, учитывают дополнительные требования минимизации числа пересечений связей.)
  • На плате размещены логические элементы и в некоторой конфигурации введены связи между ними. Топология связей, при выделении входов и выходов, может быть как случайной, так и регулярной. Необходимо подтвердить существование некоторых связей и ликвидировать другие так, чтобы сформировать требуемое функциональное устройство. При этом может допускаться введение минимального количества недостающих связей.
  • Как правило, при таких постановках задачи трассировки не рассматриваются обратные связи.

    Исходя из аналогий, обусловленных общей логической базой, сформулируем и решим две задачи построения обученной (обучения) нейронной сети в соответствии с ее специализацией в составе СПР.

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

    11.2. Формирование обученной нейросети на основе заданного множества нейроподобных элементов

    Под нейроподобным элементом, который мы условились называть нейроном, подразумевается не столько овеществленный образ – электронный аналог, программный модуль и др., сколько реализуемая им передаточная функция.

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

    Скобочная запись задает последовательность формирования обученной нейросети. Процесс такого формирования (обучения) заключается в рекурсивной коммутации подструктур – термов на основе содержимого скобок в соответствии с их вложенностью.

    Продолжим рассмотрение примера на основе логического описания (10.1). Перепишем его, используя символ обобщенной операции, реализуемой передаточной функцией, но сохранив скобки:

    $$\begin{array}{l} ((X_{1} \ X_{7})\ (X_{3} \ X_{5} )) \(X_{10} \ X_{13} ) \to R_{1} ,\\ ((X_{1} \ X_{7} )\ (X_{4} \ X_{6} )) \(X_{2} \ X_{12} \ X_{14} ) \to R_{2} ,\\ X_{8} \ (X_{1} \ X_{10} ) \to R_{3} ,\\ (Х_{9} \ (Х_{1} \ Х_{10} ))\ (Х_{2} \ Х_{15} ) \to R_{4} ,\\ Х_{2} \(Х_{11} \ Х_{13} ) \to R_{5} .\end{array}$$

    Прежде всего из множества Х необходимо выделить нейроны входного – рецепторного – и выходного слоев. Исходя из этого, а также, задав количество необходимых и предполагаемых нейронов разного функционального назначения, закрепим и переобозначим нейроны: Х = {X1, ..., X15, 1, ..., 11, R1, ..., R5}. Нейроны 1, ..., 11 в будущих построениях исполнят роль нейронов скрытых слоев – скрытых нейронов.

    Составим матрицу следования, первоначально содержащую "пустые" элементы. На рис. 11.1 представлена такая матрица S, соответствующая уже полученному решению. Однако пока не следует учитывать единичные элементы: их необходимо сформировать в процессе решения задачи.

    Для удобства пользования и учитывая, что данная матрица при отсутствии обратных связей – треугольная, она выполнена в виде "шахматки", где диагональные элементы отмечены.

    Итак, чтобы сигналы возбуждения направленно проходили от входных нейронов к выходным, необходимо сформировать связи с единичными весами, используя скрытые нейроны. Пусть скрытые нейроны образуют ресурс – множество М свободных нейронов, первоначально M = {1, ..., 11}.

    (рис 11.1) Матрица следования после обучения нейросети

    Организуем последовательный анализ выражений (11.1).

    При просмотре первого выражения, анализируя открывающие и закрывающие скобки, найдем первую скобку самого высокого уровня вложенности. Она соответствует выражению 1 Х7). Закрепим за ним первый свободный нейрон 1 из М, предположив тем самым, что он выполняет аналог операции, указанной в скобках. Сформируем уточненную строку матрицы следования S, соответствующую нейрону 1, записав веса связей, равные единице, в столбцы, соответствующие нейронам Х1 и Х7.

    Обозначим исследованную "скобку" именем нейрона 1 и перепишем логическое выражение:

    $$(1\ (Х_{3 }\ Х_{5})) \ (Х_{10 }\ Х_{13}) \to R_{1 }.$$

    Продолжим поиск "скобок" самого высокого уровня вложенности.

    Находим "скобку" 3 Х5). В общем случае такая "скобка" могла встретиться ранее, и за ней мог быть закреплен скрытый нейрон. В целях экономии нейронов сформируем уточненную строку матрицы следования, записав единицы в столбцах, соответствующих нейронам Х3 и Х5. Однако, прежде чем поместить строку на ее место, проверим, нет ли в S идентичной строки? В данном случае такой строки нет. Тогда соотнесем полученную строку с очередным свободным нейроном 2 и поместим ее в S.

    Перепишем логическое выражение, заменив обработанную "скобку":

    (12)(Х10Х13)->R1 .

    Продолжая так же, закрепим нейрон 3 за "скобкой" 10Х13) и сформируем соответствующую этому нейрону строку матрицы S. Запись логического выражения примет вид

    (12)3 -> R1 .

    Следующий обзор этой записи приводит к замене "скобки" $$(1\wedge 2)$$ именем нейрона 4 и к формированию строки матрицы следования, соответствующей этому нейрону. Эта строка содержит единицы в строках, соответствующих нейронам 1 и 2. Запись логического выражения примет вид

    4 3 -> R1.

    Отсутствие скобок говорит о необходимости введения связей 4 -> R1 и 3 -> R1. Таким образом, строка, соответствующая нейрону R1 выходного слоя, содержит единицы в столбцах, соответствующих нейронам 3 и 4.

    Трассировка решения R1 закончена.

    Анализируем логическое выражение

    ((X1 X7 ) (X4 X6 )) (X2 X12 X14 ) -> R2 .

    Строка матрицы S, сформированная по "скобке" 1Х7), совпадает со строкой, соответствующей нейрону 1. Значит, можно "сэкономить", повторно использовав этот нейрон. Преобразуем запись:

    (1 (X4 X6 )) (X2 X12 X14 ) -> R2 .

    За следующей "скобкой" 4 Х6) закрепим нейрон 5, сформировав для него строку матрицы S, и запись примет вид

    (1 5) (X2 X12 X14 ) -> R2 .

    Продолжив ее обзор, получим новый вид записи (1 5) 6 -> R2 , а затем 7 6 -> R2 . Сформированные при этом строки матрицы S показаны на рисунке. Аналогично анализируются другие логические выражения (11.1), что не вносит новых особенностей в неформально изложенный алгоритм.

    Нейросеть, представленная матрицей следования S, близка к нейросети, показанной на рис. 10.2.

    11.3. Оптимальное закрепление рецепторов за событиями в нейросети заданной структуры

    Если задана структура нейросети (подразумевается ее "овеществленная" проекция на плоскость или даже реализация на плате, на кристалле, на решетке связанных процессорных элементов и т.д.), то от распределения рецепторов между событиями зависит возможность формирования отдельных термов без введения дополнительных связей. Например, если достоверность событий Х1 и Х7 подается на входы, значительно отстающие друг от друга, то при заданной, например, регулярной структуре связей могут возникнуть большие трудности в реализации аналога конъюнкции $$Х_{1} \wedge Х_{7}$$, используемой далее в качестве отдельного терма, который входит в состав других логических конструкций. Необходимое объединение этих событий на входе одного нейрона может быть достигнуто даже не ранее, чем на выходном слое. Это потребует введения дополнительных связей для построения необходимого терма.

    Чтобы минимизировать число вводимых дополнительных связей или исключить их вовсе, необходимо на основе анализа конструкций, входящих в состав описания вида (11.1), построить предпочтительный ряд следования событий, реализующий компромисс в выборе минимальных расстояний между элементами этого ряда.

    Пусть на рис. 11.2 представлена структура нейросети, которую следует обучить в соответствии с логическим описанием (11.1) создаваемой СПР. На рисунке отображено окончательное решение задачи трассировки, и связи с единичными весами выделены. Произведем обоснование этого решения и, прежде всего, распределим события между нейронами- рецепторами.

    Воспользуемся следующим алгоритмом упорядочения событий.

  • Организуем сквозной просмотр всех выражений (11.1) и выпишем последовательность имен событий в порядке их обнаружения.
  • Просматриваем слева направо сформированную последовательность и находим имя события, входящего в эту последовательность неоднократно.
  • Находим среднее значение позиций, занимаемых именем найденного события в последовательности, и определяем для него ближайшее целое, не меньшее найденного.
  • Найденное значение определяет новый порядковый номер данного события в последовательности. Заносим имя события на новую позицию и исключаем другие его вхождения в последовательность.
  • Шаги 2-4 повторяем до достижения единственности вхождения всех имен событий в последовательность.
  • (рис 11.2) Обученная нейросеть

    В рассматриваемом примере последовательность имен событий первоначально имеет вид

    $$\begin{array}{l} \:| \overline{\phantom{Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6}}}\downarrow \\ Х_{1} Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6} Х_{2} Х_{12} Х_{14} Х_{8} Х_{1} Х_{10} Х_{9} Х_{1} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Имя Х1 входит неоднократно. Новая его позиция определяется как ](1 + 7 + 15 + 18) : 4[ = 11. После переноса Х1 на новое место (показано стрелкой) и исключения его прежних вхождений последовательность имен принимает вид

    $$\begin{array}{l} \:| \overline{\phantom{Х_{3} Х_{5}}}\downarrow \\ Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{7} Х_{4} Х_{6} Х_{1} Х_{2 }Х_{12} Х_{14} Х_{8} Х_{10} Х_{9} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новое место Х7 определяется как ](1 + 6) : 2[ = 4. Последовательность принимает вид

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}}\:|\overline{\phantom{Х_{13} Х_{4} Х_{6} Х_{1} Х_{2} Х_{12}}}\downarrow\\ Х_{3} Х_{5} Х_{7}Х_{10} Х_{13} Х_{4} Х_{6} Х_{1 }Х_{2} Х_{12} Х_{14} Х_{8} Х_{10} Х_{9} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новое место Х10 определяется как ](3 + 13 + 15) : 3[ = 11. Последовательность принимает вид

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}}\: | \overline{ \phantom{Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}}}\downarrow\\ Х_{3} Х_{5} Х_{7}Х_{13} Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}Х_{14} Х_{8} Х_{9} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$

    Новая позиция Х13 определяется как ](4 + 18) : 2[ =11. Получаем новый вид последовательности:

    $$\begin{array}{l} \phantom{Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}}\: |\overline{\phantom{ Х_{12} Х_{10}Х_{13}Х_{14} Х_{8}}}\downarrow \\ Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}Х_{2} Х_{12} Х_{10}Х_{13}Х_{14} Х_{8} Х_{9} Х_{2} Х_{15} Х_{2}Х_{11} \end{array}$$

    Отыскивается новое место Х2, как ](7 + 14 + 16) : 3[ = 13, и последовательность имен событий принимает окончательный вид, отображенный на рисунке:

    $$Х_{3} Х_{5} Х_{7}Х_{4} Х_{6} Х_{1}Х_{12} Х_{10}Х_{13}Х_{14} Х_{8} Х_{2}Х_{9} Х_{15} _{}Х_{11}.$$

    Заметим, что при реализации на компьютере "кнопки" или окна на панели управления могут располагаться в удобном для пользователя порядке, соединяясь с закрепленными за ними рецепторами.

    11.4. Обучение-трассировка нейросети заданной структуры

    Как видно из примера, рассмотренного в лекции 10, если нейросеть не может быть сведена к однослойной на заданной графической структуре, то при трассировке необходимо следовать структуре логического выражения. Это требует такой структуризации обучаемой нейросети, при которой "скобки" в порядке их вложенности соответствуют выделенным подструктурам сети. Тогда подструктуры нейросети образуют расширяемый ресурс, предоставляемый для реализации "скобок", – от максимального уровня вложенности до нулевого.

    В рассматриваемой сети (рис. 11.2) максимальная длина статического пути возбуждения равна трем. Более того, данная нейросеть является трехслойной в "традиционном" смысле [13, 15, 19, 20], т.е. в ней нет связей "через слой".

    Запишем первое логическое выражение из описания (11.1):

    ((X1 X7) (X3 X5)) (X10 X13) -> R1.

    Ему соответствует максимальная длина логических цепочек, равная трем, что следует из порядка вложенности скобок. Тогда справедливо предположение о том, что "скобки" (X1X7) и (X3X5) могут быть реализованы не далее чем на первом слое (3 - 2 = 1), чтобы не воспрепятствовать формированию подструктур, в которые они входят. Охватывающая их "скобка" ((X1X7)(X3X5)) должна быть реализована на втором слое. Не далее чем на этом же, т.е. на невыходном, слое может быть реализована и скобка (X10 X13).

    Предположим, что сквозная нумерация позволяет выделить подмножества нейронов, принадлежащих одному слою или, в общем случае, имеющих одинаковую максимальную длину статической цепочки, как показано на рис. 11.2. Действительно, нейроны 1-12 образуют первый слой нейросети, нейроны 13-21 – второй слой, третий слой – выходной. Тогда и в описывающей нейросеть матрице следования S, наличие которой лишь подразумевается ввиду ее громоздкости, можно отчеркнуть строки и столбцы нейронов, принадлежащих, в данном случае, одному слою. (Напомним, что в матрице S связи обозначаются значениями весов, первоначально равными нулю.)

    Построим матрицу S1 (рис. 11.3) на основании выражения, определяющего решение R1.

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

    Приступим к реализации первой "скобки" третьего уровня вложенности.

    В столбцах, соответствующих событиям Х7 и Х1, ведя поиск в пределах нейронов первого слоя, найдем первую строку, которая содержит максимальное число нулей, указывающих наличие связей. Такая строка, где нули находятся во всех выделенных столбцах, соответствует нейрону 3. В матрицах S и S1 меняем эти нули на единицы – формируем единичные веса связей. В матрице S при строке, соответствующей нейрону 3, указываем число введенных единиц, m3 = 2. В записи выражения меняем "скобку" на имя нейрона, реализующего ее. Запись принимает вид

    (3 (X3 X5)) (X10 X13) -> R1.

    Перейдем к реализации "скобки" (X3 X5) того же уровня вложенности.

    (рис 11.3) Матрица S1 после трассировки решения R1

    В столбцах, соответствующих нейронам X3 и X5, найдем строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 1 первого слоя. Меняем в S и S1 найденные нули на единицы, в матрице S указываем значение m1 = 2. Преобразуем запись выражения:

    (3 1) (X10 X13) -> R1.

    Скобка (X10 X13) может быть реализована как на первом, так и на втором слое. В столбцах, соответствующих нейронам X10 и X13, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 6. Меняем выделенные нули на единицы и указываем число таких единиц в S: m6 = 2. Запись выражения преобразуется:

    (3 1) 6 -> R1.

    Анализируя столбцы, соответствующие нейронам 1 и 3, находим нейрон 13 второго слоя, реализующий скобку (3 1), отмечаем значение m13 = 2. Запись выражения преобразуется к виду

    13 6 -> R1.

    Анализируя столбцы, соответствующие нейронам 6 и 13, включив в рассмотрение нейроны выходного слоя, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 15. Однако она содержит нуль лишь в столбце нейрона 6. Меняем этот нуль в матрицах S и S1 на единицу, полагаем m15 = 1. Запись выражения преобразуется к виду

    1315 -> R1.

    Затем реализуем единственную "скобку" нулевого уровня вложенности с помощью нейрона R1. Трассировка первого решения закончена. В результате ее введены отмеченные на рисунке связи Х3 -> 1, Х5 -> 1, Х7 -> 3, Х1 -> 3, Х10 -> 6, Х13 -> 6, 1 -> 13, 3 -> 13, 6 -> 15, 13 -> R1, 15 -> R1.

    Для трассировки решения

    ((X1X7)(X4X6))(X2X12 X14) -> R2

    построим матрицу следования S2 (рис. 11.4). Для этого исключим из матрицы S все нейроны- рецепторы, не участвующие в приведенной выше записи выражения, а также неиспользуемые нейроны выходного слоя. Затем с помощью одного просмотра сверху вниз исключим представительство тех нейронов, где число единиц в строках меньше соответствующего значения m.

    При анализе "скобки" (X1 X7) обнаруживаем в столбцах, соответствующих нейронам X1 и X7, две единицы в строке, соответствующей нейрону 3, при том, что m3 = 2. Запись выражения преобразуется к виду

    (3 (X4 X6)) (X2 X12 X14) -> R2.

    В строке, соответствующей Х4 и Х6, нет строки, содержащей единицы во всех позициях. Находим первую строку, соответствующую нейрону первого слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка, содержащая нули во всех позициях, соответствует нейрону 2. В матрицах S и S2 меняем выделенные нули на единицы, фиксируем значение m2 = 2. Запись выражения преобразуется:

    (3 2) (X2 X12 X14) -> R2.

    В соответствии с уровнем вложенности присутствующие в записи "скобки" могут быть реализованы как на первом, так и на втором слое нейросети. В столбцах, соответствующих Х2, Х12, Х14, нет строки нейрона первого или второго слоя, содержащей единицы во всех столбцах. Находим первую строку, содержащую максимальное число нулей при нулевом значении m. Такая строка соответствует нейрону 7. Меняем выделенные нули на единицы, фиксируем значение m7 = 2. Запись выражения принимает вид

    $$(3 \ 2) \(X_2 \ 7) \to R_2.$$

    Преобразование первой скобки производится с помощью нейрона 14 аналогично предыдущему. Фиксируем значение m14 = 2 и формируем новую запись:

    14 (X2 7) -> R2.

    Выделяем столбцы, соответствующие нейронам Х2 и 7, и так как в этих столбцах нет строки, соответствующей нейронам второго слоя и содержащей единицы во всех позициях (нейрон 7 принадлежит первому слою и может участвовать в термах, создаваемых на втором слое), находим первую строку, соответствующую нейрону второго слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка соответствует нейрону 16, который становится преемником лишь нейрона 7. Меняем выделенный нуль на единицу, фиксируем значение m16 = 1. Запись выражения принимает вид

    14 (X216) -> R2.

    Теперь выделяем столбцы нейронов Х2 и 16. Находим в них строку с максимальным числом нулей при нулевом значении m не далее, чем на втором слое нейронов. Такая строка соответствует нейрону 9. Меняем выделенный нуль на единицу, полагаем m9 = 1. Запись принимает вид

    14 (9 16) -> R2.

    Выделяем столбцы, соответствующие нейронам 9 и 16. В них находим строку с максимальным числом нулей и при нулевом m не далее чем на втором слое нейронов. Такая строка соответствует нейрону 18.

    Однако прежде чем использовать этот нейрон, заметим, что здесь мы впервые сталкиваемся с необходимостью введения дополнительной связи. Ведь нейрон 16 принадлежит "предельному" слою для реализованного им терма. Его объединение с нейроном 18 возможно лишь на слое более высокого уровня, что не позволяет реализовать все выражение. Нейрон 9 принадлежит первому слою, т.е. к предыдущему по отношению к нейрону 16. Его объединение с нейроном 16 с помощью непосредственной связи 9 -> 16 обеспечивает правильную реализацию "скобки".

    Таким образом, сформулируем правило: если "скобка" объединяет нейроны, среди которых один принадлежит слою максимального уровня, допустимого для формирования терма, а другие нейроны, образующие эту же "скобку", принадлежат предыдущему слою, то необходимо ввести дополнительные связи, соединяющие эти нейроны с первым, если такие связи не были заданы, и присвоить им единичный вес.

    Введем связь 9 -> 16 и уточним значение m16 = 2. Запись выражения принимает вид

    14 16 -> R2,

    что с очевидностью приводит к окончанию трассировки второго решения, как показано на рис. 11.4.

    (рис 11.4) Матрица S2 после трассировки решения R2

    Заметим, что дополнительная связь Х2 -> 7, введенная на первом этапе реализации "скобки", возможно, исключила бы сложный анализ создавшейся ситуации.

    Аналогично, без элементов новизны, производится трассировка решения R3 с помощью матрицы S3 (рис. 11.5) введением единичных весов связей Х1 -> 5, Х10 -> 5, Х8 -> 8, 5 -> 17, 8 -> 17, 17 -> R3 .

    Произведем трассировку решения R4, записав определяющее его выражение

    91 Х10 )) (Х2 Х15 ) -> R4 .

    Матрица S4 представлена на рис. 11.6.

    (рис 11.5) Матрица следования S3 после трассировки решения R3

    Выделим столбцы, соответствующие нейронам Х1 и Х10, и находим в них строку, соответствующую нейрону 5, в которой единицы записаны во всех позициях, m5 = 2. Заменим "скобку" именем нейрона 5:

    9 5) 2 Х15 ) -> R4 .

    "Скобку" 2 Х15) реализуем с помощью нейрона 11, и запись принимает вид

    9 5)11-> R4.

    Анализ первой скобки приводит к единичному весу связи Х9 -> 10, а затем 10 -> 19. Запись выражения принимает вид

    (195)11-> R4.

    Дальнейший анализ "скобки" свидетельствует о том, что нейрон 19 принадлежит слою максимального уровня, на котором эта "скобка" может

    быть реализована. Нейрон 5 принадлежит предыдущему слою. Тогда по правилу, изложенному выше, вводим дополнительную связь 5 -> 19. Полагаем m19 = 2. Запись выражения принимает вид

    1911-> R4.

    Полученная "скобка" может быть реализована на выходном слое нейронов. Анализируем столбцы, соответствующие нейронам 11 и 19, находим в них первую строку с максимальным числом нулей при нулевом значении m, соответствующую нейрону 20, и вводим единичный вес связи 11 -> 20. Запись выражения принимает вид

    1920-> R4.

    Однако анализ столбцов, соответствующих нейронам 19 и 20, свидетельствует об отсутствии связей этих нейронов с нейроном R4. Введем дополнительные связи 19 -> R4 и 20-> R4.

    Трассировка решения R4 закончена.

    (рис 11.6) Матрица следования S4 после трассировки решения R4

    Для трассировки решения R5 составим матрицу S5 (рис. 11.7) и запишем в первоначальном виде логическое выражение

    Х211 Х13) -> R5.

    Выделяем столбцы, соответствующие нейронам Х11 и Х13. В них нет строки, соответствующей нейрону не более чем второго слоя и содержащей единицы. Находим первую строку, содержащую максимальное число нулей при нулевом значении m. Эта строка соответствует нейрону 12. Меняем нуль на единицу, положив m12= 1 ; запись выражения принимает вид

    Х2(12 Х13) -> R5.

    Продолжаем анализ "скобки", в результате чего запись выражения принимает вид

    Х2(21 Х13) -> R5.

    Вновь выделяем столбцы, соответствующие нейронам 21 и Х13 и не обнаруживаем в них, в пределах второго слоя, строк, содержащих единицы или нули. Так как нейрон 21 принадлежит предельному для формируемого

    терма слою, вводим дополнительную связь Х13 -> 21. Запись выражения принимает вид

    Х221 -> R5.

    Дальнейшие преобразования приводят к использованию нейрона 9 и к введению дополнительных связей 9 -> R5 и 21 -> R5.

    (рис 11.7) Матрица следования S5 после трассировки решения R5

    Трассировка нейросети закончена.

    11.5. Алгоритм трассировки нейросети по описанию системы принятия решений в дистрибутивной форме

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

    Следует напомнить предпосылки настоящего алгоритма, отличающие его от упомянутого.

  • Логическое описание СПР состоит из структурированных выражений, использующих скобки. Создаваемые нейросетевые подструктуры, объединенные связями с единичными весами, должны отображать порядок вложенности этих скобок. Это усложняет алгоритм трассировки вводом ограничений на длину статической цепочки возбуждения или на предельный слой нейронов при формировании подструктур нейросети – "скобок" в логической записи.
  • Дистрибутивная форма записи логических выражений обеспечивает единственность вхождения переменных, что значительно упрощает создание подструктур нейросети.
  • В остальном изложенный ниже алгоритм основан на схожих действиях, что и упомянутый.

    Алгоритм.

  • Подготовительные действия.

  • Используя сквозную нумерацию нейронов, разобьем весь диапазон номеров скрытых нейронов на множества по их принадлежности одному слою, если заданная сеть "слоистая", или по одинаковым максимальным длинам статических цепочек возбуждения (что для удобства также условно отнесем к одному слою). Таким образом, с учетом нейронов выходного слоя, будет установлен ранг r (в частности, число слоев) нейросети.
  • Найдем максимальное значение s уровня вложенности скобочных выражений ("скобок") в дистрибутивном описании СПР.
  • Заданную для трассировки -обучения нейросеть следует считать корректной, если выполняется соотношение s <= r.

  • Строим матрицу следования S, отображающую заданную нейросеть. Элемент этой матрицы на пересечении строки $$\alpha$$ и столбца $$\beta$$ пуст, если в заданной нейросети отсутствует синапсическая связь $$\beta \to \alpha$$. Если такая связь существует, этот элемент имеет значение 0 – первоначально заданного веса синапсической связи. (В процессе трассировки некоторые веса приобретают единичное значение.) Каждую строку матрицы S, соответствующую скрытому нейрону, сопроводим признаком $$m_{\alpha }$$, который указывает число единиц, введенных в процессе трассировки.
  • Организуем перебор записей всех выражений i = 1, ..., P из описания вида (11.1). Для каждой записи выполняем пп. 4-15. Если запись исчерпана, трассировка i-го решения заканчивается. По исчерпании записей всех выражений трассировка нейросети заканчивается.
  • Фиксируем первоначальную запись i -го выражения и строим матрицу следования Si исключением из матрицы S строк и столбцов, которые соответствуют переменным, не входящим в запись, а также всем решениям, кроме Ri.
  • В матрице Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие столбцы) которые содержат число ранее введенных единиц, меньшее значения m, указанного при строке.
  • Организуем просмотр выделенной записи и находим очередное внутрискобочное выражение ("скобку") самого высокого уровня вложенности. Если "скобок" больше нет, трассировка решения закончена, выполняем п. 3.
  • Ставим в соответствие уровню s* вложенности скобки множество нейронов слоя r – s* + 1, который является предельным для формирования терма – нейрона, реализующего (концентрирующего в себе возбуждение) данную "скобку".
  • Выделяем множество столбцов матрицы Si, которые соответствуют нейронам, образующим "скобку".
  • В совокупности выделенных столбцов находим строку, во всех позициях которой стоят единицы. Если такая строка найдена, переходим к выполнению п. 15.
  • В совокупности выделенных столбцов находим первую строку, в пределах, допустимых для данной "скобки", содержащую максимальное число нулей.
  • Если нейрон, соответствующий найденной строке, принадлежит предельному для данной "скобки" слою, записываем единицы (возможно, введя дополнительные связи с единичными весами) во все позиции, соответствующие выделенным столбцам. Переходим к выполнению п. 14.
  • Если этот нейрон не принадлежит предельному слою, меняем найденные нули на единицы (присваиваем связям единичный вес). Переходим к выполнению п. 14.
  • Если в выделенных столбцах не найдена строка с единицами и нулями, находим первый из представленных в Si нейрон предельного слоя и по всем позициям выделенных столбцов записываем единицы. То есть вводим дополнительные связи с единичными весами.
  • Отображаем введенные изменения в матрице S. Количество введенных единиц указываем в признаке m модифицированной строки, если она не соответствует нейрону выходного слоя.
  • В записи исследуемого выражения меняем использованные нейроны (или всю "скобку"), передавшие возбуждение нейрону со скорректированными связями, на имя этого нейрона. Из матрицы Si исключаем соответствующие этим нейронам, отображенным в "скобке", строки и столбцы. Переходим к выполнению п. 6.
  • Описание алгоритма закончено.

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

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

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

    Моделирование ассоциативного мышления фактически эквивалентно созданию таблиц, фиксирующих опыт вида "если $$\dots$$, то $$\dots$$ ", т.е. связывающих возникающие ситуации с принимаемым по ним решениям. Распространение возбуждения в нейросети с помощью передаточной функции является эффективным механизмом и оригинальным методом интерполяции (экстраполяции) опыта, т.е. нахождения по максимальной величине возбуждения наиболее близкого решения либо определения математического ожидания исхода с помощью значений возбуждения нескольких нейронов выходного слоя.

    Благодаря логическому методу построения математический аппарат нейронных сетей прост и доходчив, разработка нейросети недорога, она не требует специальных знаний пользователя. В то же время нейросеть легко допускает включение в рассмотрение новых факторов, изменение решений и т.д.

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

    В представленном здесь алгоритме трассировки нейросети с заданными связями при дистрибутивном описании единичные веса вводятся в строгом соответствии с логической схемой СПР. В этом отличие данного алгоритма от алгоритма, изложенного в лекции 4. При этом используемым ресурсом являются все скрытые нейроны, независимо от структуры транзитивных связей.

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

    Анализ примеров позволяет с уверенностью говорить о высокой актуальности СПР, реализуемых с помощью однослойных и совершенных нейросетей, что значительно облегчает решение задачи трассировки -обучения.

    Вернуться к учебному плану