<<
>>

3.1. Жизненная сила элемента

И смотрю, и вражду измеряю, Ненавидя, кляня и любя: За мученья, за гибель — я знаю — Все равно: принимаю тебя! А.Блок

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

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

Предположим, что наши нейроны способны к следующим элементарным действиям (ЭД): сложить ('+'), вычесть по модулю ('‑'), умножить ('SYMBOL 180 \f "Symbol"ґ'), разделить ('/'), ничего не делать (' '). Можно допустить и операции логарифмирования и возведения в степень — это позволит расширить возможности системы по обучению. Нас же сейчас интересует сам подход, поэтому мы ограничимся только пятью названными операциями. Далее, выделим участок «пустого» пространства, на который будет оказываться воздействие по двум входам и одному выходу.

Предположим, что возникшее напряжение должно компенсироваться образованием нейронов в этом «пустом» пространстве.

Предположим, что элементов должно появиться ровно столько (не меньше и не больше), сколько достаточно для компенсации напряжения.

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

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

Например, пусть на первый вход подан сигнал силой три условные единицы (x=3), на второй — 5 (y=5), требуемый результат — 20 (z=20).

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

x,y — входные значения;

z — выходное значение;

d — элементарное действие из множества [+, *,-,/,' '].

При этом, считаем, что «ничего не делать» является наиболее предпочтительным из всех ЭД.

Это действие подразумевает отсутствие нейрона и введено исключительно для полноты картины. Образно говоря, оно полностью соответствует восточной мудрости «никогда не делай лишнего шага, если можешь оставаться на месте, ибо тебе не ведомо — не окажется ли этот твой шаг последним».

Требуется подобрать такое d, которое минимизировало бы выражение

(z — d(x,y))2. (3.1)

Как видно, минимум достигается только тогда, когда родится нейрон с ЭД «умножить». Обозначим его через А1. Возникший нейрон максимально сгладит существующие противоречия, но до полной идиллии будет еще далеко. Напряжение ослабнет, но еще останется. В том случае, если оставшегося напряжения система не в состоянии будет «долго терпеть», то ей придется опять решать ту же самую задачу, задачу по устранению возникшего напряжения, но уже в новых условиях. Целевую функцию (3.1) придется переписать (с учетом нового элемента, который, став полноправным членом системы, имеет право на свое индивидуальное видение мира) в виде:

min (z‑ (d1(x,y,А1)) 2 (3.2)

или

min ((z - d2(d1(x,y),А1)) 2,(z - d2(d1(x,А1), y)) 2,(z - d2(d1(А1,y), x))) 2.

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

Важно отметить, что если на первом этапе входные данные являлись той силой, которая из камня выжимала воду, порождая собой все происходящее, подобно Господу Богу, то к тому времени, когда система обретет достаточную сложность, включив в себя максимально допустимое имеющимися ресурсами количество элементов, ситуация резко изменится. Теперь уже те входные данные, которые ранее создавали миры, становятся похожими более на выстрел стартового пистолета, чем на «большой взрыв», породивший Вселенную. Для сложной системы, способной самостоятельно (сама для себя) генерировать проблемы, входные данные порой значат меньше, чем сгенерированные на их основе собственные элементы, которым есть что сказать.

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

Общественное сознание системы и сами ее элементы это начинают понимать. Поэтому наступает момент истины, когда один из элементов (Заратустра) способен громко заявить: «Перед Богом мы все были равны! Но теперь умер этот Бог. Но перед толпою мы не хотим быть равны».

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

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

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

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

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

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

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

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

В рассмотренном примере в качестве ЭД фигурировали арифметические операции, и именно для удобства работы с ними была подобрана соответствующая функция цели. Однако многообразие существующих задач никак не позволяет свести все существующие процессы самообучения исключительно к набору арифметических ЭД. Поэтому возникает резонный вопрос: «Позволяет ли подобный подход решать задачи, связанные с переработкой графических или символьных образов, и можно ли его использовать для решения обычных, будничных задач, присущих человеку, как объекту, притягивающемуся целью ?» Ибо ничто не мешает предложить аналогичный подход для моделирования ситуаций в биологическом, социальном и компьютерном мирах.

Анализируя ситуации социальной жизни людей, можно ввести ЭД типа: «бежать», «идти», «сидеть», «ехать», «говорить», «рождаться», «умирать», «повеситься» и т.п. Можно даже ограничить это множество, скорректировав его действиями «не убий», «не возжелай».

Для компьютерной программы в качестве ЭД могут выступать операции: «писать», «читать» и т.д.

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

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

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

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

1. Элемент системы является простейшей неделимой частицей — формальным нейроном.

2. Каждый нейрон способен к одному элементарному действию из некоторого наперед заданного множества, куда входит действие — «ничего не делать». В общем случае в множество ЭД могут быть включены как арифметические операции, так и специальные алгоритмы, мемо-функции. Наличие ЭД «ничего не делать» равносильно отсутствию нейрона;

3. На начальном этапе система представляет собой множество нейронов с ЭД «ничего не делать», на каждый из которых может оказываться воздействие со стороны нескольких входов и одного выхода. Разницу между получаемым выходным значением и требуемым выходным значением назовем напряжением;

4. Считаем, что возникшее напряжение должно компенсироваться изменением у нейронов присущих им ЭД. Изменение ЭД «ничего не делать» на любое другое приводит к рождению нейрона для системы. Предположим, что нейронов должно возникать ровно столько, сколько необходимо для компенсации напряжения;

5. Считаем, что при рождении нейронов выбирается нейрон с тем ЭД, которое максимально способствует минимизации напряжения. Значение напряжения, которое компенсируется рожденным нейроном, назовем жизненной силой нейрона; считаем, что если на нейрон действует напряжение, превосходящее его собственную жизненную силу, то нейрон гибнет.

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

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

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

&В этой связи интересно посмотреть на аналогии, прослеживающиеся в современных технологиях проектирования программного обеспечения для ЭВМ, и, в частности, на объектно-ориентированное программирование в среде Windows, в котором объекты рождаются, наследуя свойства, и умирают, возвращая память.

Цитируется по книге Э.Телло «Объектно-ориентированное программирование в среде Windows (М.: «Наука-Уайли», 1993): «Объектно-ориентированное программирование ¾ это способ программирования, обеспечивающий модульность программ за счет разделения памяти на области, содержащие данные и процедуры. Области могут использоваться в качестве образцов, с которых по требованию могут делаться копии.

Весьма удобно рассматривать объекты как попытку создания активных данных. Смысл, вкладываемый в слова «объект представляет собой активные данные», основан на объектно-ориентированной парадигме выполнения операций, состоящей в посылке сообщений.

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

Цитируется по книге П.Эйткена и С.Джерола «Visual C++ для мультимедиа (К.: «КОМИЗДАТ», 1996): «Любое приложение Windows все время активно взаимодействует с операционной системой. Приложение и система, как молодые влюбленные, с огромной частотой обмениваются множеством сообщений. Каждый раз, когда в системе Windows что-нибудь происходит, она посылает сообщение, на которое ваше приложение может отреагировать тем или иным образом. Часто такое сообщение вызывает целую лавину изменений!

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

Любое действие пользователя во время выполнения Windows-программы вызывает генерацию сообщения.

Любой объект в программе для Windows обладает способностью реагировать на сообщения».

<< | >>
Источник: Сергей Павлович Расторгуев. ФИЛОСОФИЯ ИНФОРМАЦИОННОЙ ВОЙНЫ. МПСИ 2003 г.. 2003

Еще по теме 3.1. Жизненная сила элемента: