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

Построение современной нейросетевой технологии

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

"В огороде бузина, а в Киеве дядька".

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

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

$$\dots$$ Бытует теоретико-практическая предпосылка, объявляющая, что нейросеть формируется "под задачу". Однако в природе есть идеальная, универсальная, "унифицированная" нейросеть - наш мозг!.. И каждый из нас не испытывает серьезных технических трудностей, если, совершая жизненную ошибку, становится не коммерсантом-коробейником, а, скажем, блестящим специалистом по реликтовым захоронениям в мезозойский период. Более того, говорят, что если человек талантлив в одном, то он талантлив во всем.

В книге "От кого мы произошли?" (М.: ООО "АиФ Принт", 2000), в главе "Почему мы смотрим друг другу в глаза?" Э. Мулдашев говорит об известных ему 22 параметрах, отражающихся на глазной области лица и динамически описывающих морально-психологическое состояние собеседника-партнера. Однако обсчитать на компьютере удалось лишь два. Автор удивлен той колоссальной скоростью, с которой ведет такую обработку человеческий мозг: "Воистину велик Бог, создавший такое компьютерное совершенство мозга!"

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

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

Именно возможности параллельной обработки информации, наряду с допустимым отсутствием формальных расчетов - только на основе ассоциативного мышления, - привлекли к себе внимание проектировщиков супер-ЭВМ в период т.н. "Японского вызова" в начале 1980-х годов.

3.1. Начинаем решать пример

"В России революция - дрогнула мать

сыра земля, замутился белый свет…"

Нейросетевые технологии основаны на моделировании деятельности мозга. А как сказал Р. Шеннон, "Моделирование есть искусство" [29]. И как любое искусство, модель нейросети может базироваться на примерах, опыте и общих рекомендациях.

Рассмотрим пример, который навеян славным временем революционной перестройки, предлагающей нам эталоны актуальности, культурного ориентира и предприимчивости.

Вася и Петя - друзья. Нет, не в том смысле: они почти нормальной сексуальной ориентации. Скорее в смысле вечной святой мужской дружбы, без смущения применяющей слово "друг". Обозначим А - множество друзей,

$$А = \{Вася, Петя\}$$

Вася и Петя - крутые парни. Они плохо учились в школе, и это хорошо! Они создали "крышу", под которой успешно трудится ряд палаток

$$\begin{array}{rl} С = \{"Оксана", "Роксана", \\ "Марина","Регина", \\ "Св. Аполлинария"\}\end{array}$$

заботливо опекаемые хозяйками, соответственно, Оксаной и Роксаной, Мариной и Региной, а также Аполлинарией. Палатки реализуют продукцию фирм

$$В = \{Красный Киллер, Пират, Ночная Бабочка\}$$

Фирма Красный Киллер в секретных подвалах славных подразделений бойцов холодной войны на основе бабушкиного самогона и контрабандного синтетического спирта гонит всемирно известную вино-водочную продукцию отличного качества. Фирма Пират производит аудио- и видеопродукцию и другие культурные ценности. Фирма Ночная Бабочка стряпает французскую косметику из мосластых московских дворняг.

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

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

(рис 3.1) Предмет исследования

А информации приходится обрабатывать дяде Рамзаю много. Он, прямо скажем, работает в условиях неопределенности и усиленных помех. Судите сами. Оксана делит любовь между Васей и Петей. Роксана - пока нет. Марина и Регина, жалея, подкармливают юных следопытов. Аполлинария вообще закадрила хахаля из местной мэрии и разъезжает в длиннющем "линкольне". Тщетно пытаясь разрушить узы бескорыстной дружбы, фирма Пират напрямую подмазала Васю, снизив нагрузку вымогательства на свою продукцию. Петя, кажется, пошел на нарушение Конвенции и вторгается в область, контролируемую конкурентами. (Ох, не избежать благородной разборки, со стрельбой и окровавленными трупами!) Скоро отмотает свой срок Никита, и предприятие расширится и т.д., и т.д., и т.д. $$\dots$$

Все такие обстоятельства прямо или косвенно влияют на долю прибыли дяди Рамзая.

Однако, разбираясь в столь сложной ситуации - для демонстрации действительно очень трудно формализуемой задачи, - мы чувствуем, как чем-то липким покрываются наши честные ладошки. А потому мы решительно отталкиваемся от $$\dots$$ и со сладким упоением возносимся на уровень милого сердцу абстрактного, математического, формально-логического мышления.

