Функциональные модели универсального нейрокомпьютера

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

Рубрика Программирование, компьютеры и кибернетика
Вид диссертация
Язык русский
Дата добавления 12.10.2008
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

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

2. Проводим цикл предъявления примеров. Для каждого примера выполняется следующая процедура.

2.1. Если сеть выдала правильный ответ, то переходим к шагу 2.5.

2.2. Если на выходе персептрона ожидалась единица, а был получен ноль, то на выход сети при обратном функционировании подаем .

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

2.4. Проводим шаг обучения с единичными параметрами.

2.5. Переходим к следующему примеру. Если достигнут конец обучающего множества, то переходим к шагу 3, иначе возвращаемся на шаг 2.1.

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

4.3. Язык описания нейронных сетей

В данном разделе описан язык описания нейронных сетей.

4.3.1. Структура компонента

Рассмотрим более подробно структуры данных сети. Как уже было описано в первой части главы, сеть строится иерархически от простых подсетей к сложным. Простейшими подсетями являются элементы. Подсеть каждого уровня имеет свое имя и тип. Существуют следующие типы подсетей: элемент, каскад, слой, цикл с фиксированным числом тактов функционирования и цикл, функционирующий до тех пор, пока не выполнится некоторое условие. Последние четыре типа подсетей будем называть блоками. Имена подсетей определяются при конструировании. В разделе «Имена структурных единиц компонентов» приведены правила построения полного и однозначного имен подсети. В качестве примера рассмотрим сеть, конструирование которой проиллюстрировано на рис. 2. В описании сети NW однозначное имя первого нейрона второго слоя имеет вид K[2].SN.N[1]. При описании слоя однозначное имя первого нейрона записывается как N[1]. В квадратных скобках указываются номер экземпляра подсети, входящей в непосредственно содержащую ее структуру в нескольких экземплярах.

4.3.2. Сигналы и параметры

При использовании контрастирования для изменения структуры сети и значений обучаемых параметров другим компонентам бывает необходим прямой доступ к сигналам и параметрам сети в целом или отдельных ее подсетей. Для адресации входных и выходных сигналов используются имена InSignals и OutSignals, соответственно. Таким образом, для получения массива входных сигналов второго слоя сети, приведенной на рис. 2, необходимо запросить массив NW.K[2].InSignals, а для получения выходного сигнала всей сети можно воспользоваться любым из следующего списка имен:

NW.OutSignals;

NW.N.OutSignals.

Для получения конкретного сигнала из массива сигналов необходимо в конце в квадратных скобках указать номер сигнала. Например, для получения третьего входного сигнала второго слоя сети нужно указать следующее имя - NW.K[2].InSignals[3].

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

4.3.3. Обучаемые и не обучаемые параметры и сигналы

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

4.3.4. Дополнительные переменные

При описании структуры сетей необходимо учитывать следующую дополнительные переменные, доступные в методах Forw и Back. Для каждой сети при прямом функционировании определен следующий набор переменных:

InSignals[K] - массив из K действительных чисел, содержащих входные сигналы прямого функционирования.

OutSignals[N] - массив из N действительных чисел, в которые заносятся выходные сигналы прямого функционирования.

Parameters[M] - массив из M действительных чисел, содержащих параметры сети.

При выполнении обратного функционирования сети доступны еще три массива:

Back.InSignals[K] - массив из K действительных чисел, параллельный массиву InSignals, в который заносятся выходные сигналы обратного функционирования.

Back.OutSignals[N] - массив из N действительных чисел, параллельный массиву OutSignals, содержащий входные сигналы обратного функционирования.

Back.Parameters[M] - массив из M действительных чисел, параллельный массиву Parameters, в который заносятся вычисленные при обратном функционировании поправки к параметрам сети.

При обучении (модификации параметров или входных сигналов) доступны все переменные обратного функционирования и еще два массива:

InSignalMask[K] - массив из K логических переменных, параллельный массиву InSignals, содержащий маску обучаемости входных сигналов.

ParamMask[M] - массив из M логических переменных, параллельный массиву Parameters, содержащий маску обучаемости параметров.

4.3.5. Приведение и преобразование типов

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

Таблица 2

Преобразование типов прямым присваиванием переменной значения выражения

Тип

переменной

Тип

выражения

Пояснение

Real

Real, Integer, Long

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

Long

Integer, Long

При преобразовании типа Integer, действуют следующие правила. Значение переменной помещается в два младших байта. Если значение выражения больше либо равно нолю, то старшие байты равны H0000, в противном случае старшие байты равны HFFFF.

Integer

Integer, Long

При преобразовании выражения типа Long значение двух старших байт отбрасывается.

Таблица 3

Функции преобразования типов

Имя функции

Тип

аргумента

Тип

результата

Описание

Real

Real, Integer, Long

Real

Аналогично прямому присваиванию

Integer

Integer, Long

Integer

Аналогично прямому присваиванию

Long

