Рефераты. Функциональные модели универсального нейрокомпьютера
2.2. Если на выходе персептрона ожидалась
единица, а был получен ноль, то на выход сети при обратном функционировании
подаем .
2.3. Если на выходе персептрона ожидался
ноль, а была получена единица, то на выход сети при обратном функционировании
подаем .
2.4. Проводим шаг обучения с единичными
параметрами.
2.5. Переходим к следующему примеру. Если
достигнут конец обучающего множества, то переходим к шагу 3, иначе возвращаемся
на шаг 2.1.
На рис.
19в приведена схема обратного функционирования нейрона второго слоя
персептрона. Учитывая, что величины входных сигналов этого нейрона равны нулю
или единице, получаем эквивалентность модифицированного алгоритма исходному.
Отметим также, что при обучении персептрона впервые встретились не обучаемые
параметры – веса связей первого слоя.
В данном разделе
описан язык описания нейронных сетей.
Рассмотрим более
подробно структуры данных сети. Как уже было описано в первой части главы, сеть
строится иерархически от простых подсетей к сложным. Простейшими подсетями
являются элементы. Подсеть каждого уровня имеет свое имя и тип. Существуют
следующие типы подсетей: элемент, каскад, слой, цикл с фиксированным числом
тактов функционирования и цикл, функционирующий до тех пор, пока не выполнится
некоторое условие. Последние четыре типа подсетей будем называть блоками. Имена
подсетей определяются при конструировании. В разделе «Имена структурных единиц
компонентов» приведены правила построения полного и однозначного имен подсети.
В качестве примера рассмотрим сеть, конструирование которой проиллюстрировано на
рис. 2. В описании сети NW однозначное имя первого нейрона второго слоя имеет
вид K[2].SN.N[1]. При описании слоя однозначное имя первого нейрона записывается
как N[1]. В квадратных скобках указываются номер экземпляра подсети, входящей в
непосредственно содержащую ее структуру в нескольких экземплярах.
При использовании
контрастирования для изменения структуры сети и значений обучаемых параметров
другим компонентам бывает необходим прямой доступ к сигналам и параметрам сети
в целом или отдельных ее подсетей. Для адресации входных и выходных сигналов
используются имена InSignals и OutSignals, соответственно. Таким образом, для
получения массива входных сигналов второго слоя сети, приведенной на рис. 2,
необходимо запросить массив NW.K[2].InSignals, а для получения выходного
сигнала всей сети можно воспользоваться любым из следующего списка имен:
·
NW.OutSignals;
·
NW.N.OutSignals.
Для получения
конкретного сигнала из массива сигналов необходимо в конце в квадратных скобках
указать номер сигнала. Например, для получения третьего входного сигнала
второго слоя сети нужно указать следующее имя – NW.K[2].InSignals[3].
Для получения доступа
к параметрам нужно указать имя подсети, к чьим параметрам нужен доступ и через
точку ключевое слово Parameters. При необходимости получить конкретный
параметр, его номер в квадратных скобках записывается после ключевого слова
Parameters.
При обучении
параметров и сигналов (использование обучения сигналов описано во введении)
возникает необходимость обучать только часть из них. Так, например, при описании
обучения персептрона во второй части этой главы было отмечено, что обучать необходимо
только веса связей второго слоя. Для реализации этой возможности используются
два массива логических переменных – маска обучаемых параметров и маска обучаемых
входных сигналов.
При описании
структуры сетей необходимо учитывать следующую дополнительные переменные,
доступные в методах 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, содержащий маску
обучаемости параметров.
Есть два пути
использовать переменную одного типа как переменную другого типа. Первый путь
состоит в преобразовании значения к заданному типу. Так, для преобразования
целочисленной переменной к действительному типу, достаточно просто присвоить переменной
действительного типа целочисленное значение. С обратным преобразованием
сложнее, поскольку не ясно что делать с дробной частью. В табл. 2 приведены все
типы, которые можно преобразовать присваиванием переменной другого типа. В
табл. 3 приведены все функции преобразования типов.
Таблица 2
Преобразование типов прямым присваиванием
переменной значения выражения
Тип
переменной
Тип
выражения
Пояснение
Real
Real, Integer, Long
Значение преобразуется к плавающему виду. При преобразовании значения
выражения типа Long возможна потеря точности.
Long
Integer, Long
При преобразовании типа Integer, действуют следующие правила.
Значение переменной помещается в два младших байта. Если значение выражения
больше либо равно нолю, то старшие байты равны H0000, в противном случае
старшие байты равны HFFFF.
Integer
Integer, Long
При преобразовании выражения типа Long значение двух старших байт
отбрасывается.