Но, прежде всего, принимая столь ответственный заказ, мы хотим четко уяснить, что хочет дядя Рамзай, - чтобы все же максимально формализовать задачу. И после долгих согласований мы устанавливаем:

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

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

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

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

    $$if \ \ A1 \ \ then \\ \ \ if \ \ B1 \ \ then \ \ R1 \ \ else \\ \ \ \ \ if \ \ (C1\vee C2\vee C3) \\ \ \ \ \ \ \ then \ \ R2 \ \ else \ \ R3 \\ else \\ if \ \ B3 \ \ then \ \ R4 \ \ else \ \ R5.$$

    Здесь R1 - R5 - принимаемые решения.

    Одно решение соответствует некоторой, в общем случае не единственной, комбинации событий. Для изображения таких комбинаций воспользуемся записями, например, вида $$А1\wedge (В2\vee В3)\wedge (С4\vee С5)$$. Это означает, что Вася отправился в палатку то ли к Регине, то ли к Аполлинарии, торгующей продукцией то ли фирмы Пират, то ли фирмы Ночная Бабочка. Однако эта же запись означает, что все составляющие ее конъюнкции $$А1\wedge В2\wedge С4$$, $$А1\wedge В3\wedge С4$$ и др. приводят к одному и тому же решению.

    Проанализировав и перебрав все возможные ситуации, с учетом одинакового принимаемого решения, получим систему логических высказываний - предикатов, как основу формализации задачи при построении нейросети:

    $$\left \begin{array} {1} if A1\wedge B1\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R1;\\ if A1\wedge (B2\vee B3)\wedge (C1\vee C2\vee C3) \ then\ R2;\\ if A1\wedge (B2\vee B3) \wedge (C4\vee C5) \ then\ R3;\\ if A2\wedge B3\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R4;\\ if A2\wedge (B1\vee B2)\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R5.\end{array}$$

    Тогда, например, первое логическое высказывание означает "Если Вася отправился в одну из пяти палаток, и все они торгуют сегодня продукцией фирмы Красный Киллер, то следует принять решение R1 (например, заказать туристическую путевку)".

    Второе логическое высказывание означает: "Если Вася посетил одну из палаток С1, С2 или С3, торгующих сегодня продукцией фирм В2 и (или) В3, то следует принять решение R2 " и т.д.

    3.2. Возбуждение входного слоя

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

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

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

    Дадим рекомендации, основанные на "событийном" принципе.

    В нашем новом примере о превышении скорости разобьем скорость на диапазоны штрафования, например, [90-100), [100-110), [110-120), [120-200]. За каждым диапазоном скорости закрепим нейрон входного слоя - рецептор. Определим его среднее значение возбуждения, равное 1. Пусть отклонение к границам диапазона скорости пропорционально уменьшает эту величину возбуждения, увеличивая величину возбуждения рецептора "соседнего" диапазона. Другой вариант задания исходных данных основан на решении вопроса принадлежности скорости некоторому диапазону. Тогда величина возбуждения превратится в булеву переменную, фиксируя событие.

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

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

    Здесь явно просматривается концепция нечетких множеств [30].

    Множество называется нечетким, если элементы входят в него с некоторой вероятностью.

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

    Тогда, на этапе обучения нейросети, получим возможность формирования аналога некой таблицы, в соответствии с которой будет действовать инспектор. (Однако здесь пока не рассматривается процесс обучения нейросети - формирование этой таблицы, - а только принцип формирования данных для входа в нее.)

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

    Следовательно, на входном слое будут формироваться приведенные значения возбуждения.

    В рабочем режиме мы, таким образом, получили возможность использования неопределенной, недостоверной информации. Например, инспектор не смог из-за высокой скорости отличить "ниву" от "чероки". Тогда он решает ввести значение 0,5 в графу "нива" (величина возбуждения рецептора, "отвечающего" за "ниву", станет равной 0,5) и 0,5 - в графу "джип-чероки" (такой же станет величина возбуждения соответствующего рецептора). Однако, подумав, он на всякий случай вводит величину 0,2 в графу ВАЗ 2104, что также во власти его сомнений. Так же инспектор поступает и с другими характеристиками сложившейся ситуации в поисках наиболее достоверного решения по принципу наибольшей похожести.

    3.3. "Схемотехнический" подход к построению нейросети "под задачу"

    Реализуем подход, используемый при построении схем устройств компьютера и другой электронной техники. Выделим функционально полную, для данного применения, систему булевых функций - дизъюнкцию $$\vee$$ и конъюнкцию $$\wedge.$$

    Отрицание нам не понадобится, мы пока не рассматриваем тормозящие связи.

    Нарушив принятые обозначения, построим (рис. 3.2) схему, реализующую алгоритм счета значения выражения (3.1). Предполагаем, что на вход будут подаваться значения булевых переменных, обозначающих события.

    (рис 3.2) "Электронная" схема системы принятия решений

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

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

    Именно здесь должна помочь нейросеть.

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

    Выберем передаточную функцию произвольного ( i -го) нейрона, с числом m входов-дендритов:

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i}); \quad V_{i} := if\: V>1\: then\:1\: else\: V$$

    где $$\xi (x) = x$$ при x >= 0, 0 - в противном случае.

    Здесь Vj, как всегда, - величина возбуждения (другого нейрона), поступающая на j -й вход.

    Тогда нейрон-конъюнктор может быть реализован с помощью существенно высокого порога (рис. 3.3), где значение $$\delta$$ обусловлено некой поправкой, достаточной, чтобы для преодоления порога сигналы возбуждения поступали обязательно по всем входам.

    (рис 3.3) Модель нейрона-конъюнктора

    При обучении предполагается, что входные сигналы - булевы переменные, принимающие значения 0, 1. Положим $$\omega _{ij} = 1/m$$ и выберем $$\delta < 1/m$$. Тогда для того, чтобы преодолеть порог, на всех входах должны быть "1"; недостаток хотя бы одной "1" приведет к тому, что взвешенная сумма будет более чем на 1/m меньше указанной суммы весов.

    При переходе к действительным переменным, когда вместо событий рассматриваются, например, лишь предполагаемые вероятности их наступления, экспериментальный выбор значения $$\delta$$ может обусловить ту границу, когда считаться с возможностью данной комбинации событий нецелесообразно.

    Нейрон-дизъюнктор реализуется, наоборот, при низком значении порога, но при высоких значениях весов. Порог выбирается так, чтобы уже при возбуждении на одном входе возникал сигнал возбуждения на выходе. При этом сигнал на выходе не превышает "1" (рис. 3.4).

    (рис 3.4) Модель нейрона-дизъюнктора

    Понятно, что при полной определенности в режиме обучения возбуждение поступает по единственному входу (нейрон реализует функцию "ИСКЛЮЧАЮЩЕЕ ИЛИ" ). В условиях неопределенности предполагается, что нейрон имитирует выполнение функции "ИЛИ", допуская возбуждение более чем на одном входе.

    Итак, поменяем тип данных и заменим нейронами все элементы на схеме рис. 3.2. Получим нейросеть на рис. 3.5, где нейроны-конъюнкторы заштрихованы.

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

    Например, зададим "правильную" и абсолютно достоверную ситуацию В3 = 1, А1 = 1, С4 = 1 (Вася отправился к Регине, торгующей ямайским ромом). Легко проследить, что в первом такте возбудятся нейроны 1 и 6, реализующие дизъюнкцию. Величина их возбуждения равна "1". В следующем такте возбуждение нейронов 1, 6 и А1 приведет к возбуждению (с величиной, равной "1") нейронов 7 и 9, а в следующем такте - сигналы возбуждения нейронов 6 и 7 поступят на вход нейрона-конъюнктора Вых3. Никакой другой нейрон выходного слоя не возбудится.

    (рис 3.5) Нейросеть с "конъюнкторами" и "дизъюнкторами"

    Рассмотрим другую ситуацию, неопределенную и недостоверную.

    Пусть то ли Вася, то ли Петя - "разведчик" не установил точно - направился то ли к Оксане, то ли к Аполлинарии, торгующим в этот день то ли тройным одеколоном, то ли золотым диском группы "Та-ра-рам".

    Дядя Рамзай, по выданной нами инструкции, решает использовать интуитивные оценки веса или, на нашем языке, оценить достоверность каждой компоненты возникшей ситуации. Поскольку прогулки как Васи, так и Пети одинаково достоверны, то дядя Рамзай полагает величину возбуждения нейронов А1 и А2 равной 0,5 ( VA1 = VA2 = 0,5 ). После долгих раздумий он по наитию полагает VB1 = 0,8, VB2 = 0,8, VC1 = 0,7, VC5 = 0,8.

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

    Сдавая нейросеть "в эксплуатацию", мы установили веса всех конъюнкторов равными 0,5, а дизъюнкторов - равными 1. Пороги конъюнкторов определяются значением $$\delta = 0,4$$. Пороги дизъюнкторов имеют нулевое значение.

    (рис 3.6) Расчет примера

    Важность данного примера требует повторения рисунка нейросети (рис. 3.6) с проставленными возле нейронов значениями сигналов возбуждения.

    В итоге ситуация скорее всего имеет решение R5, и уж никак не R4. Однако ситуация, соответствующая решению R1, требует внимания.

    Пусть при вполне определенной ситуации (все достоверности принимают значение "1") каждое решение Ri приносит прибыль Mi. Тогда средняя величина ожидаемой прибыли для нашей неопределенной ситуации рассчитывается так:

    $$M = \frac{\sum_i M_i V_{Выхi}}{\sum_i V_{Выхi}}=\frac {M_i\cdot 0.825+M-2\cdot 0.675 +M_3\cdot 0.725+M_5\cdot 0.875}{3.1}$$

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

    3.4. Построение нейросети "под задачу"

    Мы построили нейросеть - с экзотическими (с точки зрения невропатолога) конъюнкторами и дизъюнкторами.

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

    Введем ту же, но без ограничения по величине возбуждения, передаточную функцию

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i})$$

    Положим $$\omega _{ij} = 0,8,\ h = 0,2$$. Сеть представлена на рис. 3.7.

    (рис 3.7) Расчет примера на нейросети

    Подадим на вход, например, ситуацию {A1, B1, C3}, требующую решения R1. Величины возбуждений нейронов показаны на рисунке.

    На основе расчетов по полученной сети составим табл. 3.1, отображающую правильную (!) работу сети при получении различных решений. При этом связи, предыстория которых определена дизъюнкторами, требуют проверки не более чем одного "представителя": в рассмотренном примере получаем тот же результат, если вместо С3 положим С1 или С2.

    Примеры расчета принимаемых решений
    Ситуация Требуемое решение VВых1 VВых2 VВых3 VВых4 VВых5
    {A1, B1, C3} R1 1,144 0,76 0,28 0,024 0,248
    {A1, B2, C2} R2 0,504 1,144 0,664 0,024 0,248
    {A1, B3, C3] R2 0,504 1,144 0,664 0,504 0,024
    {A1, B2, C4} R3 0,504 0,664 1,144 0,024 0,224
    {A1, B3, C5} R3 0,504 0,664 1,144 0,504 0,024
    {A2, B3,C1} R4 0,024 0,504 0,024 1,144 0,504
    {A2, B1, C3} R5 0,504 0,28 0 0,504 0,888
    {A2, B2, C4} R5 0,024 0,024 0,504 0,504 0,888
    VB1 = VB2 = 0.8, VA1 = VA2 = 0.5, VC1 = 0.7, VC5 = 0.8 ? 0,824 0,529 0,593 0,312 1,003

    Анализируя первые восемь строк таблицы, соответствующие достоверным ситуациям, видим, что по крайней мере максимум возбуждения определяется устойчиво верно.

    Рассмотрим ту же неопределенную ситуацию. Она отражена в последней строке таблицы. Близка ли она более всего ситуации, когда Петя направился к Аполлинарии и надо принимать решение R5? Ситуация с Васей, устремившимся туда же, дает примерно тот же ответ.

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

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

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

    (рис 3.8) Однослойная нейросеть

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

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

    Примеры расчета решений по однослойной нейросети
    СитуацияТребуемое решение VВых1 VВых2 VВых3 VВых4 VВых5
    {A1, B1, C3} R1 2,2 1,4 0,6 0,6 1,4
    {A1, B2, C2} R2 1,4 2,2 1,4 0,6 1,4
    {A1, B3, C3} R2 1,4 2,2 1,4 1,4 0,6
    {A1, B2, C4} R3 1,4 1,4 2,2 0,6 1,4
    {A1, B3, C5} R3 1,4 1,4 2,2 1,4 0,6
    {A2, B3,C1} R4 1,4 1,4 0,6 2,2 1,4
    {A2, B1, C3} R5 1,4 0,6 0 1,4 2,2
    {A2, B2, C4} R5 0,6 0,6 1,4 1,4 2,2
    VB1 = VB2 = 0.8, VA1 = VA2 = 0.5, VC1 = 0.7, VC5 = 0.8 ? 2,04 1,4 0,84 1,4 2,68

    3.5. Формализация нейросети

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

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

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

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

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

    Составим матрицу следования S (рис. 3.9), число строк (и столбцов) которой равно числу нейронов сети, включая нейроны входного и выходного слоя. Каждая строка (и столбец с тем же номером) соответствуют одному нейрону.

    Элемент (i, j) этой матрицы - суть непустой объект, содержащий вес $$\omega _{ij}$$ синапсической связи j -> i, если такая связь существует. В то же время элементы матрицы S следует интерпретировать как булевы переменные, равные "1" в случае ненулевого значения указанного веса. Это разрешает выполнение логических операций над строками и столбцами матрицы S, рассматривая ее как аналогичную матрицу следования, используемую при описании частично упорядоченных множеств работ в параллельном программировании [6].

    (рис 3.9) Матрица следования с транзитивными связями

    Матрицу S можно изучать в статическом режиме, исследуя и корректируя возможные пути прохождения возбуждений. По этой же матрице в динамическом режиме (моделирования) можно исследовать действительные пути прохождения возбуждений. Такое исследование связано с потактовым расчетом величин возбуждения нейронов.

    Нулевые строки (входы) матрицы S соответствуют нейронам входного слоя - рецепторам, нулевые столбцы (выходы) - нейронам выходного слоя.

    Нейроны образуют статические цепочки $$\alpha _{1} \to \alpha _{2} \to \dots \to \alpha _{m}$$, длины m, если существуют синапсические связи (впредь будем опускать слово "синапсические") вида $$\alpha _{k} \to \alpha _{k+1}$$. Составляя все статические цепочки по графу G, можно выделить одну или более цепочек максимальной длины. Такие цепочки назовем критическими. (В традиционных многослойных моделях длина критической цепочки совпадает с числом слоев сети.)

    Пусть по статической цепочке i->j->k мы обнаружили отсутствие непосредственной связи i->k, т.е. элемент матрицы S, стоящий на пересечении k -й строки и i -го столбца, равен "0". Однако очевидно опосредствованное влияние возбуждения нейрона i на величину возбуждения нейрона k, что указывает на наличие транзитивной связи i -> k. Нахождение транзитивных связей позволяет выявлять все нейроны, потенциально возбуждающие определенный нейрон выходного слоя.

    Алгоритм дополнения матрицы S транзитивными связями весьма прост.

    Для всех i = 1, 2 ,..., N:

    Формируем новое значение строки i логическим сложением этой строки со строками, соответствующими непустым элементам в ней. "Новые" непустые элементы заменяем на не пустые элементы, обозначающие транзитивные связи.

    В нашем примере матрица S, дополненная транзитивными связями (непустые клеточки), и представлена на рис. 3.9.

    Зафиксируем некоторое подмножество R нейронов входного слоя и единственный нейрон r выходного. Построим множество цепочек, ведущих из выделенного подмножества нейронов входного слоя в данный нейрон выходного слоя. Выделенное таким образом множество цепочек назовем статическим путем возбуждения данного нейрона выходного слоя по множеству нейронов входного слоя. Обозначим его R->r.

    Представим алгоритм формирования статического пути возбуждения R->r.

  • Вычеркиваем из матрицы следования S строки и столбцы, которые соответствуют нейронам, не принадлежащим R.
  • Вычеркиваем из матрицы следования S все строки и столбцы, отображающие нейроны выходного слоя, кроме нейрона r.
  • Вычеркиваем из матрицы следования S строки и столбцы, отображающие нулевые позиции строки нейрона r.
  • Вычеркиваем из матрицы следования S строки и столбцы, отображающие нейроны внутренних слоев нейросети, в том случае, если в результате предыдущего вычеркивания эти строки оказались нулевыми.
  • Выполняем пункт 4, пока не прекратится образование нулевых строк.
  • На рис. 3.10 матрицей S[B1, A1, C1 -> Вых1] отображено множество цепочек, ведущих из нейронов В1, А1, С1 в нейрон Вых1, т.е. статический путь возбуждения [B1, A1, C1] -> Вых1.

    (рис 3.10) Статический путь возбуждения

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

    Динамической цепочкой возбуждений $$\beta _{1} \to \beta _{2} \to \dots \to \beta _{m}$$ длины m назовем статическую цепочку, составленную из нейронов, первые m?1 которых обладают отличной от нуля величиной возбуждения.

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

    Предъявим сети некоторый образ или эталон (не будет большой ошибки, если и здесь при предъявлении мы будем пользоваться словом "образ", ибо все есть образ чего-то), приводящий к возбуждению нейроны входного слоя, - в некоторой конфигурации. Эти нейроны образуют множество R. В результате возбуждения сети оказался возбужденным некоторый нейрон r выходного слоя. Сформировался, таким образом, динамический путь возбуждения R -> r ; очевидно, его образуют нейроны, входящие в состав статического пути возбуждения R -> r, так как некоторые нейроны могут остаться невозбужденными.

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

    3.6. Модель механизма запоминания

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

    Здесь работает известное правило Хебба [19, 20]: Синапсический вес связи двух возбужденных нейронов увеличивается.

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

    По-видимому, синапсы обладают свойством "остывания" со временем, если нет подтверждения их использования. Такое предположение адекватно свойству нашей памяти: ненужная, не подтверждаемая и не используемая периодически информация стирается ("Связи рвутся!"). Стирается до такой степени, что приходится учиться заново.

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

    При создании искусственных механизмов обучения нейросети возникают вопросы:

  • Увеличивать ли веса всем нейронам, образующим статический путь возбуждения - для запоминания эталона?
  • Увеличивать ли веса только вдоль некоторых (опорных) цепочек статического пути возбуждения?
  • Увеличивать ли веса только нейронов, образующих динамический путь возбуждений ; ведь выше предполагалось, что уже само возбуждение увеличивает вес связи? Зачем возбуждать дополнительные нейроны, если и этих достаточно?
  • По-видимому, третий аспект в большей степени соответствует самообучению, самонастройке. Вмешательство в наш мозг на этом уровне исключено. Однако система искусственного интеллекта - в более выгодном положении. Ведь она находится под нашим неусыпным контролем, реализуя обучение "с учителем", и допускает любое вторжение, корректирующее вынужденные недостатки естественного интеллекта. Поэтому, рассматривая пример (и пытаясь накопить хоть какой-то опыт), мы будем увеличивать веса синапсических связей нейронов, составляющих выделенные цепочки статического пути возбуждения от эталона к образу. Назовем такой метод методом опорных путей, который выработан в процессе проведения многочисленных экспериментов. В частности, увеличение синапсических весов большого числа нейронов приводило к неудачам, связанным с корреляцией динамических цепочек возбуждения для разных эталонов и с быстрым насыщением нейросети (недостаток многих известных алгоритмов обучения). В процессе обучения многим эталонам рано или поздно все веса сети оказывались повышенными, и она прекращала что-либо различать. Начиналась путаница согласно выражению "Ум за разум заходит!"

    Что же касается величины изменения синапсических весов, то вряд ли необходимо относительно каждого нейрона решать системы дифференциальных уравнений в частных производных. (Речь идет о методе обратного распространения ошибки, подробно изложенном в [20].) Природа больше рассчитывает на авось, "на глазок" и другие мудрые и практические приблизительные ориентиры, малопривлекательные теоретически. В данном случае нас более обнадеживает "прилив крови" в нужном направлении, стимулируемый информационным раздражителем или легким подзатыльником. В связи с этим введем некую переменную $$\delta \omega$$, выверяемую практически (а то и просто единицу), уменьшаемую или увеличиваемую при необходимости.

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

    3.7. Применение "готовых" нейросетей

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

    3.7.1. Однослойная нейросеть

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

    Однослойная нейросеть, составленная по принципу "каждый с каждым", представлена на рис. 3.11.

    (рис 3.11) Формирование однослойной нейросети

    Пусть используется предложенная выше передаточная функция

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i})$$

    Значения $$\omega _{ij}$$ предстоит подобрать, а значения hi положим равными нулю.

    Закрепим 10 нейронов входного слоя за исходными данными, 5 выходов - за решениями. Этим мы выделим интересующую нас подсеть, которой соответствует матрица следования на рис. 3.12.

    (рис 3.12) Матрица следования для однослойной нейросети

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

    Для того чтобы сформировать решение R1 на нейроне Вых1, надо значительно увеличить веса связей этого нейрона с нейронами В1, А1, С1, С2, С3, С4, С5, т.е. построить статический путь возбуждения [B1, A1, C1, C2, C3, C4, C5] -> Вых1 и вдоль него по некоторой дисциплине увеличить веса связей.

    В данном случае результат очевиден, поэтому обратим внимание на некоторый общий подход.

    Установим веса связей между нейронами В1, А1, С1, С2, С3, С4, С5 с одной стороны, и нейроном Вых1 - с другой равными единице, оставив нулевыми веса связей этого нейрона с другими нейронами входного слоя. Таким образом полностью исключается влияние других нейронов входного слоя на данный выходной нейрон. Конкретная задача может потребовать корректировки, учета взаимного влияния всех входных ситуаций в результате тщательного экспериментального исследования задачи.

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

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

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

    3.7.2. Нейросеть произвольной структуры

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

    Пусть выбранная нами нейросеть имеет 12 входов (более чем достаточно), 5 выходов и реализует ту же передаточную функцию с начальными значениями весов $$\omega _{ij} = 0$$ и порога h = 0.

    Однако сеть обладает специфической топологией, затрудняющей ее обучение. Сеть многослойная, что исключает связи "через слой", присутствующие, например, на рис. 3.7 как результат построения нейросети "под задачу". Да и связь между слоями скорее соответствует известному предупреждению "шаг влево, шаг вправо $$\dots$$ ".

    Будем использовать метод опорных путей, или трассировки, расширяющий использованный выше "схемотехнический" подход. Его можно изобразить схемой рис. 3.2 $$\to$$ рис. 3.5 $$\to$$ рис. 3.7 $$\to$$ рис. 3.8. Суть метода - в трассировке соединений, в назначении высоких весов некоторых связей, превращающих нейросеть в законченное функциональное устройство. При такой трассировке обучение производится на эталонах в полном смысле этого слова, на вполне определенных (достоверных) ситуациях, например, на отсутствии (0) события или на его наступлении (1). После обучения сеть должна выдавать наиболее близкое решение при недостоверной информации, т.е. согласно вероятности наступления того или иного события. Хотя, как показано на примерах, можно выйти и за рамки теории вероятности, не требуя полноты множества событий и условий нормировки, но взвешивая события на основе каких-то других принципов.

    Итак, для успешной, наглядной и легко рассчитываемой трассировки решим вопрос кардинально: какие веса полагать равными нулю, а какие - единице? Все прочие возможности, например $$min\ \omega _{ij} = 0,1$$, введение порога h = 0,5 и т.д., будут способствовать более плавной работе сети, непрерывности перехода из состояния в состояние.

    Применив принципы комбинаторики и эвристики, выполним трассировку нейросети (рис. 3.13). На рисунке наглядно показано, какая нейросеть была предоставлена, насколько она "неповоротлива", скажем, по сравнению с однослойной "каждый с каждым".

    (рис 3.13) Результат трассировки многослойной нейросети

    Далее будет представлен формальный алгоритм трассировки. Однако чтобы настроиться на его понимание, следует проанализировать свои действия и сделать следующие выводы:

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

    Матрица следования, отражающая трассировку нейросети, получается на основе рис. 3.13, если отметить элементы, соответствующие "тонким" линиям, нулевыми весами, а элементы, соответствующие "жирным" линиям, - весами, равными единице.

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

    (рис 3.14) Динамический путь возбуждения

    Аналогично получают динамические пути возбуждения, приводящие к другим решениям.

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

    $$\dots$$ Вот теперь-то мы довольны! Мы снабдили дядю Рамзая универсальной обучаемой нейросетью. Теперь, если он, раскаявшись, вновь возлюбит свою благороднейшую профессию, он найдет ей (сети) достойное применение в водворении Васи, Пети K0 на то спальное место, которого они действительно заслуживают.

    3.8. Нейросетевые технологии и нейрокомпьютеры

    Итак, располагая знаниями о ситуациях на входе управляющей системы и реакциях на каждую из них, получаем таблицу. В одном столбце, так называемом запросном поле, - вектор-ситуация, в другом, ответном поле - принимаемое решение. Такая идея ситуационного управления высказана Д.А. Поспеловым [23] еще в 1970-х годах.

    Для ее воплощения можно применить технологии построения ассоциативной памяти, столь широко используемой в современных вычислительных системах. Если между ситуациями ввести операции отношения, то можно построить операции вида "найти ближайшую величину слева (справа)", "найти ближайшие включающие границы" и т.д. Идея ассоциативной ЭВМ давно реализована, например в STARAN [15] (1977 г.).

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

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

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

    Зачем же нам следовать столь неловкому воплощению?

    Ответ может быть лишь таким: все хорошо к месту. Просто более тщательно следует определять области разумного применения каждого из различных средств решения задач искусственного интеллекта. И как можно раньше уйти от опасных для здоровья вопросов философски-мистического характера.

    Хотя и следует вновь заглянуть "в зеркало".

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

    Значит, в нашей жизнедеятельности, требующей разнообразного проявления, существует такая ниша, эффективная на самом низком уровне животного состояния, где решение должно быть сверхоперативным, скорее - рефлекторным, не допускающим анализа. Этому способствует высокий параллелизм сети. Именно высокий параллелизм, наряду с исключением сложных расчетов, обусловил взрыв интереса к системам искусственного интеллекта в начале 1980-х годов, когда остро встала задача разработки вычислительных средств сверхвысокой производительности.

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

    Этот параллелизм выражается в том, что одновременно обрабатывается большое число цепочек нейронов. При этом каждый нейрон обрабатывается хотя и по одному алгоритму, но - по разным его ветвям: один, в конце концов, возбудится, другой нет; связи нейрона индивидуальны и изменяются не идентично связям других нейронов и т.д.

    Тогда, ставя задачу разработки параллельного вычислительного устройства - нейрокомпьютера, способного имитировать работу нейросети с учетом ее достоинств по реализации высокой производительности, следует учесть, что:

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

    Привлекательна реализация "большой" нейросети на основе сетевых технологий.

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

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

    ***

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

    Почему же мы, располагая столь богатым арсеналом средств искусственного интеллекта, в основе своей (как нам кажется!) опирающихся далеко не на одни только нейросети, самодовольно недоумеваем, отчего они не были первоначально заданы Природой, а явились плодом нашей творческой гениальности? И мы кощунственно вопрошаем:

    - Ты что, Господи, не мог додуматься до этого Сам?

    И посылается нам догадка с Неба: о Великой Целесообразности, о непрерывности и преемственности Развития, о предлагаемом Базисе, требующем Надстройки, о вечной Причинно-Следственной Вытекаемости… Мозг - конструктивно целесообразен, развиваем, универсален, самодостаточен. Мозг - основа, на которой еще не то можно построить!

    Здесь можно привести пример колеса, не существующего в живых организмах. Какова должна быть длина нерва, чувствующего обод колеса? Значит, колесо должно быть отделено от живого существа! Но не рожать же матери отдельно ребенка, отдельно - колесо к нему. И сказал Господь Человеку:

    - Я дам тебе разум, а колесо ты сделаешь сам $$\dots$$

    Нет, додумался Он, Высший Разум, - посредством средства, вложенного в нас $$\dots$$ Мы сыграли роль слепых исполнителей предназначенного, предопределенного, предсказанного $$\dots$$ Словно микробы в желудочно-кишечном тракте - в заблуждении о личном счастье и сытости, - в действительности мы работаем на Волю Создателя, помогая Ему в главной и глобальной установке на Развитие.

    Страницы:

    "В огороде бузина, а в Киеве дядька".

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

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

    $$\dots$$ Бытует теоретико-практическая предпосылка, объявляющая, что нейросеть формируется "под задачу". Однако в природе есть идеальная, универсальная, "унифицированная" нейросеть - наш мозг!.. И каждый из нас не испытывает серьезных технических трудностей, если, совершая жизненную ошибку, становится не коммерсантом-коробейником, а, скажем, блестящим специалистом по реликтовым захоронениям в мезозойский период. Более того, говорят, что если человек талантлив в одном, то он талантлив во всем.

    В книге "От кого мы произошли?" (М.: ООО "АиФ Принт", 2000), в главе "Почему мы смотрим друг другу в глаза?" Э. Мулдашев говорит об известных ему 22 параметрах, отражающихся на глазной области лица и динамически описывающих морально-психологическое состояние собеседника-партнера. Однако обсчитать на компьютере удалось лишь два. Автор удивлен той колоссальной скоростью, с которой ведет такую обработку человеческий мозг: "Воистину велик Бог, создавший такое компьютерное совершенство мозга!"

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

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

    Именно возможности параллельной обработки информации, наряду с допустимым отсутствием формальных расчетов - только на основе ассоциативного мышления, - привлекли к себе внимание проектировщиков супер-ЭВМ в период т.н. "Японского вызова" в начале 1980-х годов.

    3.1. Начинаем решать пример

    "В России революция - дрогнула мать

    сыра земля, замутился белый свет…"

    Нейросетевые технологии основаны на моделировании деятельности мозга. А как сказал Р. Шеннон, "Моделирование есть искусство" [29]. И как любое искусство, модель нейросети может базироваться на примерах, опыте и общих рекомендациях.

    Рассмотрим пример, который навеян славным временем революционной перестройки, предлагающей нам эталоны актуальности, культурного ориентира и предприимчивости.

    Вася и Петя - друзья. Нет, не в том смысле: они почти нормальной сексуальной ориентации. Скорее в смысле вечной святой мужской дружбы, без смущения применяющей слово "друг". Обозначим А - множество друзей,

    $$А = \{Вася, Петя\}$$

    Вася и Петя - крутые парни. Они плохо учились в школе, и это хорошо! Они создали "крышу", под которой успешно трудится ряд палаток

    $$\begin{array}{rl} С = \{"Оксана", "Роксана", \\ "Марина","Регина", \\ "Св. Аполлинария"\}\end{array}$$

    заботливо опекаемые хозяйками, соответственно, Оксаной и Роксаной, Мариной и Региной, а также Аполлинарией. Палатки реализуют продукцию фирм

    $$В = \{Красный Киллер, Пират, Ночная Бабочка\}$$

    Фирма Красный Киллер в секретных подвалах славных подразделений бойцов холодной войны на основе бабушкиного самогона и контрабандного синтетического спирта гонит всемирно известную вино-водочную продукцию отличного качества. Фирма Пират производит аудио- и видеопродукцию и другие культурные ценности. Фирма Ночная Бабочка стряпает французскую косметику из мосластых московских дворняг.

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

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

    (рис 3.1) Предмет исследования

    А информации приходится обрабатывать дяде Рамзаю много. Он, прямо скажем, работает в условиях неопределенности и усиленных помех. Судите сами. Оксана делит любовь между Васей и Петей. Роксана - пока нет. Марина и Регина, жалея, подкармливают юных следопытов. Аполлинария вообще закадрила хахаля из местной мэрии и разъезжает в длиннющем "линкольне". Тщетно пытаясь разрушить узы бескорыстной дружбы, фирма Пират напрямую подмазала Васю, снизив нагрузку вымогательства на свою продукцию. Петя, кажется, пошел на нарушение Конвенции и вторгается в область, контролируемую конкурентами. (Ох, не избежать благородной разборки, со стрельбой и окровавленными трупами!) Скоро отмотает свой срок Никита, и предприятие расширится и т.д., и т.д., и т.д. $$\dots$$

    Все такие обстоятельства прямо или косвенно влияют на долю прибыли дяди Рамзая.

    Однако, разбираясь в столь сложной ситуации - для демонстрации действительно очень трудно формализуемой задачи, - мы чувствуем, как чем-то липким покрываются наши честные ладошки. А потому мы решительно отталкиваемся от $$\dots$$ и со сладким упоением возносимся на уровень милого сердцу абстрактного, математического, формально-логического мышления.

    Но, прежде всего, принимая столь ответственный заказ, мы хотим четко уяснить, что хочет дядя Рамзай, - чтобы все же максимально формализовать задачу. И после долгих согласований мы устанавливаем:

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

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

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

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

    $$if \ \ A1 \ \ then \\ \ \ if \ \ B1 \ \ then \ \ R1 \ \ else \\ \ \ \ \ if \ \ (C1\vee C2\vee C3) \\ \ \ \ \ \ \ then \ \ R2 \ \ else \ \ R3 \\ else \\ if \ \ B3 \ \ then \ \ R4 \ \ else \ \ R5.$$

    Здесь R1 - R5 - принимаемые решения.

    Одно решение соответствует некоторой, в общем случае не единственной, комбинации событий. Для изображения таких комбинаций воспользуемся записями, например, вида $$А1\wedge (В2\vee В3)\wedge (С4\vee С5)$$. Это означает, что Вася отправился в палатку то ли к Регине, то ли к Аполлинарии, торгующей продукцией то ли фирмы Пират, то ли фирмы Ночная Бабочка. Однако эта же запись означает, что все составляющие ее конъюнкции $$А1\wedge В2\wedge С4$$, $$А1\wedge В3\wedge С4$$ и др. приводят к одному и тому же решению.

    Проанализировав и перебрав все возможные ситуации, с учетом одинакового принимаемого решения, получим систему логических высказываний - предикатов, как основу формализации задачи при построении нейросети:

    $$\left \begin{array} {1} if A1\wedge B1\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R1;\\ if A1\wedge (B2\vee B3)\wedge (C1\vee C2\vee C3) \ then\ R2;\\ if A1\wedge (B2\vee B3) \wedge (C4\vee C5) \ then\ R3;\\ if A2\wedge B3\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R4;\\ if A2\wedge (B1\vee B2)\wedge (C1\vee C2\vee C3\vee C4\vee C5) \ then\ R5.\end{array}$$

    Тогда, например, первое логическое высказывание означает "Если Вася отправился в одну из пяти палаток, и все они торгуют сегодня продукцией фирмы Красный Киллер, то следует принять решение R1 (например, заказать туристическую путевку)".

    Второе логическое высказывание означает: "Если Вася посетил одну из палаток С1, С2 или С3, торгующих сегодня продукцией фирм В2 и (или) В3, то следует принять решение R2 " и т.д.

    3.2. Возбуждение входного слоя

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

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

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

    Дадим рекомендации, основанные на "событийном" принципе.

    В нашем новом примере о превышении скорости разобьем скорость на диапазоны штрафования, например, [90-100), [100-110), [110-120), [120-200]. За каждым диапазоном скорости закрепим нейрон входного слоя - рецептор. Определим его среднее значение возбуждения, равное 1. Пусть отклонение к границам диапазона скорости пропорционально уменьшает эту величину возбуждения, увеличивая величину возбуждения рецептора "соседнего" диапазона. Другой вариант задания исходных данных основан на решении вопроса принадлежности скорости некоторому диапазону. Тогда величина возбуждения превратится в булеву переменную, фиксируя событие.

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

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

    Здесь явно просматривается концепция нечетких множеств [30].

    Множество называется нечетким, если элементы входят в него с некоторой вероятностью.

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

    Тогда, на этапе обучения нейросети, получим возможность формирования аналога некой таблицы, в соответствии с которой будет действовать инспектор. (Однако здесь пока не рассматривается процесс обучения нейросети - формирование этой таблицы, - а только принцип формирования данных для входа в нее.)

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

    Следовательно, на входном слое будут формироваться приведенные значения возбуждения.

    В рабочем режиме мы, таким образом, получили возможность использования неопределенной, недостоверной информации. Например, инспектор не смог из-за высокой скорости отличить "ниву" от "чероки". Тогда он решает ввести значение 0,5 в графу "нива" (величина возбуждения рецептора, "отвечающего" за "ниву", станет равной 0,5) и 0,5 - в графу "джип-чероки" (такой же станет величина возбуждения соответствующего рецептора). Однако, подумав, он на всякий случай вводит величину 0,2 в графу ВАЗ 2104, что также во власти его сомнений. Так же инспектор поступает и с другими характеристиками сложившейся ситуации в поисках наиболее достоверного решения по принципу наибольшей похожести.

    3.3. "Схемотехнический" подход к построению нейросети "под задачу"

    Реализуем подход, используемый при построении схем устройств компьютера и другой электронной техники. Выделим функционально полную, для данного применения, систему булевых функций - дизъюнкцию $$\vee$$ и конъюнкцию $$\wedge.$$

    Отрицание нам не понадобится, мы пока не рассматриваем тормозящие связи.

    Нарушив принятые обозначения, построим (рис. 3.2) схему, реализующую алгоритм счета значения выражения (3.1). Предполагаем, что на вход будут подаваться значения булевых переменных, обозначающих события.

    (рис 3.2) "Электронная" схема системы принятия решений

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

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

    Именно здесь должна помочь нейросеть.

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

    Выберем передаточную функцию произвольного ( i -го) нейрона, с числом m входов-дендритов:

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i}); \quad V_{i} := if\: V>1\: then\:1\: else\: V$$

    где $$\xi (x) = x$$ при x >= 0, 0 - в противном случае.

    Здесь Vj, как всегда, - величина возбуждения (другого нейрона), поступающая на j -й вход.

    Тогда нейрон-конъюнктор может быть реализован с помощью существенно высокого порога (рис. 3.3), где значение $$\delta$$ обусловлено некой поправкой, достаточной, чтобы для преодоления порога сигналы возбуждения поступали обязательно по всем входам.

    (рис 3.3) Модель нейрона-конъюнктора

    При обучении предполагается, что входные сигналы - булевы переменные, принимающие значения 0, 1. Положим $$\omega _{ij} = 1/m$$ и выберем $$\delta < 1/m$$. Тогда для того, чтобы преодолеть порог, на всех входах должны быть "1"; недостаток хотя бы одной "1" приведет к тому, что взвешенная сумма будет более чем на 1/m меньше указанной суммы весов.

    При переходе к действительным переменным, когда вместо событий рассматриваются, например, лишь предполагаемые вероятности их наступления, экспериментальный выбор значения $$\delta$$ может обусловить ту границу, когда считаться с возможностью данной комбинации событий нецелесообразно.

    Нейрон-дизъюнктор реализуется, наоборот, при низком значении порога, но при высоких значениях весов. Порог выбирается так, чтобы уже при возбуждении на одном входе возникал сигнал возбуждения на выходе. При этом сигнал на выходе не превышает "1" (рис. 3.4).

    (рис 3.4) Модель нейрона-дизъюнктора

    Понятно, что при полной определенности в режиме обучения возбуждение поступает по единственному входу (нейрон реализует функцию "ИСКЛЮЧАЮЩЕЕ ИЛИ" ). В условиях неопределенности предполагается, что нейрон имитирует выполнение функции "ИЛИ", допуская возбуждение более чем на одном входе.

    Итак, поменяем тип данных и заменим нейронами все элементы на схеме рис. 3.2. Получим нейросеть на рис. 3.5, где нейроны-конъюнкторы заштрихованы.

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

    Например, зададим "правильную" и абсолютно достоверную ситуацию В3 = 1, А1 = 1, С4 = 1 (Вася отправился к Регине, торгующей ямайским ромом). Легко проследить, что в первом такте возбудятся нейроны 1 и 6, реализующие дизъюнкцию. Величина их возбуждения равна "1". В следующем такте возбуждение нейронов 1, 6 и А1 приведет к возбуждению (с величиной, равной "1") нейронов 7 и 9, а в следующем такте - сигналы возбуждения нейронов 6 и 7 поступят на вход нейрона-конъюнктора Вых3. Никакой другой нейрон выходного слоя не возбудится.

    (рис 3.5) Нейросеть с "конъюнкторами" и "дизъюнкторами"

    Рассмотрим другую ситуацию, неопределенную и недостоверную.

    Пусть то ли Вася, то ли Петя - "разведчик" не установил точно - направился то ли к Оксане, то ли к Аполлинарии, торгующим в этот день то ли тройным одеколоном, то ли золотым диском группы "Та-ра-рам".

    Дядя Рамзай, по выданной нами инструкции, решает использовать интуитивные оценки веса или, на нашем языке, оценить достоверность каждой компоненты возникшей ситуации. Поскольку прогулки как Васи, так и Пети одинаково достоверны, то дядя Рамзай полагает величину возбуждения нейронов А1 и А2 равной 0,5 ( VA1 = VA2 = 0,5 ). После долгих раздумий он по наитию полагает VB1 = 0,8, VB2 = 0,8, VC1 = 0,7, VC5 = 0,8.

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

    Сдавая нейросеть "в эксплуатацию", мы установили веса всех конъюнкторов равными 0,5, а дизъюнкторов - равными 1. Пороги конъюнкторов определяются значением $$\delta = 0,4$$. Пороги дизъюнкторов имеют нулевое значение.

    (рис 3.6) Расчет примера

    Важность данного примера требует повторения рисунка нейросети (рис. 3.6) с проставленными возле нейронов значениями сигналов возбуждения.

    В итоге ситуация скорее всего имеет решение R5, и уж никак не R4. Однако ситуация, соответствующая решению R1, требует внимания.

    Пусть при вполне определенной ситуации (все достоверности принимают значение "1") каждое решение Ri приносит прибыль Mi. Тогда средняя величина ожидаемой прибыли для нашей неопределенной ситуации рассчитывается так:

    $$M = \frac{\sum_i M_i V_{Выхi}}{\sum_i V_{Выхi}}=\frac {M_i\cdot 0.825+M-2\cdot 0.675 +M_3\cdot 0.725+M_5\cdot 0.875}{3.1}$$

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

    3.4. Построение нейросети "под задачу"

    Мы построили нейросеть - с экзотическими (с точки зрения невропатолога) конъюнкторами и дизъюнкторами.

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

    Введем ту же, но без ограничения по величине возбуждения, передаточную функцию

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i})$$

    Положим $$\omega _{ij} = 0,8,\ h = 0,2$$. Сеть представлена на рис. 3.7.

    (рис 3.7) Расчет примера на нейросети

    Подадим на вход, например, ситуацию {A1, B1, C3}, требующую решения R1. Величины возбуждений нейронов показаны на рисунке.

    На основе расчетов по полученной сети составим табл. 3.1, отображающую правильную (!) работу сети при получении различных решений. При этом связи, предыстория которых определена дизъюнкторами, требуют проверки не более чем одного "представителя": в рассмотренном примере получаем тот же результат, если вместо С3 положим С1 или С2.

    Примеры расчета принимаемых решений
    Ситуация Требуемое решение VВых1 VВых2 VВых3 VВых4 VВых5
    {A1, B1, C3} R1 1,144 0,76 0,28 0,024 0,248
    {A1, B2, C2} R2 0,504 1,144 0,664 0,024 0,248
    {A1, B3, C3] R2 0,504 1,144 0,664 0,504 0,024
    {A1, B2, C4} R3 0,504 0,664 1,144 0,024 0,224
    {A1, B3, C5} R3 0,504 0,664 1,144 0,504 0,024
    {A2, B3,C1} R4 0,024 0,504 0,024 1,144 0,504
    {A2, B1, C3} R5 0,504 0,28 0 0,504 0,888
    {A2, B2, C4} R5 0,024 0,024 0,504 0,504 0,888
    VB1 = VB2 = 0.8, VA1 = VA2 = 0.5, VC1 = 0.7, VC5 = 0.8 ? 0,824 0,529 0,593 0,312 1,003

    Анализируя первые восемь строк таблицы, соответствующие достоверным ситуациям, видим, что по крайней мере максимум возбуждения определяется устойчиво верно.

    Рассмотрим ту же неопределенную ситуацию. Она отражена в последней строке таблицы. Близка ли она более всего ситуации, когда Петя направился к Аполлинарии и надо принимать решение R5? Ситуация с Васей, устремившимся туда же, дает примерно тот же ответ.

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

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

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

    (рис 3.8) Однослойная нейросеть

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

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

    Примеры расчета решений по однослойной нейросети
    СитуацияТребуемое решение VВых1 VВых2 VВых3 VВых4 VВых5
    {A1, B1, C3} R1 2,2 1,4 0,6 0,6 1,4
    {A1, B2, C2} R2 1,4 2,2 1,4 0,6 1,4
    {A1, B3, C3} R2 1,4 2,2 1,4 1,4 0,6
    {A1, B2, C4} R3 1,4 1,4 2,2 0,6 1,4
    {A1, B3, C5} R3 1,4 1,4 2,2 1,4 0,6
    {A2, B3,C1} R4 1,4 1,4 0,6 2,2 1,4
    {A2, B1, C3} R5 1,4 0,6 0 1,4 2,2
    {A2, B2, C4} R5 0,6 0,6 1,4 1,4 2,2
    VB1 = VB2 = 0.8, VA1 = VA2 = 0.5, VC1 = 0.7, VC5 = 0.8 ? 2,04 1,4 0,84 1,4 2,68

    3.5. Формализация нейросети

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

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

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

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

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

    Составим матрицу следования S (рис. 3.9), число строк (и столбцов) которой равно числу нейронов сети, включая нейроны входного и выходного слоя. Каждая строка (и столбец с тем же номером) соответствуют одному нейрону.

    Элемент (i, j) этой матрицы - суть непустой объект, содержащий вес $$\omega _{ij}$$ синапсической связи j -> i, если такая связь существует. В то же время элементы матрицы S следует интерпретировать как булевы переменные, равные "1" в случае ненулевого значения указанного веса. Это разрешает выполнение логических операций над строками и столбцами матрицы S, рассматривая ее как аналогичную матрицу следования, используемую при описании частично упорядоченных множеств работ в параллельном программировании [6].

    (рис 3.9) Матрица следования с транзитивными связями

    Матрицу S можно изучать в статическом режиме, исследуя и корректируя возможные пути прохождения возбуждений. По этой же матрице в динамическом режиме (моделирования) можно исследовать действительные пути прохождения возбуждений. Такое исследование связано с потактовым расчетом величин возбуждения нейронов.

    Нулевые строки (входы) матрицы S соответствуют нейронам входного слоя - рецепторам, нулевые столбцы (выходы) - нейронам выходного слоя.

    Нейроны образуют статические цепочки $$\alpha _{1} \to \alpha _{2} \to \dots \to \alpha _{m}$$, длины m, если существуют синапсические связи (впредь будем опускать слово "синапсические") вида $$\alpha _{k} \to \alpha _{k+1}$$. Составляя все статические цепочки по графу G, можно выделить одну или более цепочек максимальной длины. Такие цепочки назовем критическими. (В традиционных многослойных моделях длина критической цепочки совпадает с числом слоев сети.)

    Пусть по статической цепочке i->j->k мы обнаружили отсутствие непосредственной связи i->k, т.е. элемент матрицы S, стоящий на пересечении k -й строки и i -го столбца, равен "0". Однако очевидно опосредствованное влияние возбуждения нейрона i на величину возбуждения нейрона k, что указывает на наличие транзитивной связи i -> k. Нахождение транзитивных связей позволяет выявлять все нейроны, потенциально возбуждающие определенный нейрон выходного слоя.

    Алгоритм дополнения матрицы S транзитивными связями весьма прост.

    Для всех i = 1, 2 ,..., N:

    Формируем новое значение строки i логическим сложением этой строки со строками, соответствующими непустым элементам в ней. "Новые" непустые элементы заменяем на не пустые элементы, обозначающие транзитивные связи.

    В нашем примере матрица S, дополненная транзитивными связями (непустые клеточки), и представлена на рис. 3.9.

    Зафиксируем некоторое подмножество R нейронов входного слоя и единственный нейрон r выходного. Построим множество цепочек, ведущих из выделенного подмножества нейронов входного слоя в данный нейрон выходного слоя. Выделенное таким образом множество цепочек назовем статическим путем возбуждения данного нейрона выходного слоя по множеству нейронов входного слоя. Обозначим его R->r.

    Представим алгоритм формирования статического пути возбуждения R->r.

  • Вычеркиваем из матрицы следования S строки и столбцы, которые соответствуют нейронам, не принадлежащим R.
  • Вычеркиваем из матрицы следования S все строки и столбцы, отображающие нейроны выходного слоя, кроме нейрона r.
  • Вычеркиваем из матрицы следования S строки и столбцы, отображающие нулевые позиции строки нейрона r.
  • Вычеркиваем из матрицы следования S строки и столбцы, отображающие нейроны внутренних слоев нейросети, в том случае, если в результате предыдущего вычеркивания эти строки оказались нулевыми.
  • Выполняем пункт 4, пока не прекратится образование нулевых строк.
  • На рис. 3.10 матрицей S[B1, A1, C1 -> Вых1] отображено множество цепочек, ведущих из нейронов В1, А1, С1 в нейрон Вых1, т.е. статический путь возбуждения [B1, A1, C1] -> Вых1.

    (рис 3.10) Статический путь возбуждения

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

    Динамической цепочкой возбуждений $$\beta _{1} \to \beta _{2} \to \dots \to \beta _{m}$$ длины m назовем статическую цепочку, составленную из нейронов, первые m?1 которых обладают отличной от нуля величиной возбуждения.

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

    Предъявим сети некоторый образ или эталон (не будет большой ошибки, если и здесь при предъявлении мы будем пользоваться словом "образ", ибо все есть образ чего-то), приводящий к возбуждению нейроны входного слоя, - в некоторой конфигурации. Эти нейроны образуют множество R. В результате возбуждения сети оказался возбужденным некоторый нейрон r выходного слоя. Сформировался, таким образом, динамический путь возбуждения R -> r ; очевидно, его образуют нейроны, входящие в состав статического пути возбуждения R -> r, так как некоторые нейроны могут остаться невозбужденными.

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

    3.6. Модель механизма запоминания

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

    Здесь работает известное правило Хебба [19, 20]: Синапсический вес связи двух возбужденных нейронов увеличивается.

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

    По-видимому, синапсы обладают свойством "остывания" со временем, если нет подтверждения их использования. Такое предположение адекватно свойству нашей памяти: ненужная, не подтверждаемая и не используемая периодически информация стирается ("Связи рвутся!"). Стирается до такой степени, что приходится учиться заново.

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

    При создании искусственных механизмов обучения нейросети возникают вопросы:

  • Увеличивать ли веса всем нейронам, образующим статический путь возбуждения - для запоминания эталона?
  • Увеличивать ли веса только вдоль некоторых (опорных) цепочек статического пути возбуждения?
  • Увеличивать ли веса только нейронов, образующих динамический путь возбуждений ; ведь выше предполагалось, что уже само возбуждение увеличивает вес связи? Зачем возбуждать дополнительные нейроны, если и этих достаточно?
  • По-видимому, третий аспект в большей степени соответствует самообучению, самонастройке. Вмешательство в наш мозг на этом уровне исключено. Однако система искусственного интеллекта - в более выгодном положении. Ведь она находится под нашим неусыпным контролем, реализуя обучение "с учителем", и допускает любое вторжение, корректирующее вынужденные недостатки естественного интеллекта. Поэтому, рассматривая пример (и пытаясь накопить хоть какой-то опыт), мы будем увеличивать веса синапсических связей нейронов, составляющих выделенные цепочки статического пути возбуждения от эталона к образу. Назовем такой метод методом опорных путей, который выработан в процессе проведения многочисленных экспериментов. В частности, увеличение синапсических весов большого числа нейронов приводило к неудачам, связанным с корреляцией динамических цепочек возбуждения для разных эталонов и с быстрым насыщением нейросети (недостаток многих известных алгоритмов обучения). В процессе обучения многим эталонам рано или поздно все веса сети оказывались повышенными, и она прекращала что-либо различать. Начиналась путаница согласно выражению "Ум за разум заходит!"

    Что же касается величины изменения синапсических весов, то вряд ли необходимо относительно каждого нейрона решать системы дифференциальных уравнений в частных производных. (Речь идет о методе обратного распространения ошибки, подробно изложенном в [20].) Природа больше рассчитывает на авось, "на глазок" и другие мудрые и практические приблизительные ориентиры, малопривлекательные теоретически. В данном случае нас более обнадеживает "прилив крови" в нужном направлении, стимулируемый информационным раздражителем или легким подзатыльником. В связи с этим введем некую переменную $$\delta \omega$$, выверяемую практически (а то и просто единицу), уменьшаемую или увеличиваемую при необходимости.

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

    3.7. Применение "готовых" нейросетей

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

    3.7.1. Однослойная нейросеть

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

    Однослойная нейросеть, составленная по принципу "каждый с каждым", представлена на рис. 3.11.

    (рис 3.11) Формирование однослойной нейросети

    Пусть используется предложенная выше передаточная функция

    $$V := \xi( \sum^m_{j=1}V_{j}\omega_{ij} - h_{i})$$

    Значения $$\omega _{ij}$$ предстоит подобрать, а значения hi положим равными нулю.

    Закрепим 10 нейронов входного слоя за исходными данными, 5 выходов - за решениями. Этим мы выделим интересующую нас подсеть, которой соответствует матрица следования на рис. 3.12.

    (рис 3.12) Матрица следования для однослойной нейросети

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

    Для того чтобы сформировать решение R1 на нейроне Вых1, надо значительно увеличить веса связей этого нейрона с нейронами В1, А1, С1, С2, С3, С4, С5, т.е. построить статический путь возбуждения [B1, A1, C1, C2, C3, C4, C5] -> Вых1 и вдоль него по некоторой дисциплине увеличить веса связей.

    В данном случае результат очевиден, поэтому обратим внимание на некоторый общий подход.

    Установим веса связей между нейронами В1, А1, С1, С2, С3, С4, С5 с одной стороны, и нейроном Вых1 - с другой равными единице, оставив нулевыми веса связей этого нейрона с другими нейронами входного слоя. Таким образом полностью исключается влияние других нейронов входного слоя на данный выходной нейрон. Конкретная задача может потребовать корректировки, учета взаимного влияния всех входных ситуаций в результате тщательного экспериментального исследования задачи.

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

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

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

    3.7.2. Нейросеть произвольной структуры

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

    Пусть выбранная нами нейросеть имеет 12 входов (более чем достаточно), 5 выходов и реализует ту же передаточную функцию с начальными значениями весов $$\omega _{ij} = 0$$ и порога h = 0.

    Однако сеть обладает специфической топологией, затрудняющей ее обучение. Сеть многослойная, что исключает связи "через слой", присутствующие, например, на рис. 3.7 как результат построения нейросети "под задачу". Да и связь между слоями скорее соответствует известному предупреждению "шаг влево, шаг вправо $$\dots$$ ".

    Будем использовать метод опорных путей, или трассировки, расширяющий использованный выше "схемотехнический" подход. Его можно изобразить схемой рис. 3.2 $$\to$$ рис. 3.5 $$\to$$ рис. 3.7 $$\to$$ рис. 3.8. Суть метода - в трассировке соединений, в назначении высоких весов некоторых связей, превращающих нейросеть в законченное функциональное устройство. При такой трассировке обучение производится на эталонах в полном смысле этого слова, на вполне определенных (достоверных) ситуациях, например, на отсутствии (0) события или на его наступлении (1). После обучения сеть должна выдавать наиболее близкое решение при недостоверной информации, т.е. согласно вероятности наступления того или иного события. Хотя, как показано на примерах, можно выйти и за рамки теории вероятности, не требуя полноты множества событий и условий нормировки, но взвешивая события на основе каких-то других принципов.

    Итак, для успешной, наглядной и легко рассчитываемой трассировки решим вопрос кардинально: какие веса полагать равными нулю, а какие - единице? Все прочие возможности, например $$min\ \omega _{ij} = 0,1$$, введение порога h = 0,5 и т.д., будут способствовать более плавной работе сети, непрерывности перехода из состояния в состояние.

    Применив принципы комбинаторики и эвристики, выполним трассировку нейросети (рис. 3.13). На рисунке наглядно показано, какая нейросеть была предоставлена, насколько она "неповоротлива", скажем, по сравнению с однослойной "каждый с каждым".

    (рис 3.13) Результат трассировки многослойной нейросети

    Далее будет представлен формальный алгоритм трассировки. Однако чтобы настроиться на его понимание, следует проанализировать свои действия и сделать следующие выводы:

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

    Матрица следования, отражающая трассировку нейросети, получается на основе рис. 3.13, если отметить элементы, соответствующие "тонким" линиям, нулевыми весами, а элементы, соответствующие "жирным" линиям, - весами, равными единице.

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

    (рис 3.14) Динамический путь возбуждения

    Аналогично получают динамические пути возбуждения, приводящие к другим решениям.

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

    $$\dots$$ Вот теперь-то мы довольны! Мы снабдили дядю Рамзая универсальной обучаемой нейросетью. Теперь, если он, раскаявшись, вновь возлюбит свою благороднейшую профессию, он найдет ей (сети) достойное применение в водворении Васи, Пети K0 на то спальное место, которого они действительно заслуживают.

    3.8. Нейросетевые технологии и нейрокомпьютеры

    Итак, располагая знаниями о ситуациях на входе управляющей системы и реакциях на каждую из них, получаем таблицу. В одном столбце, так называемом запросном поле, - вектор-ситуация, в другом, ответном поле - принимаемое решение. Такая идея ситуационного управления высказана Д.А. Поспеловым [23] еще в 1970-х годах.

    Для ее воплощения можно применить технологии построения ассоциативной памяти, столь широко используемой в современных вычислительных системах. Если между ситуациями ввести операции отношения, то можно построить операции вида "найти ближайшую величину слева (справа)", "найти ближайшие включающие границы" и т.д. Идея ассоциативной ЭВМ давно реализована, например в STARAN [15] (1977 г.).

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

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

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

    Зачем же нам следовать столь неловкому воплощению?

    Ответ может быть лишь таким: все хорошо к месту. Просто более тщательно следует определять области разумного применения каждого из различных средств решения задач искусственного интеллекта. И как можно раньше уйти от опасных для здоровья вопросов философски-мистического характера.

    Хотя и следует вновь заглянуть "в зеркало".

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

    Значит, в нашей жизнедеятельности, требующей разнообразного проявления, существует такая ниша, эффективная на самом низком уровне животного состояния, где решение должно быть сверхоперативным, скорее - рефлекторным, не допускающим анализа. Этому способствует высокий параллелизм сети. Именно высокий параллелизм, наряду с исключением сложных расчетов, обусловил взрыв интереса к системам искусственного интеллекта в начале 1980-х годов, когда остро встала задача разработки вычислительных средств сверхвысокой производительности.

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

    Этот параллелизм выражается в том, что одновременно обрабатывается большое число цепочек нейронов. При этом каждый нейрон обрабатывается хотя и по одному алгоритму, но - по разным его ветвям: один, в конце концов, возбудится, другой нет; связи нейрона индивидуальны и изменяются не идентично связям других нейронов и т.д.

    Тогда, ставя задачу разработки параллельного вычислительного устройства - нейрокомпьютера, способного имитировать работу нейросети с учетом ее достоинств по реализации высокой производительности, следует учесть, что:

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

    Привлекательна реализация "большой" нейросети на основе сетевых технологий.

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

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

    ***

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

    Почему же мы, располагая столь богатым арсеналом средств искусственного интеллекта, в основе своей (как нам кажется!) опирающихся далеко не на одни только нейросети, самодовольно недоумеваем, отчего они не были первоначально заданы Природой, а явились плодом нашей творческой гениальности? И мы кощунственно вопрошаем:

    - Ты что, Господи, не мог додуматься до этого Сам?

    И посылается нам догадка с Неба: о Великой Целесообразности, о непрерывности и преемственности Развития, о предлагаемом Базисе, требующем Надстройки, о вечной Причинно-Следственной Вытекаемости… Мозг - конструктивно целесообразен, развиваем, универсален, самодостаточен. Мозг - основа, на которой еще не то можно построить!

    Здесь можно привести пример колеса, не существующего в живых организмах. Какова должна быть длина нерва, чувствующего обод колеса? Значит, колесо должно быть отделено от живого существа! Но не рожать же матери отдельно ребенка, отдельно - колесо к нему. И сказал Господь Человеку:

    - Я дам тебе разум, а колесо ты сделаешь сам $$\dots$$

    Нет, додумался Он, Высший Разум, - посредством средства, вложенного в нас $$\dots$$ Мы сыграли роль слепых исполнителей предназначенного, предопределенного, предсказанного $$\dots$$ Словно микробы в желудочно-кишечном тракте - в заблуждении о личном счастье и сытости, - в действительности мы работаем на Волю Создателя, помогая Ему в главной и глобальной установке на Развитие.

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