Integer, Long

Long

Аналогично прямому присваиванию

Str

Real, Integer, Long

String

Представляет числовой аргумент в виде символьной строки в десятичном виде

Round

Real

Long

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

Truncate

Real

Long

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

LVal

String

Long

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

RVal

String

Real

Преобразует действительное число из символьного представления во внутреннее.

StrColor

Color

String

Преобразует внутреннее представление переменной типа Color в соответствии с разд. «Значение переменной типа цвет»

ValColor

String

Color

Преобразует символьное представление переменной типа Color во внутреннее.

Color

Integer

Color

Интерпретирует целое число как значение типа Color.

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

Выражения вычисляются слева на право.

Если два операнда имеют один тип, то результат имеет тот же тип.

Если аргументы имеют разные типы, то выражение имеет старший из двух типов. Список числовых типов по убыванию старшинства: Real, Long, Integer.

Результат операции деления действительных чисел (операция «/») всегда имеет тип Real, вне зависимости от типов аргументов.

В отличие от преобразования типов приведение типов позволяет по-разному интерпретировать одну область памяти. Функция приведения типа применима только к переменным или элементам массива (преобразование типов применимо и к выражениям). Рекомендуется использовать приведение типов только для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long. Список функций приведения типов приведен в табл. 4.

Таблица 4

Функции приведения типов

Название

Тип

результата

Описание

TReal

Real

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

Tinteger

Integer

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

TLong

Long

Четыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое.

TRealArray

RealArray

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

TPRealArray

PRealArray

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

TIntegerArray

IntegerArray

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

TPIntegerArray

PIntegerArray

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

TLongArray

LongArray

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

TPLongArray

PLongArray

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

TLogic

Logic

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

TLogicArray

LogicArray

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

TPLogicArray

LogicArray

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

TColor

Color

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

TFuncType

FuncType

Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции.

TPointer

Pointer

Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес.

TString

String

256 байт области памяти, адресуемой приводимой переменной, интерпретируются как строка символов.

TPString

PString

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

TVisual

Visual

Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент.

Следующие примеры иллюстрируют использование преобразования и приведения типов:

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

4096 * 4096 = 0

Поскольку константа 4096 имеет тип Integer, а 4096 * 4096 = 16777216 = 256 * 65536 , то есть младшие два байта результата равны нулю.

Long(4096 * 4096) = 0

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

Long(4096) * 4096 = 16777216

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

4096.0 * 4096 = 1.677722E+7

Поскольку первый сомножитель имеет тип Real, то и выражение имеет тип Real. Из-за недостатка точности произошла потеря седьмого знака.

В следующем примере, используя приведение типов, в массив действительных чисел A размером в 66 элементов складываются: действительное число в первый элемент массива; длинное целое во второй элемент массива и символьную строку в элементы с 3 по 66.

A[1] = 1.677722E+7

TLong(A[2]) = 16777216

TString(A[3]) = `Пример приведения типов'

Необходимо отметить, что элементы массива A, начиная со второго, после выполнения приведенного выше фрагмента программы не рекомендуется использовать как действительные числа, поскольку элемент A[2] содержит значение 2.350988Е-38, а элемент A[5] - значение -4.577438Е-18. Значение элементов, начиная с A[8] (символьная строка `Пример приведения типов' содержит 23 символа и занимает 24 байта, то есть шесть элементов массива) вообще не зависят от приведенного фрагмента программы и содержат «мусор», который там находился ранее.

В списке типов определены только одномерные массивы. Однако, при необходимости, возможно использование двумерных массивов. Для этого в одномерный массив A необходимо поместить указатели на одномерные массивы. При этом I,J-й элемент двумерного массива записывается в виде:

TPRealArray(A[I])^[J]

В этом примере использована функция приведения типов TPRealArray, указывающая, что I-й элемент массива A нужно интерпретировать как указатель на одномерный массив действительных чисел, и операция «^» указывающая, что вместо указателя на массив TPRealArray(A[I]) используется массив, на который он указывает.

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

4.3.6. Операции

В данном разделе приведены все операции, которые могут быть использованы при построении выражений различного типа. В табл. 5 приведены операции, которые допустимы в целочисленных выражениях (выражениях типа Integer или Long). В табл. 6 - список, дополняющий список операций из табл. 5 до полного списка операций, допустимых в выражениях действительного типа. В табл. 7 - операции, допустимые при построении логических выражений. В табл. 8 -для выражений типа символьная строка. В главе 1 в табл. 3 - для выражений типа Color. Если операндом может быть любой числовой тип, то вместо перечисления всех числовых типов (Integer, Real, Long) указывается слово «числовой»

Таблица 5

Операции, допустимые в целочисленных выражениях

Приоритет

Обозна-

чение

Тип 1-го

операнда

Тип 2-го

операнда

Тип

результата

Название операции

1

*

Integer

Integer

Integer

Умножение

1

*

Long

Integer

Long

