Главная arrow Логика arrow Реализация нейронов
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Реализация нейронов Печать

Реализация нейронов в семантических нейронных сетях

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

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

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

Для решения этих проблем создаются различные программные комплексы, ориентированные на возможность работы с ними практически без обучения. Однако наличие в таких продуктах чрезвычайно развитого сервиса делает опять таки невозможным изучение всех полезных функций за приемлемый промежуток времени. Перед компьютерными специалистами встают задачи по разработке и реализации программного обеспечения всё большей и большей сложности. Большее распространение нашли так называемые «средства быстрой разработки приложений» (CASE Computer added software engineering). В них процесс создания приложения заключается в общении со специализированной программой «Мастер», которая по информации, полученной от пользователя, сама вносит изменение в исходные тексты программ. Создаются специальные методы разработки программного обеспечения, такие как структурное программирование, объектно-ориентированное программирование, компонентное программирование, автоматизация программных систем.

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

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

Преобразование виртуальных машин

Для определения того, чем же являются виртуальные машины, рассмотрим функционирование современной вычислительной системы. Основой вычислительной системы являются транзисторы. Транзисторы - это электронные аналоговые устройства. Под аналоговыми электронными устройствами понимаются такие устройства, которые обрабатывают непрерывные сигналы в каком либо диапазоне значений. Важно заметить, что реально существующий прибор - транзистор обрабатывает только непрерывный аналоговый сигнал, принимающий бесконечное число значений в заданном диапазоне. Обычно в вычислительной системе применяются два диапазона 0-3.3В и 0-5В. Из технологических соображений выбирается диапазон изменения аналогового сигнала, обрабатываемого транзисторами. (В ТТЛ: 0-5В.). В этом рабочем диапазоне выбираются два непересекающихся поддиапазона, затем этим поддиапазонам назначаются логические значения "Ложь" и "Истина".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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