Умножение

1

*

Integer

Long

Long

Умножение

1

*

Long

Long

Long

Умножение

1

Div

Integer

Integer

Integer

Целочисленное деление

1

Div

Integer

Long

Long

Целочисленное деление

1

Div

Long

Integer

Long

Целочисленное деление

1

Div

Long

Long

Long

Целочисленное деление

1

Mod

Integer

Integer

Integer

Остаток от деления

1

Mod

Long

Integer

Long

Остаток от деления

1

Mod

Integer

Long

Long

Остаток от деления

1

Mod

Long

Long

Long

Остаток от деления

2

+

Integer

Integer

Integer

Сложение

2

+

Integer

Long

Long

Сложение

2

+

Long

Integer

Long

Сложение

2

+

Long

Long

Long

Сложение

2

-

Integer

Integer

Integer

Вычитание

2

-

Integer

Long

Long

Вычитание

2

-

Long

Integer

Long

Вычитание

2

-

Integer

Long

Long

Вычитание

2

-

Long

Integer

Long

Вычитание

2

-

Long

Long

Long

Вычитание

3

And

Integer

Integer

Integer

Побитное И

3

And

Long

Long

Long

Побитное И

3

Or

Integer

Integer

Integer

Побитное включающее ИЛИ

3

Or

Long

Long

Long

Побитное включающее ИЛИ

3

Xor

Integer

Integer

Integer

Побитное исключающее ИЛИ

3

Xor

Long

Long

Long

Побитное исключающее ИЛИ

3

Not

Integer

Integer

Integer

Побитное отрицание

3

Not

Long

Long

Long

Побитное отрицание

Таблица 6

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

Приоритет

Обозначение

Тип 1-го

операнда

Тип 2-го

операнда

Тип

Результата

Название операции

1

*

Real

числовой

Real

Умножение

1

/

числовой

числовой

Real

Деление

1

RMod

числовой

числовой

Real

Остаток от деления

2

+

Real

числовой

Real

Сложение

2

-

Real

числовой

Real

Вычитание

Таблица 7

Операции, допустимые при построении логических выражений

Прио-

ритет.

Обозна-

чение

Тип 1-го

операнда

Тип 2-го

операнда

Тип

результата

Название операции

1

>

числовой

числовой

Logic

Больше

1

<

числовой

числовой

Logic

Меньше

1

>=

числовой

числовой

Logic

Больше или равно

1

<=

числовой

числовой

Logic

Меньше или равно

1

=

числовой

числовой

Logic

Равно

1

<>

числовой

числовой

Logic

Не равно

2

And

Logic

Logic

Logic

Логическое И

2

Or

Logic

Logic

Logic

Логическое включающее ИЛИ

2

Xor

Logic

Logic

Logic

Логическое исключающее ИЛИ

2

Not

Logic

Logic

Logic

Логическое отрицание

Таблица 8

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

Прио-

ритет

Обозна-

чение

Тип 1-го

операнда

Тип 2-го

операнда

Тип

результата

Название операции

1

+

String

String

String

Конкатенация (сцепка) строк.

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

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

Кроме операций, приведенных в табл. 3 главы 1 и табл. 5-8, определены две взаимно обратные операции для работы с адресами и указателями:

^ - ставится после переменной типа указатель. Означает, что вместо указателя в выражении используется переменная или массив, на который указывает этот указатель. Не допускается после переменных типа Pointer.

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

4.3.7. Язык описания нейронных сетей

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

4.3.7.1. Ключевые слова языка

В табл. 9 приведен список ключевых слов языка описания нейронных сетей. Кроме того, к ключевым словам относятся типы данных, приведенные в табл. 1 главы 1; обозначения операций, приведенные в табл. 3 главы 1, 5, 6, 7, 8; названия функций преобразования (табл. 3) и приведения типов (табл. 4); идентификаторы предопределенных констант, приведенные в табл. 4 главы 1; имена элементарных функций, приведенных в табл. 10 и обозначения функций управления памятью из раздела «функции управления памятью».

Таблица 9.

Ключевые слова языка описания нейронных сетей.

Ключевое слово

Краткое описание

Back

Метод, осуществляющий обратное функционирование подсети. Префикс сигналов обратного функционирования.

Begin

Начало описания тела процедуры, или операторных скобок.

Block

Тип аргумента подсети. Означает, что аргумент является подсетью.

By

Часть оператора цикла с шагом. Предшествует шагу цикла.

Cascad

Тип подсети - каскад.

Connections

Начало блока описания связей подсети.

Contents

Начало блока описания состава подсети.

DefaultType

Тип параметров по умолчанию.

Do

Завершающая часть операторов цикла.

Element

Тип подсети - элемент.

Else

Часть условного оператора. Предшествует оператору, выполняемому, если условие ложно.

End

Конец описания тела процедуры или операторных скобок.

For

Заголовок оператора цикла с шагом.

Forw

Метод, осуществляющий прямое функционирования подсети.

Function

Заголовок описания функции.

Global

Начло блока описания глобальных переменных.

GoTo

Начало оператора перехода.

If

Начало условного оператора.

Include

Предшествует имени файла, целиком вставляемого в это место описания.

InSignalMask

Имя, по которому адресуются маски обучаемости входных сигналов подсети.

InSignals

Имя, по которому адресуются входные сигналы подсети; начало блока описания входных сигналов.

Label

Начало описания меток

Layer

Тип подсети - слой.

Loop

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

MainNet

Начало описания главной сети

Name

Предшествует имени статической переменной.

NetLib

Начало описания библиотеки подсетей.

NetWork

Начало описания сети

NumberOf

Функция (запрос). Возвращает число параметров или сигналов в подсети.

OutSignals

Имя, по которому адресуются выходные сигналы подсети; начало блока описания выходных сигналов.

ParamDef

Заголовок определения типа параметров.

Parameters

Имя, по которому адресуются параметры подсети; начало блока описания параметров.

ParamMask

Имя, по которому адресуются маски обучаемости параметров подсети.

ParamType

Заголовок описания типа параметров.

SetParameters

Признак раздела установления значений параметров.

Static

Начло блока описания статических переменных.

Then

Часть условного оператора, предшествующая оператору, выполняемому, если условие истинно.

To

Часть оператора цикла с шагом. Предшествует верхней границе цикла.

Var

Начло блока описания переменных.

While

Заголовок оператора цикла по условию.

Until

Тип подсети - цикл, выполняемый до тех пор пока не выполнится условие.

Used

Начало списка подключаемых библиотек подсетей

Таблица 10

Элементарные функции, допустимые в языке описания нейронных сетей

Имя

Значение

Имя

Значение

Sin

Синус

Cos

Косинус

Tan

Тангенс

Atan

Арктангенс

Sh

Гиперболический синус

Ch

Гиперболический косинус

Th

Гиперболический тангенс

Lg

Логарифм двоичный

Ln

Логарифм натуральный

Exp

Экспонента

Sqrt

Квадратный корень

Sqr

Квадрат

Abs

Абсолюеное значение

Sign

Знак аргумента (0 - минус)

4.3.7.2. Передача аргументов функциям

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

4.3.7.3. Имена структурных единиц

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

Имя компонента является полным именем компонента.

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

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

4.3.7.4. Способ описания синтаксических конструкций

Для описания синтаксиса языков описаний компонентов используется расширенная Бэкусова нормальная форма. Описание синтаксиса языка с помощью БНФ состоит в расшифровке понятий от более сложных к более простым. Каждое предложение БНФ состоит из двух частей, разделенных символами «::=» (два двоеточия, за которыми следует знак равенства). Наиболее подходящим названием для этого разделителя является слово «является» в отличие от «равно» или «присвоить» в языках программирования. Слева от разделителя находится объясняемое понятие, справа - конструкция разъясняющая это понятие. Например, предложение

<Имя переменной> ::= <Идентификатор>

означает, что объясняемое понятие - <Имя переменной> является идентификатором. Заметим, что порядок предложений в БНФ описания синтаксиса языка не имеет значения. Однако традиционно сложилось так, что БНФ начинают с наиболее сложных понятий.

При описании синтаксиса языка с помощью БНФ используются следующие понятия и обозначения.

Нетерминальным символом называется понятие, которое должно быть раскрыто в пределах данной БНФ. Нетерминальным символом является произвольный набор символов, заключенный в угловые скобки, например <Имя>. Нетерминальный символ раскрыт, если в пределах БНФ встретилось предложение, в котором этот нетерминальный символ стоит в левой части.

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

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

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

<Целое число> ::= [-] <Положительное целое число>

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

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

<Буква> ::= { A B C D E F G H I J K L M N O P

Q R S T U V W X Y Z}

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

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

Кроме того в данную модификацию БНФ включены нетерминальные символы с параметрами. В теле нетерминального символа параметры набраны полужирным курсивом. В качестве примера приведем набор предложений, описывающих формальные аргументы:

<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]

<Формальный аргумент> ::= <Список имен аргументов> : <Скалярный тип>

<Список имен аргументов> ::= <Имя аргумента> [,<Список имен аргументов>]

<Имя аргумента> ::= <Идентификатор>

<Аргумент типа Тип> - одно из следующих понятий:

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

В этом фрагменте содержится предложение, раскрывающее понятие <Аргумент типа Тип>, являющееся нетерминальным символом с параметром. Из последнего предложения легко понять, что представляет собой понятие <Аргумент типа Тип>. Для описания этого понятия в соответствии с требованиями стандартной БНФ пришлось бы описывать отдельно следующие понятия: <Аргумент типа Long>, <Аргумент типа Real>, <Аргумент типа Integer>, <Аргумент типа Color>, <Аргумент типа Logic>, <Аргумент типа String>, <Аргумент типа PRealArray>, <Аргумент типа PIntegerArray>, <Аргумент типа PLongArray>, <Аргумент типа PLogicArray>, <Аргумент типа PString>, <Аргумент типа Visual>, <Аргумент типа Pointer>, <Аргумент типа FuncType>. Кроме того, пришлось бы отказаться от простой и понятной конструкции описания формальных аргументов. Ниже приведена часть конструкции описания формальных аргументов, которую пришлось бы включить в БНФ. В данном фрагменте приведена расшифровка только одного понятия - <Аргумент типа Long>. Остальные нераскрытые понятия описываются аналогично. Понятия <Идентификатор> и <Номер элемента> считаются раскрытыми ранее.

<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]

<Формальный аргумент> ::= {<Формальный аргумент типа Long> <Формальный аргумент типа Real> <Формальный аргумент типа Integer> <Формальный аргумент типа Color> <Формальный аргумент типа Logic> <Формальный аргумент типа String> <Формальный аргумент типа PRealArray> <Формальный аргумент типа PIntegerArray> <Формальный аргумент типа PLongArray> <Формальный аргумент типа PLogicArray> <Формальный аргумент типа PString> <Формальный аргумент типа Visual> <Формальный аргумент типа Pointer> <Формальный аргумент типа FuncType>}

<Формальный аргумент типа Long> ::= <Список имен аргументов типа Long> : Long;

<Список имен аргументов типа Long> ::= <Имя аргумента типа Long> [,<Список имен аргументов типа Long>]

<Имя аргумента типа Long> ::= <Идентификатор>

<Аргумент типа Long> ::= {<Имя аргумента типа Long> <Имя аргумента типа PLongArray>^[<Номер элемента>] TLong(<Имя произвольного аргумента>)}

<Имя произвольного аргумента> ::= <Имя аргумента типа Long>, <Имя аргумента типа Real>, <Имя аргумента типа Integer>, <Имя аргумента типа Color>, <Имя аргумента типа Logic>, <Имя аргумента типа String>, <Имя аргумента типа PRealArray>, <Имя аргумента типа PIntegerArray>, <Имя аргумента типа PLongArray>, <Имя аргумента типа PLogicArray>, <Имя аргумента типа PString>, <Имя аргумента типа Visual>, <Имя аргумента типа Pointer>, <Имя аргумента типа FuncType>

Третье четвертое и пятое предложения данного фрагмента пришлось бы повторить для каждого из остальных тринадцати типов аргументов. Поскольку приведенные в книге БНФ описания языков призваны задать и объяснить синтаксис языка, а не служить исходным кодом компилятора компиляторов, автор счел возможным отступить от канонов БНФ, тем более, что для профессионала в области языков программирования не составит большого труда заменить неформальные конструкции на точные формальные фрагменты.

4.3.7.5. Описание общих синтаксических конструкций

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

Список синтаксических конструкций общего назначения:

<Идентификатор> ::= <Буква> [<Символьная строка>]

<Буква> ::= {a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}

<Символьная строка> ::= {<Буква> <Цифра> _ } [<Символьная стока>]

<Цифра> ::= {0 1 2 3 4 5 6 7 8 9}

<Число> ::= {<Целое число> <Действительное число>}

<Целое число> ::= [-] <Положительное целое число>

<Положительное целое число> ::= <Цифра> [<Положительное целое число>]

<Действительное число> ::= <Целое число>[.<Положительное целое число>] [e<Целое число>]

<Целочисленная константа> ::= {<Предопределенная константа типа Integer> <Предопределенная константа типа Long> <Целое число>}

<Цветовая константа> ::= H <Шестнадцатеричная цифра> <Шестнадцатеричная цифра> <Шестнадцатеричная цифра> <Шестнадцатеричная цифра>

<Шестнадцатеричная цифра> ::= {0 1 2 3 4 5 6 7 8 9 A B C D E F }

<Строковая константа> ::= “<Строка произвольных символов>”

<Логическая константа> ::= {True False}

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

<Скалярный тип> ::= {Long Real Integer Color Logic String PRealArray PIntegerArray PLongArray PLogicArray PString Visual Pointer FuncType}

<Тип массива> ::= { RealArray IntegerArray LongArray LogicArray}

<Константа типа Тип> - константа имеющая тип Тип.

Список синтаксических конструкций для формальных аргументов:

<Список формальных аргументов> ::= <Формальный аргумент> [; <Список формальных аргументов>]

<Формальный аргумент> ::= <Список имен аргументов> : <Скалярный тип>

<Список имен аргументов> ::= <Имя аргумента> [,<Список имен аргументов>]

<Имя аргумента> ::= <Идентификатор>

<Аргумент типа Тип> - одно из следующих понятий:

имя аргумента, который при описании формальных аргументов имел тип Тип

имя элемента аргумента-массива, если элементы массива имеют тип Тип

результат приведения произвольного аргумента или элемента аргумента-массива к типу Тип.

Синтаксические конструкции описания переменных:

<Описание переменных> ::= Var <Список описаний однотипных переменных>

<Список описаний однотипных переменных> ::= <Тип переменной> <Список переменных>; [<Список описаний однотипных переменных>]

<Список переменных> ::= <Имя переменной> [, <Список переменных>]

<Имя переменной> ::= <Идентификатор>

<Тип переменной> ::= {<Скалярный тип> <Тип массива>[<Целочисленное константное выражение>]}

<Переменная типа Тип> - одно из следующих понятий:

имя переменной, которая при описании переменных имела тип Тип

имя элемента массива, если элементы массива имеют тип Тип

результат приведения произвольной переменной или элемента массива к типу Тип.

Синтаксические конструкции описания статических переменных

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

<Описание статических переменных> ::= Static <Список описаний статических
переменных>

<Список описаний статических переменных> ::= <Описание статической переменной>; [<Список описаний статических переменных>]

<Описание статической переменной> ::= <Тип переменной> <Имя переменной> [Name <Имя статической переменной>] [Default <Значение по умолчанию>]

<Имя статической переменной> ::= <Строковая константа>

<Значение по умолчанию> ::= <Константное выражение типа <Тип переменной>>

Синтаксические конструкции описания функций

<Описание функций> ::= <Описание функции> [<Описание функций>]

<Описание функции> ::= <Заголовок функции> <Описание переменных> <Описание меток> <Тело функции>

<Заголовок функции> ::= Function <Имя функции>[(<Список формальных аргументов>)] : <Скалярный тип>;

<Описание меток> ::= Label <Список меток>;

<Список меток> ::= <Имя метки> [, <Список меток>]

<Имя метки> ::= <Идентификатор>

<Тело функции> ::= Begin <Составной оператор> End;

<Составной оператор> ::= [<Имя метки>:] <Оператор> [; <Составной оператор>]

<Оператор> ::= {<Оператор присваивания> <Оператор ветвления> <Оператор цикла> <Оператор перехода> <Операторные скобки>}

<Оператор присваивания> ::= <Допустимое имя переменной> = <Выражение>

<Оператор ветвления> ::= If <Логическое выражение> Then <Оператор> [Else <Оператор>]

<Оператор цикла> ::= { <Цикл For> <Цикл While> }

<Цикл For> ::= For <Имя переменной> = <Целочисленное выражение> To <Целочисленное выражение> [By <Целочисленное выражение>] Do <Оператор>

<Цикл While> ::= While <Логическое выражение> Do <Оператор>

<Оператор перехода> ::= GoTo <Имя метки>

<Операторные скобки> ::= Begin <Составной оператор> End

<Функция типа Тип> - функция, возвращающая величину типа Тип.

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

Синтаксические конструкции описания выражений:

<Выражение> ::= { <Выражение типа Long> <Выражение типа Real> <Выражение типа Integer> <Выражение типа Color> <Выражение типа Logic> <Выражение типа String> <Выражение типа Pointer>}

<Целочисленное выражение> ::= { <Выражение типа Long> <Выражение типа Integer>}

<Выражение типа Тип> ::= [<Префиксная операция типа Тип>] <Операнд типа Тип> [<Операция типа Тип> <Операнд типа Тип>]

<Операция типа Long> ::= {+ - * Div Mod And Or Xor}

<Операция типа Real>::= {+ - * / RMod }

<Операция типа Integer> ::= {+ - * Div Mod And Or Xor}

<Операция типа Color> ::= {COr CAnd CXor}

<Операция типа Logic> ::= {And Or Xor}

<Операция типа String> ::= +

<Префиксная операция типа Long> ::= { - Not }

<Префиксная операция типа Real>::= -

<Префиксная операция типа Integer> ::= { - Not }

<Префиксная операция типа Color> ::= CNot

<Префиксная операция типа Logic> ::= Not

<Операнд типа Logic> ::= ::= {<Результат сравнения> <Выражение типа Logic> (<Выражение типа Logic>) <Константа типа Logic> <Переменная типа Logic> <Аргумент типа Logic> <Вызов функции типа Logic>}

<Результат сравнения типов Long, Integer, Real> ::= (<Выражение типа Long, Integer, Real> {> < >= <= = <>} <Выражение типа Long, Integer, Real> )

<Результат сравнения типа Color> ::= (<Выражение типа Color> {CEqual CIn CInclude CExclude CIntersect} <Выражение типа Color> )

<Результат сравнения типа String> ::= (<Выражение типа String> {= <>} <Выражение типа String> )

<Операнд типа Тип> ::= {<Выражение типа Тип> (<Выражение типа Тип>) <Константа типа Тип> <Переменная типа Тип> <Аргумент типа Тип> <Вызов функции типа Тип>}

<Вызов функции типа Тип> ::= <Имя функции типа Тип> [(<Список фактических аргументов>)]

<Список фактических аргументов> ::= <Выражение> [,<Список фактических аргументов>]

<Константное выражение типа Тип> - <Выражение типа Тип> в операндах которого не могут фигурировать переменные и функции, описанные пользователем.

<Числовое выражение> ::= { <Выражение типа Long> <Выражение типа Real> <Выражение типа Integer>}

Синтаксические конструкции задания значений статическим переменным

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

<Установление параметров Структурной единицы> ::= <Однозначное имя Структурной единицы> [[[<Переменная цикла>:] <Начальный номер> [..<Конечный номер> [:<Шаг>] ]]] SetParameters <Список значений параметров>

<Переменная цикла> ::= <Идентификатор>

<Начальный номер> ::= <Константное выражение типа Long>

<Конечный номер> ::= <Константное выражение типа Long>

<Шаг> ::= <Константное выражение типа Long>

<Список значений параметров> ::= <Значение параметра> [,<Список значений параметров>]

<Значение параметра> ::= <Специальное выражение типа Тип>

<Специальное выражение типа Тип> ::= [<Префиксная операция типа Тип>] <Специальный операнд типа Тип> [<Операция типа Тип> <Специальный операнд типа Тип>]

<Специальный операнд типа Тип > ::= {<Специальное выражение типа Тип > <Константа типа Тип> <Переменная цикла> (<Специальное выражение типа Тип > <Аргумент типа Тип> <Вызов функции типа Тип>)}

Синтаксические конструкции описания распределения сигналов или параметров:

Данная конструкция имеет четыре аргумента, имеющих следующий смысл:

Данное - сигнал или параметр.

Объект - предобработчик, интерпретатор, оценка, сеть.

Подобъект - частный предобработчик, частный интерпретатор, частная оценка, подсеть.

<Идентификатор данных> - одно из ключевых слов Signals, Parameters, Data, InSignals, OutSignals.

<Описание распределения Данных, Объекта, Подобъекта, <Идентификатор данных>> ::= Connections <Описание групп соответствий Данных>

<Описание групп соответствий Данных> ::= <Описание группы соответствий Данных> [;<Описание групп соответствий Данных>]

<Описание группы соответствий Данных> ::= <Блок сигналов Подобъекта> <=> {<Блок сигналов Объекта> <Блок сигналов Подобъекта>}

<Блок сигналов Подобъекта> ::= <Описатель сигналов Подобъекта> [;<Блок сигналов Подобъекта>]

<Описатель сигналов Подобъекта> ::= { For <Переменная цикла> = <Начальный номер> To <Конечный номер> [Step <Шаг>] Do <Блок сигналов Подобъекта> End <Список Данных Подобъекта>}

<Переменная цикла> ::= <Идентификатор>

<Список Данных Подобъекта> ::= <Данное Подобъекта>[; <Список Данных Подобъекта>]

<Данное Подобъекта> ::= <Псевдоним>[[<Номер экземпляра>]].<Идентификатор данных> [[<Номер Данного>]]

<Номер экземпляра> ::= {<Специальное выражение типа Long> [+:]<Начальный номер> [..<Конечный номер> [:<Шаг>]]}

<Номер Данного> {<Специальное выражение типа Long> [+:]<Начальный номер> [..<Конечный номер> [:<Шаг>]]}

<Блок Данных Объекта> ::= <Описатель Данных Объекта> [; <Блок Данных Объекта>]

<Описатель Данных Объекта> ::= { For <Переменная цикла> = <Начальный номер> To <Конечный номер> [Step <Шаг>] Do <Блок Данных Объекта> End <Список Данных Объекта> }

<Список Данных Объекта> ::= <Данное Объекта>[; <Список Данных Объекта>]

<Данное Объекта> ::= <Идентификатор данных> [[<Номер Данного>]]

4.3.7.6. Комментарии

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

4.3.7.7. Область действия переменных

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

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

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

Переменная Error является глобальной для всех компонентов. Глобальной является также переменная ErrorManager. Однако не рекомендуется использование этих переменных путем прямого обращения к ним. Для получения значения переменной Error служит запрос GetError, исполняемый макрокомпонентом нейрокомпьютер.

4.3.7.8. Основные операторы

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

Оператор ветвления. Оператор ветвления состоит из трех частей, каждая из которых начинается соответствующим ключевым словом. Первая часть - условие, начинается с ключевого слова If и содержит логическое выражение. В зависимости от значения вычисленного логического выражения выполняется Then часть (истина) или Else часть (ложь). Третья (Else) часть оператора может быть опущена. Каждая из выполняемых частей состоит из ключевого слова и оператора. При необходимости выполнить несколько операторов, необходимо использовать операторные скобки Begin End.

Цикл For имеет следующий вид:

For Переменная_цикла = Начальное_значение To Конечное_значение [By Шаг] Do <Оператор>

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

Таблица 11.

Способ выполнения цикла в зависимости от значений параметров цикла.

Конечное значение

Шаг

Способ выполнения

>Начального значения

>0

Цикл выполняется пока переменная цикла

Конечного значения

<Начального значения

>0

Тело цикла не выполняется

=Начальному значению

0

Тело цикла выполняется один раз

>Начального значения

<0

Тело цикла не выполняется

<Начального значения

<0

Цикл выполняется пока переменная цикла

Конечного значения

=0

Тело цикла не выполняется

Цикл While. Тело цикла выполняется до тех пор, пока верно логическое выражение. Проверка истинности логического выражения производится перед выполнением тела цикла. Если тело цикла должно содержать более одного оператора, то необходимо использовать операторные скобки.

4.3.7.9. Описание распределения сигналов

Раздел описания распределения сигналов начинается с ключевого слова Connections. За ключевым словом Connections следует одна или несколько групп соответствий. Каждая группа соответствий состоит из правой и левой частей, разделенных символами «<=>» и описывает соответствие имен сигналов (параметров) различных структурных единиц. Каждая часть группы соответствий представляет собой список сигналов (параметров) или интервалов сигналов (параметров), разделенных между собой символом «;». Указанные в левой и правой частях сигналы (параметры) отождествляются. Если при указании сигнала (параметра) не указано имя подобъекта, то это сигнал (параметр) описываемого объекта. Использование интервала сигналов (параметров) в правой или левой части группы соответствий равносильно перечислению сигналов (параметров), с номерами, входящими в интервал, начиная с начального номера c шагом, указанным после символа «:». Если шаг не указан, то он полагается равным единице. Число сигналов в правой и левой частях группы соответствий должно совпадать. Если интервал пуст (например [2..1:1]), то описываемая им группа сигналов считается отсутствующей и пропускается. При использовании в описании соответствий явных циклов, во всех выражениях внутри цикла возможно использование переменной цикла. При этом подразумевается следующий порядок перечисления: Сначала изменяется номер в самом правом интервале, далее во втором справа, и т.д. В последнюю очередь изменяются значения переменных цикла явных циклов в порядке их вложенности (переменная самого внутреннего цикла меняется первой и т.д.). Рассмотрим следующий пример описания группы соответствий блока, содержащего две сети Net с 3 входами каждая. Ниже приведено две различных структуры связей по несколько эквивалентных вариантов описания.

Случай 1. Естественный порядок связей.

Вариант 1.

InSignals[1] <=> Net[1].InSignals[1]

InSignals[2] <=> Net[1].InSignals[2]

InSignals[3] <=> Net[1].InSignals[3]

InSignals[4] <=> Net[2].InSignals[1]

InSignals[5] <=> Net[2].InSignals[2]

InSignals[6] <=> Net[2].InSignals[3]

Вариант 2.

InSignals[1..6] <=> Net[1..2].InSignals[1..3]

Вариант 3.

InSignals[1]; InSignals[2]; InSignals[3]; InSignals[4]; InSignals[5];

InSignals[6] <=> For I=1 To 3 Do For J=1 To 2


Подобные документы

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

    реферат [19,5 K], добавлен 17.03.2011

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

    контрольная работа [31,4 K], добавлен 26.02.2012

  • Историческое развитие средств вычислений. Структурные схемы вычислительных систем. Развитие элементной базы и развитие архитектуры самих систем. Основные классы вычислительных машин. Каналы передачи данных. Требования к составу периферийных устройств.

    реферат [48,7 K], добавлен 09.01.2011

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

    презентация [1,3 M], добавлен 23.09.2015

  • Примеры счетно-решающих устройств до появления ЭВМ. Суммирующая машина Паскаля. Счетная машина Готфрида Лейбница. "Аналитическая машина" Чарльза Бэббиджа, развитие вычислительной техники после ее создания. Поколения электронно-вычислительных машин.

    презентация [1,2 M], добавлен 10.02.2015

  • Характеристика моделей обучения. Общие сведения о нейроне. Искусственные нейронные сети, персептрон. Проблема XOR и пути ее решения. Нейронные сети обратного распространения. Подготовка входных и выходных данных. Нейронные сети Хопфилда и Хэмминга.

    контрольная работа [1,4 M], добавлен 28.01.2011

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

    презентация [3,0 M], добавлен 28.05.2015

  • Основы нейрокомпьютерных систем. Искусственные нейронные сети, их применение в системах управления. Алгоритм обратного распространения. Нейронные сети Хопфилда, Хэмминга. Современные направления развития нейрокомпьютерных технологий в России и за рубежом.

    дипломная работа [962,4 K], добавлен 23.06.2012

  • Преимущества нейронных сетей. Модели нейронов, представляющих собой единицу обработки информации в нейронной сети. Ее представление с помощью направленных графов. Понятие обратной связи (feedback). Основная задача и значение искусственного интеллекта.

    реферат [1,2 M], добавлен 24.05.2015

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

    реферат [78,9 K], добавлен 22.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.