Функциональные модели универсального нейрокомпьютера
Развитие информатики и средств вычислительной техники. Развитие систем искусственного интеллекта на базе алгоритмических языков. Искусственные нейронные сети. Нейрокибернетика. Элементарные детали вычислительных устройств. Анализ нейросетевых парадигм.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 12.10.2008 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Аппроксимация функций, заданных в конечном числе точек. К сетям, решающим эту задачу, относятся персептрон, и сети обратного распространения ошибки.
Отметим, что для каждой из перечисленных задач существуют другие, более традиционные методы решения (см. например, [1, 7, 17, 19, 22]).
Наиболее распространенными являются сети третьего класса. Именно для таких сетей в первую очередь и предназначена предлагаемая модель универсального нейрокомпьютера. Однако нейрокомпьютеры для решения двух других типов задач так же могут быть реализованы в рамках предложенной модели. При этом они используют не все компоненты универсального нейрокомпьютера. Так при реализации сетей ассоциативной памяти нет необходимости использовать компоненты оценка и интерпретатор ответа, а для сетей, обучающихся без учителя, не нужен компонент оценка, но необходим компонент учитель.
Среди сетей, аппроксимирующих функции, необходимо выделить еще два типа сетей - с дифференцируемой и пороговой характеристической функцией. Дифференцируемой будем называть сеть, каждый элемент которой реализует непрерывно дифференцируемую функцию. Вообще говоря, альтернативой дифференцируемой сети является недифференцируемая, а не пороговая, но на практике, как правило, все недифференцируемые сети являются пороговыми. Отметим, что для того, чтобы сеть была пороговой, достаточно вставить в нее один пороговый элемент.
Основное различие между дифференцируемыми и пороговыми сетями состоит в способе обучения. Для дифференцируемых сетей есть конструктивная процедура обучения, гарантирующая результат, если архитектура сети позволяет ей решит задачу (см. разд. «Оценка способности сети решить задачу») - метод двойственного обучения (обратного распространения ошибки). Следует заметить, что при использовании обучения по методу двойственности так же возникают сложности, типа локальных минимумов. Однако существует набор регулярных процедур, позволяющих с ними бороться (см. например [93]). Для обучения пороговых сетей используют правило Хебба или его модификации. Однако, для многослойных сетей с пороговыми элементами правило Хебба не гарантирует обучения. (В случае однослойных сетей - персептронов, доказана теорема о достижении результата в случае его принципиальной достижимости). С другой стороны, в работе [147] доказано, что многослойные сети с пороговыми нейронами можно заменить эквивалентными двухслойными сетями с не обучаемыми весами первого слоя. В работе [154] предложен подход, позволяющий свести обучение сетей с пороговыми нейронами к обучению дифференцируемых сетей с последующей трансформацией в сеть с пороговыми нейронами.
1.2. Выделение компонентов
Первым основным компонентом нейрокомпьютера является нейронная сеть. Метод двойственности в обучении нейронных сетей предполагает только одно условие на элементы - все элементы сети должны при прямом функционировании иметь характеристические функции из класса (непрерывно дифференцируемые на области определения , которой, как правило, является вся числовая ось). Нейронная сеть является основным претендентом на аппаратную реализацию, поскольку обладает мелкозернистым параллелизмом и состоит из очень простых элементов.
Для обучения нейронной сети необходимо наличие задачника. Чаще всего, обучение производится не по всему задачнику, а по некоторой его части. Ту часть задачника, по которой в данный момент производится обучение, будем называть обучающей выборкой. Для многих задач обучающая выборка имеет большие размеры (от нескольких сот до нескольких десятков тысяч примеров). При обучении с использованием скоростных методов обучения (их скорость на три-четыре порядка превышает скорость обучения по классическому методу обратного распространения ошибки) приходится быстро сменять примеры. Таким образом, скорость обработки обучающей выборки может существенно влиять на скорость обучения нейронной сети. К сожалению, большинство разработчиков аппаратных средств не предусматривает средств для быстрой смены примеров. С другой стороны аппаратная реализация задачника нецелесообразна, поскольку в качестве задачника может выступать как база данных на универсальном компьютере, так и датчики, регистрирующие параметры некоторой системы.
При работе с обучающей выборкой удобно использовать привычный для пользователя формат данных. Впрочем, дело даже не в удобствах. В главе «Предобработчик» показано, что измеряемая величина далеко не всегда является подходящим сигналом для нейронной сети. Таким образом, между обучающей выборкой и нейросетью возникает дополнительный компонент нейрокомпьютера - предобработчик. Из литературных источников следует, что разработка эффективных предобработчиков для нейрокомпьютеров является новой, почти совсем не исследованной областью. Большинство разработчиков программного обеспечения для нейрокомпьютеров склонно возлагать функции предобработки входных данных на обучающую выборку или вообще перекладывают ее на пользователя. Это решение технологически неверно. Дело в том, что при постановке задачи для нейрокомпьютера трудно сразу угадать правильный способ предобработки. Для его подбора проводится серия экспериментов. В каждом из экспериментов используется одна и та же обучающая выборка и разные способы предобработки входных данных. Таким образом, выделен третий важный компонент нейрокомпьютера - предобработчик входных данных. В отличии от задачника, при аппаратной реализации нейрокомпьютера компонент предобработчик целесообразно также реализовывать аппаратно, поскольку вне зависимости от источника входных данных предобработка не меняется.
Заметим, что если привычный для человека способ представления входных данных непригоден для нейронной сети, то и формат ответов нейронной сети часто малопригоден для человека. Необходимо интерпретировать ответы нейронной сети. Интерпретация зависит от вида ответа. Так, если ответом нейронной сети является действительное число, то его, как правило, приходится масштабировать и сдвигать для попадания в нужный диапазон ответов. Если сеть используется как классификатор, то выбор интерпретаторов еще шире. Большое разнообразие интерпретаторов при невозможности решить раз и навсегда вопрос о преимуществах одного из них над другими приводит к необходимости выделения интерпретатора ответа нейронной сети в отдельный компонент нейрокомпьютера.
С интерпретатором ответа тесно связан еще один обязательный компонент нейрокомпьютера - оценка. Невнимание к этому компоненту вызвано практикой рассматривать метод обратного распространения ошибки в виде алгоритма. Доминирование такой точки зрения привело к тому, что, судя по публикациям, большинство исследователей даже не подозревает о том, что «уклонение от правильного ответа», подаваемое на вход сети при обратном функционировании, есть ни что иное, как производная функции оценки по выходному сигналу сети (если функция оценки является суммой квадратов уклонений). Возможно (и иногда очень полезно) конструировать другие оценки (см. главу «Оценка и интерпретатор ответа»). Группой НейроКомп в ходе численных экспериментов было выяснено, что для обучения сетей-классификаторов функция оценки вида суммы квадратов, пожалуй, наиболее плоха. Использование альтернативных функций оценки позволяет в несколько раз ускорить обучение нейронной сети.
Шестым необходимым компонентом нейрокомпьютера является учитель. Этот компонент может иметь множество реализаций. Обзор наиболее часто употребляемых и наиболее эффективных учителей приводится в главе «Учитель».
Принцип относительной функциональной обособленности требует выделения еще одного компонента, названного исполнителем запросов учителя или просто исполнителем. Назначение этого компонента не так очевидно, как всех предыдущих. Заметим, что для всех учителей, обучающих сети по методу обратного распространения ошибки, и при тестировании сети характерен следующий набор операций с каждым примером обучающей выборки:
1. Тестирование решения примера
1.1. Взять пример у задачника.
1.2. Предъявить его сети для решения.
1.3. Предъявить результат интерпретатору ответа.
2. Оценивание решения примера
2.1. Взять пример у задачника.
2.2. Предъявить его сети для решения.
2.3. Предъявить результат оценке.
3. Оценивание решения примера с вычислением градиента.
3.1. Взять пример у задачника.
3.2. Предъявить его сети для решения.
3.3. Предъявить результат оценке с вычислением производных.
3.4. Предъявить результат работы оценки сети для вычисления градиента.
4. Оценивание и тестирование решения примера.
4.1. Взять пример у задачника.
4.2. Предъявить его сети для решения.
4.3. Предъявить результат оценке.
4.4. Предъявить результат интерпретатору ответа.
Все четыре варианта работы с сетью, задачником, интерпретатором ответа и оценкой легко объединить в один запрос, параметры которого позволяют указать последовательность действий. Таким образом, исполнитель исполняет всего один запрос - обработать пример. Однако выделение этого компонента позволяет исключить необходимость в прямых связях таких компонентов, как контрастер и учитель, с компонентами оценка и интерпретатор ответа, а их взаимодействие с компонентом сеть свести исключительно к запросам связанным с модификацией обучаемых параметров сети.
Последним компонентом, которого необходимо выделить, является контрастер нейронной сети. Этот компонент является надстройкой над учителем. Его назначение - сводить число связей сети до минимально необходимого или до «разумного» минимума (степень разумности минимума определяется пользователем). Кроме того, контрастер, как правило, позволяет свести множество величин весов связей к 2-4, реже к 8 выделенным пользователем значениям. Наиболее важным следствием применения процедуры контрастирования является получение логически прозрачных сетей - сетей, работу которых легко описать и понять на языке логики [80, 81].
Для координации работы всех компонентов нейрокомпьютера вводится макрокомпонента Нейрокомпьютер. Основная задача этого компонента - организация интерфейса с пользователем и координация действий всех остальных компонентов.
В литературе по нейроинформатике (см. например, [226, 227]) встречаются такие понятия как «соревновательные нейроны» и «обучение без учителя». Для определения места этих понятий, относящихся к сетям Кохонена [130, 131] рассмотрим более подробно работу нейрокомпьютера, реализующего сеть Кохонена. Сеть Кохонена состоит из изолированных нейронов (см. рис. 18 к главе 4). Работа нейрокомпьютера при решении примера состоит из следующих этапов:
Из задачника выбирается очередной пример
Выбранный пример предобрабатывается.
Полученные в результате предобработки данные подаются на вход сети. С выхода сети снимается вектор действительных чисел (работает компонент сеть).
Полученный выходной вектор интерпретируется максимальным интерпретатором (см. главу «Оценка и интерпретатор ответа»).
При необходимости доучивания вычисляется вектор поправок к выходным сигналам сети (работает компонент оценка).
Вычисленный вектор поправок подается на выход сети. На входах весов сети снимается вектор поправок к весам сети (работает компонент сеть).
После того, как этапы 1 - 6 проведены для всех примеров задачника проводится обучение сети (работает компонент учитель).
Таким образом в сети Кохонена нет «соревновательных элементов». То, что понимаю под этим термином - работа интерпретатора ответа. Название «обучение без учителя» - некорректная метафора, поскольку при обучении сети Кохонена проводится минимизация функции оценки (см. например, [93]), и производится она с использованием компонента учитель.
1.3. Запросы компонентов нейрокомпьютера
В этом разделе приводится список основных запросов, которые обеспечивают функционирование нейрокомпьютера. За редким исключением приводятся только запросы, которые генерируются компонентами нейрокомпьютера (некоторые из этих запросов могут поступать в нейрокомпьютер от пользователя). Здесь рассматривается только форма запроса и его смысл. Полный список запросов каждого компонента, детали их исполнения и форматы данных рассматриваются в соответствующих главах.
Рис 1. Схема запросов в нейрокомпьютере
На рис. 1. приведена схема запросов в нейрокомпьютере. При построении схемы предполагается, что на каждый запрос приходит ответ. Вид ответа описан при описании запросов. Стрелки, изображающие запросы, идут от объекта, инициирующего запрос, к объекту его исполняющему.
1.3.1. Запросы к задачнику
Запросы к задачнику позволяют последовательно перебирать все примеры обучающей выборки, обращаться непосредственно к любому примеру задачника и изменять обучающую выборку. Обучающая выборка выделяется путем «раскрашивания» примеров задачника в различные «цвета». Понятие цвета и способ работы с цветами описаны в разделе «Переменные типа цвет и операции с цветами».
Запросы последовательного перебора обучающей выборки:
«Инициировать выдачу примеров цвета К». По этому запросу происходит инициация выдачи примеров К-го цвета.
«Дать очередной пример». По этому запросу задачник возвращает предобработанные данные очередного примера и, при необходимости, правильные ответы, уровень достоверности и другие данные этого примера.
«Следующий пример». По этому запросу задачник переходит к следующему примеру обучающей выборки. Если такого примера нет, то возвращается признак отсутствия очередного примера.
Для непосредственного доступа к примерам задачника служит запрос «Дать пример номер N». Действия задачника в этом случае аналогичны выполнению запроса «Дать очередной пример».
Для изменения обучающей выборки служит запрос «Окрасить примеры в цвет К». Этот запрос используется редко, поскольку изменение обучающей выборки, как правило, осуществляется пользователем при редактировании задачника.
1.3.2. Запрос к предобработчику
Предобработчик сам никаких запросов не генерирует. Единственный запрос к предобработчику - «Предобработать пример» может быть выдан только задачником.
1.3.3. Запрос к исполнителю
«Обработать очередной пример». Вид ответа зависит от параметров запроса.
1.3.4. Запросы к учителю
«Начать обучение сети». По этому запросу учитель начинает процесс обучения сети.
«Прервать обучение сети». Этот запрос приводит к прекращению процесса обучения сети. Этот запрос требуется в случае необходимости остановить обучение сети до того, как будет удовлетворен критерий остановки обучения, предусмотренный в учителе.
«Провести N шагов обучения» - как правило, выдается контрастером, необходим для накопления показателей чувствительности.
1.3.5. Запрос к контрастеру
«Отконтрастировать сеть». Ответом является код завершения операции контрастирования.
1.3.6. Запрос к оценке
Оценка не генерирует никаких запросов. Она выполняет только один запрос - «Оценить пример». Результатом выполнения запроса является оценка примера и, при необходимости, вектор производных оценки по выходным сигналам сети.
1.3.7. Запрос к интерпретатору ответа
Интерпретатор ответа не генерирует никаких запросов. Он выполняет только один запрос - «Интерпретировать ответ». Ответом является результат интерпретации.
1.3.8. Запросы к сети
Сеть не генерирует никаких запросов. Набор исполняемых сетью запросов можно разбить на три группы.
Запрос, обеспечивающий тестирование.
«Провести прямое функционирование». На вход сети подаются данные примера. На выходе сети вычисляется ответ сети, подлежащий оцениванию или интерпретации.
Запросы, обеспечивающие обучение сети.
«Обнулить градиент». При исполнении этого запроса градиент оценки по обучаемым параметрам сети кладется равным нулю. Этот запрос необходим, поскольку при вычислении градиента по очередному примеру сеть добавляет его к ранее вычисленному градиенту по сумме других примеров.
«Вычислить градиент по примеру». Проводится обратное функционирование сети. Вычисленный градиент добавляется к ранее вычисленному градиенту по сумме других примеров.
«Изменить карту с шагами Н1 и H2». Генерируется учителем во время обучения.
Запрос, обеспечивающие контрастирование.
«Изменить карту по образцу». Генерируется контрастером при контрастировании сети.
Таким образом, выделено семь основных компонентов нейрокомпьютера, определены их функции и основные исполняемые ими запросы.
1.4. Запросы общие для всех компонентов
В этом разделе описаны запросы, выполняемых всеми компонентами, а также типы данных, используемые при описании запросов.
1.4.1. Стандарт типов данных
При описании запросов и структур данных необходимо использовать набор первичных типов данных. Поскольку в разных языках программирования типы данных называются по-разному, введем единый набор обозначений для них.
Таблица 1.
Типы данных для всех компонентов нейрокомпьютера
Тип |
Длина (байт) |
Значения |
Описание |
|
Color |
2 |
Используется для задания цветов. Является совокупностью из 16 элементарных (битовых) флагов. См. раздел «Цвет и операции с цветами». |
||
Real |
4 |
от 1.5 e- 45до 3.4 e 38 |
Действительное число. Величина из указанного диапазона.. В дальнейшем называется «действительное». |
|
RealArray |
4*N |
Массив действительных чисел. |
||
PRealArray |
4 |
Используется для передачи массивов между компонентами. Имеет значение адреса массива действительных чисел. |
||
Integer |
2 |
От -32768До 32767 |
Целое число из указанного диапазона. В дальнейшем называется «целое». |
|
IntegerArray |
2*N |
Массив целых чисел. |
||
PIntegerArray |
4 |
Используется для передачи массивов между компонентами. Имеет значение адреса массива целых чисел. |
||
Long |
4 |
От -2147483648До 2147483647 |
Целое число из указанного диапазона. В дальнейшем называется «длинное целое». |
|
LongArray |
4*N |
Массив длинных целых чисел. |
||
PlongArray |
4 |
Используется для передачи массивов между компонентами. Имеет значение адреса массива длинных целых чисел. |
||
Logic |
1 |
True, False |
Логическая величина. Далее называется «логическая». |
|
LogicArray |
N |
Массив логических переменных. |
||
PLogicArray |
4 |
Используется для передачи массивов между компонентами. Имеет значение адреса массива логических переменных. |
||
FuncType |
4 |
Адрес функции. Используется при необходимости передать функцию в качестве аргумента. |
||
String |
256 |
Строка символов. |
||
PString |
4 |
Адрес строки символов. Служит для передачи строк в запросах |
||
Pointer |
4 |
Не типизованный указатель (адрес). Этот тип совместим с любым типизованным указателям. |
Числовые типы данных Integer, Long и Real предназначены для хранения различных чисел. Переменные числовых типов допускаются в языках описания всех компонентов нейрокомпьютера. При необходимости записать в один массив числовые переменные различного типа следует использовать функции приведения типов, описанные в разделе «Приведение типов»
Строка. Символьный тип данных предназначен для хранения комментариев, названий полей, имен сетей, оценок и другой текстовой информации. Все строковые переменные занимают 256 байт и могут включать в себя до 255 символов. Первый байт строки содержит длину строки. В переменных типа строка возможен доступ к любому символу как к элементу массива. При этом длина имеет индекс ноль, первый символ - 1 и т.д.
Указатель на строку. При передаче данных между компонентами сети и процедурами в пределах одного компонента удобно вместо строки передавать указатель на строку, поскольку указатель занимает всего четыре байта. Для этой цели служит тип указатель на строку.
Логический тип используется для хранения логических значений. Значение истина задается предопределенной константой True, значение ложь - False.
Массивы. В данном стандарте предусмотрены массивы четырех типов - логических, целочисленных, длинных целых и действительных переменных. Длины массивов определяются при описании, но все массивы переменных одного типа относятся к одному типу, в отличие от языков типа Паскаль. Использование функций приведения и преобразования типов позволяют
получать из этих массивов структуры произвольной сложности. Элементы массивов всегда нумеруются с единицы.
Вне зависимости от типа массива нулевой элемент массива имеет тип Long и содержит длину массива в элементах. На рис. 2 приведена схема распределения памяти всех типов массивов, каждый из которых содержит шесть элементов. Все массивы, как правило, используется только в пределах одного компонента. При передаче массивов между компонентами или между процедурами в пределах одного компонента используются указатели на массивы.
Адрес функции. Этот тип используется для передачи функции в качестве аргумента. Переменная типа FuncType занимает четыре байта и является адресом функции. В зависимости от реализации по этому адресу может лежать либо начало машинного кода функции, либо начало текста функции. В случае передачи текста функции первые восемь байт по переданному адресу содержат слово «Function».
1.4.2. Переменные типа цвет и операции с цветами
Использование цветов позволяет гибко разбивать множества на подмножества. В нейрокомпьютере возникает необходимость в разбиении на подмножества (раскрашивании) задачника. В этом разделе описывается стандарт работы с переменными типа цвет. Ближайшей аналогией переменных типа цвет является тип данных Set в языке Паскаль.
1.4.2.1. Значение переменной типа цвет (Color)
Переменная типа цвет представляет собой двухбайтовое беззнаковое целое. Однако основное использование предполагает работу не как с целым числом, а как с совокупностью однобитных флагов. При записи на диск используется символьное представление двоичной записи числа с ведущими нулями и разбиением на четверки символом «.» (точка), предваряемая заглавной буквой «B» латинского алфавита, или символьное представление шестнадцатеричной записи числа с ведущими нулями, предваряемая заглавной буквой «H» латинского алфавита. В табл. 2 приведена нумерация флагов (бит) переменной типа Color, их шестнадцатеричное, десятичное и двоичное значение. При использовании в учителе или других компонентах может возникнуть необходимость в присвоении некоторым из флагов или их комбинаций имен. На такое именование не накладывается никаких ограничений, хотя возможно будет выработан стандарт и на названия часто используемых цветов (масок, совокупностей флагов).
Таблица 2
Нумерация флагов (бит) переменной типа Color
Номер |
Шестнад-цатиричная запись |
Деся-тичная запись |
Двоичная запись |
|
0 |
H0001 |
1 |
B.0000.0000.0000.0001 |
|
1 |
H0002 |
2 |
B.0000.0000.0000.0010 |
|
2 |
H0004 |
4 |
B.0000.0000.0000.0100 |
|
3 |
H0008 |
8 |
B.0000.0000.0000.1000 |
|
4 |
H0010 |
16 |
B.0000.0000.0001.0000 |
|
5 |
H0020 |
32 |
B.0000.0000.0010.0000 |
|
6 |
H0040 |
64 |
B.0000.0000.0100.0000 |
|
7 |
H0080 |
128 |
B.0000.0000.1000.0000 |
|
8 |
H0100 |
256 |
B.0000.0001.0000.0000 |
|
9 |
H0200 |
512 |
B.0000.0010.0000.0000 |
|
10 |
H0400 |
1024 |
B.0000.0100.0000.0000 |
|
11 |
H0800 |
2048 |
B.0000.1000.0000.0000 |
|
12 |
H1000 |
4096 |
B.0001.0000.0000.0000 |
|
13 |
H2000 |
8192 |
B.0010.0000.0000.0000 |
|
14 |
H4000 |
16384 |
B.0100.0000.0000.0000 |
|
15 |
H8000 |
32768 |
B.1000.0000.0000.0000 |
1.4.2.2. Операции с переменными типа цвет (Color)
В табл. 3 приведены операции с переменными типа Color. Первые пять операций могут использоваться только для сравнения переменных типа Color, а остальные четыре операции - для вычисления выражений типа Color.
В ряде запросов необходимо указать тип операции над цветом. Для передачи таких параметров используется переменная типа Integer. В качестве значений передается содержимое соответствующей ячейки столбца код табл. 3.
Таблица 3
Предопределенные константы операций с переменными типа Цвет (Color)
Код |
Обозначение |
Выражение |
Тип результата |
Пояснение |
|
1 |
CEqual |
A = B |
Logic |
Полное совпадение. |
|
2 |
CIn |
A And B = A |
Logic |
A содержится в В. |
|
3 |
CInclude |
A And B = B |
Logic |
А содержит В. |
|
4 |
CExclude |
A And B = 0 |
Logic |
A и В взаимоисключающие. |
|
5 |
CIntersect |
A And B <> 0 |
Logic |
А и В пересекаются. |
|
6 |
COr |
A Or B |
Сolor |
Побитное включающее или. |
|
7 |
CAnd |
A And B |
Color |
Побитное и. |
|
8 |
CXor |
A Xor B |
Color |
Побитное исключающее или |
|
9 |
CNot |
Not A |
Color |
Побитное отрицание |
1.4.3. Предопределенные константы
При описании различных компонентов возникает необходимость в использовании некоторого набора стандартизированных констант. Стандартность набора констант особенно необходима при обмене данными между компонентами. Все константы, приведенные в табл. 4, описываются в тех разделах, где они используются. В табл. 4 для каждой константы указывается ее тип, значение и названия разделов, в которых она описывается.
Таблица 4
Предопределенные константы
Идентификатор |
Тип |
Значение |
Раздел |
||
Шестнад. |
Десятичн. |
||||
BackInSignals |
Integer |
H0005 |
5 |
Запросы к компоненту сеть |
|
BackOutSignals |
Integer |
H0006 |
6 |
Запросы к компоненту сеть |
|
BackParameters |
Integer |
H0007 |
7 |
Запросы к компоненту сеть |
|
Binary |
Integer |
H0001 |
1 |
Запросы компонента интерпретатор ответа |
|
BinaryPrep |
Integer |
H0000 |
0 |
Запросы компонента предобработчик |
|
BynaryCoded |
Integer |
H0003 |
3 |
Запросы компонента интерпретатор ответа |
|
CAnd |
Integer |
H0007 |
7 |
Операции с переменными типа цвет (Color) |
|
Cascad |
Integer |
H0002 |
2 |
Запросы к компоненту сеть |
|
Cequal |
Integer |
H0001 |
1 |
Операции с переменными типа цвет (Color) |
|
CExclude |
Integer |
H0004 |
4 |
Операции с переменными типа цвет (Color) |
|
CicleFor |
Integer |
H0003 |
3 |
Запросы к компоненту сеть |
|
CicleUntil |
Integer |
H0004 |
4 |
Запросы к компоненту сеть |
|
CIn |
Integer |
H0002 |
2 |
Операции с переменными типа цвет (Color) |
|
CInclude |
Integer |
H0003 |
3 |
Операции с переменными типа цвет (Color) |
|
CIntersect |
Integer |
H0005 |
5 |
Операции с переменными типа цвет (Color) |
|
CNot |
Integer |
H0009 |
9 |
Операции с переменными типа цвет (Color) |
|
COr |
Integer |
H0006 |
6 |
Операции с переменными типа цвет (Color) |
|
CXor |
Integer |
H0008 |
8 |
Операции с переменными типа цвет (Color) |
|
Element |
Integer |
H0000 |
0 |
Запросы к компоненту сеть |
|
Empty |
Integer |
H0000 |
0 |
Запросы компонента интерпретатор ответа |
|
EmptyPrep |
Integer |
H0003 |
3 |
Запросы компонента предобработчик |
|
False |
Logic |
H00 |
|||
FuncPrep |
Integer |
H0005 |
5 |
Запросы компонента предобработчик |
|
InSignalMask |
Integer |
H0003 |
3 |
Запросы к компоненту сеть |
|
InSignals |
Integer |
H0000 |
0 |
Запросы к компоненту сеть |
|
Layer |
Integer |
H0001 |
1 |
Запросы к компоненту сеть |
|
Major |
Integer |
H0002 |
2 |
Запросы компонента интерпретатор ответа |
|
ModPrep |
Integer |
H0004 |
4 |
Запросы компонента предобработчик |
|
Null |
Pointer |
H00000000 |
Нет |
||
Ordered |
Integer |
H0002 |
2 |
Запросы компонента предобработчик |
|
OutSignals |
Integer |
H0001 |
1 |
Запросы к компоненту сеть |
|
Parameters |
Integer |
H0002 |
2 |
Запросы к компоненту сеть |
|
ParamMask |
Integer |
H0004 |
4 |
Запросы к компоненту сеть |
|
PositPrep |
Integer |
H0006 |
6 |
Запросы компонента предобработчик |
|
tbAnswers |
Integer |
H0004 |
4 |
Язык описания задачника |
|
tbCalcAnswers |
Integer |
H0006 |
6 |
Язык описания задачника |
|
tbCalcReliability |
Integer |
H0007 |
7 |
Язык описания задачника |
|
tbColor |
Integer |
H0001 |
1 |
Язык описания задачника |
|
tbComment |
Integer |
H000A |
10 |
Язык описания задачника |
|
tbEstimation |
Integer |
H0009 |
9 |
Язык описания задачника |
|
tbInput |
Integer |
H0002 |
2 |
Язык описания задачника |
|
tbPrepared |
Integer |
H0003 |
3 |
Язык описания задачника |
|
tbReliability |
Integer |
H0005 |
5 |
Язык описания задачника |
|
tbWeight |
Integer |
H0008 |
8 |
Язык описания задачника |
|
True |
Logic |
HFF |
-1 |
||
UnknownLong |
Integer |
H0000 |
0 |
Неопределенные значения |
|
UnknownReal |
Real |
нет |
1E-40 |
Неопределенные значения |
|
UnOrdered |
Integer |
H0001 |
1 |
Запросы компонента предобработчик |
|
UserType |
Integer |
HFFFF |
-1 |
Структурная единица, определенная пользователем. |
Три предопределенные константы, приведенные в табл. 4, не описываются ни в одном разделе данной работы. Это константы общего пользования. Их значение:
True - значение истина для присваивания переменным логического типа.
False - значение ложь для присваивания переменным логического типа.
Null - пустой указатель. Используется для сравнения или присваивания переменным всех типов указателей.
1.4.4. Использование памяти
Ряд запросов, исполняемых различными компонентами, возвращают в качестве ответа указатели на массивы. В этих случаях действуют следующие правила:
Если компонент получил пустой указатель (Null), то он сам создает массив необходимой длины.
Если передан непустой указатель, но существующей длины массива недостаточно, то компонент освобождает память, занятую под переданный массив и создает новый массив необходимой длины.
Освобождение памяти после использования массива лежит на вызывающем компоненте.
Если одному из компонентов не хватает памяти для выполнения запроса, то этот компонент может передать макрокомпоненту нейрокомпьютер запрос на дополнительную память. В этом случае макрокомпонент нейрокомпьютер передает всем компонентам запрос FreeMemory. При исполнении данного запроса каждый компонент должен освободить всю память, не являющуюся абсолютно необходимой для работы. Например, компонент задачник может для быстроты обработки держать в памяти все обучающее множество. Однако абсолютно необходимой является память, достаточная для хранения в памяти одного примера.
Запрос на освобождение памяти исполняется каждым компонентом и не включен в описания запросов компонентов, приведенные в следующих главах.
1.4.5. Обработка ошибок
Схема обработки ошибок достаточно проста по своей идее - каждый новый обработчик ошибок может обрабатывать только часть ошибок, а обработку остальных может передать ранее установленному обработчику. Пользователь может организовать обработку ошибок и не прибегая к установке обработчика ошибок - обработчик ошибок по умолчанию почти во всех случаях устанавливает номер последней ошибки в переменную Error, которая может быть считана с помощью запроса GetError и обработана прямо в компоненте, выдавшем запрос.
Если обработчик ошибок устанавливает номер последней ошибки в переменной Error, то все запросы, поступившие после момента установки, завершаются неуспешно. Это состояние сбрасывается при вызове запроса «дать номер ошибки».
1.4.5.1. Процедура обработки ошибок
Процедура обработки ошибок должна быть процедура с дальним типом адресации. Формат описания процедуры обработки ошибок
Pascal:
Procedure ErrorFunc( ErrorNumber : Long ); Far;
C:
void far ErrorFunc(Long ErrorNumber)
I. После обработки ошибок процедура может вызвать ранее установленный обработчик ошибок. Адрес ранее установленного обработчика ошибок процедура обработки ошибок получает в ходе следующей процедуры:
A. Вызов процедуры с нулевым номером ошибки означает, что в следующем вызове будет передан адрес старой процедуры обработки ошибок.
B. Значение аргумента ErrorNumber при вызове, следующем непосредственно за вызовом с нулевым номером ошибки, должно интерпретироваться как адрес старой процедуры обработки ошибок.
Ниже приведено описание запросов, связанных с обработкой ошибок и исполняемых макрокомпонентом нейрокомпьютер.
1.4.5.2. Установить обработчик ошибок (OnError)
Описание запроса:
Pascal:
Function OnError( NewError : ErrorFunc ) : Logic;
C:
Logic OnError(ErrorFunc NewError)
Описание аргументов:
NewError - адрес новой процедуры обработки ошибок.
Назначение - устанавливает новый обработчик ошибок.
Описание исполнения.
Если Error <> 0, то выполнение запроса прекращается.
Вызов NewError с аргументом 0 - настройка на установку цепочки обработки ошибок.
Вызов NewError с аргументом ErrorManager (вместо длинного целого передается адрес старой процедуры обработки ошибок).
ErrorManager := NewError
1.4.5.3. Дать номер ошибки (GetError)
Описание запроса:
Pascal:
Function GetError : Integer;
C:
Integer GetError()
Назначение - возвращает номер последней необработанной ошибки и сбрасывает ее.
Описание исполнения.
GetError := Error
Error := 0
Списки ошибок, возникающих в различных компонентах, даны в разделах «Ошибки компоненты ...», в соответствующих главах. Все номера ошибок каждого компонента являются трехзначными числами и начинаются с номера компонента, указанного в колонке «Ошибка» табл. 5.
1.4.6. Запросы, однотипные для всех компонентов
Таблица 5
Префиксы компонентов
Префикс |
Компонент |
||
Запроса |
Ошибки |
||
ex |
0 |
Исполнитель |
|
tb |
1 |
Задачник |
|
pr |
2 |
Предобработчик |
|
nn |
3 |
Сеть |
|
es |
4 |
Оценка |
|
ai |
5 |
Интерпретатор ответа |
|
in |
6 |
Учитель |
|
cn |
7 |
Контрастер |
Ряд запросов обрабатывается всеми компонентами, кроме компонента исполнитель, носящего вспомогательный характер. Один из таких запросов - FreeMemory - был описан в разделе «Управление памятью», а два запроса, связанных с обработкой ошибок - в разделе «Обработка ошибок». В данном разделе приводятся описания остальных запросов, имеющих одинаковый смысл для всех компонентов. В отличие от ранее описанных запросов эти запросы опираются на структуру исполняющего компонента, поэтому к имени запроса добавляется префикс, задающий компонента. Список префиксов приведен в табл. 5. Единственным исключением из числа компонентов, исполняющих перечисленные в данном разделе запросы, является компонент исполнитель.
Все описываемые в данном разделе запросы можно разбить на четыре группы:
Установление текущего компонента.
Запросы работы со структурой компонента.
Запросы на получение или изменение параметров структурной единицы.
Запуск редактора компонента.
Все имена запросов начинаются с символов «xx», которые необходимо заменить на префикс из табл. 5 чтобы получить имя запроса для соответствующего компонента. При указании ошибок используется символ «n», который нужно заменить на соответствующий префикс ошибки из табл. 5.
Далее данном разделе компонентом также называются экземпляры компонента, а не только часть программы. Например, одна из загруженных нейронных сетей, а не только программный компонент сеть.
1.4.6.1. Запрос на установление текущего компонента
К этой группе запросов относится один запрос - xxSetCurrent - не исполняемый компонентом задачник.
Сделать текущей (xxSetCurrent)
Описание запроса:
Pascal:
Function xxSetCurrent( CompName : PString) : Logic;
C:
Logic xxSetCurrent(PString CompName)
Описание аргумента:
CompName - указатель на строку символов, содержащую имя компонента, которого надо сделать текущим.
Назначение - ставит указанного в параметре CompName компонента из списка загруженных компонентов на первое место в списке.
Описание исполнения.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Указанный в аргументе CompName компонент переносится в начало списка.
1.4.6.2. Запросы, работающие со структурой компонента
К этой группе относятся запросы, позволяющие выяснить структуру компонента, прочитать ее или сохранить на диске.
Добавление нового экземпляра (xxAdd)
Описание запроса:
Pascal:
Function xxAdd( CompName : PString ) : Logic;
C:
Logic xxAdd(PString CompName)
Описание аргумента:
CompName - указатель на строку символов, содержащую имя файла компонента или адрес описания компонента.
Назначение - добавляет новый экземпляр компонента в список компонентов.
Описание исполнения.
Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего компонента. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
Экземпляр компонента считывается из файла или из памяти и добавляется первым в список компонентов (становится текущим).
Если считывание завершается по ошибке, то возникает ошибка n02 - ошибка считывания компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Удаление экземпляра компонента (xxDelete)
Описание запроса:
Pascal:
Function xxDelete( CompName : PString) : Logic;
C:
Logic xxDelete(PString CompName)
Описание аргумента:
CompName - указатель на строку символов, содержащую полное имя компонента.
Назначение - удаляет указанного в параметре CompName компонента из списка компонентов.
Описание исполнения.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Заметим, что попытка удаления младшей структурной единицы приводит к удалению всего компонента содержащего данную структурную единицу.
Запись компонента (xxWrite)
Описание запроса:
Pascal:
Function xxWrite( CompName : PString; FileName : PString) : Logic;
C:
Logic xxWrite(PString CompName, PString FileName)
Описание аргументов:
CompName - указатель на строку символов, содержащую имя компонента.
FileName - имя файла или адрес памяти, куда надо записать компонента.
Назначение - сохраняет в файле или в памяти компонента, указанного в аргументе CompName .
Описание исполнения.
Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является текущий компонент.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Если в качестве аргумента FileName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя файла, для записи компонента. В противном случае FileName должен содержать пустой указатель. В этом случае запрос вернет в нем указатель на область памяти, куда будет помещено описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то в текст будет включено ключевое слово Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
Если во время сохранения компонента возникнет ошибка, то генерируется ошибка n03 - ошибка сохранения компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Вернуть имена структурных единиц (xxGetStructNames)
Описание запроса:
Pascal:
Function xxGetStructNames(CompName : PString; Var Names : PRealArray) : Logic;
C:
Logic xxGetStructNames(PString CompName, RealArray* Names)
Описание аргументов:
CompName - указатель на строку символов, содержащую имя компонента или полное имя его структурной единицы.
Names - массив указателей на имена структурных единиц.
Назначение - возвращает имена всех компонентов в списке компонентов или имена всех структурных единиц структурной единицы, указанной в аргументе CompName .
Описание исполнения.
Если в качестве аргумента CompName дан пустой указатель, или указатель на пустую строку, то исполняющим запрос объектом является соответствующий программный компонент. В качестве ответа в указателе Names возвращается массив, каждый элемент которого является указателем на не подлежащую изменению символьную строку, содержащую имя компонента из списка. После адреса имени последнего компонента следует пустой указатель. Выполнение запроса успешно завершается.
Если имя компонента, переданное в аргументе CompName, не найдено в списке компонентов, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Возвращается массив, каждый элемент которого является указателем на не подлежащую изменению символьную строку, содержащую псевдоним структурной единицы, являющейся частью структурной единицы, указанной в аргументе CompName. Имена структурных единиц перечисляются в порядке следования в разделе описания состава структурной единицы, имя которой указано в аргументе CompName. Если одна из структурных единиц задана в описании состава несколькими экземплярами, то имя каждого экземпляра возвращается отдельно. После указателя на имя последней структурной единицы следует пустой указатель.
Вернуть тип структурной единицы (xxGetType)
Описание запроса:
Pascal:
Function xxGetType(CompName , TypeName : PString; Var TypeId : Integer) : Logic;
C:
Logic xxGetType(PString CompName, PString TypeName, Integer TypeId)
Описание аргументов:
CompName - указатель на строку символов, содержащую полное имя структурной единицы.
TypeName - возвращает указатель на строку символов, содержащую имя структурной единицы, данное ей при описании.
TypeId - одна из предопределенных констант, соответствующая типу структурной единицы.
Назначение - возвращает имя и тип структурной единицы.
Описание исполнения.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
В переменной TypeId возвращается тип структурной единицы. Значения предопределенных констант, соответствующих различным типам структурных единиц различных компонентов приведены в табл. 4 и в соответствующих разделах глав, содержащих описания компонентов.
Если структурная единица является стандартной, то указателю TypeName присваивается значение пустого указателя. Если структурная единица имеет пользовательский тип (значение аргумента TypeId равно -1), то указатель TypeName устанавливается на строку, содержащую имя, данное указанной в аргументе CompName структурной единице при ее описании.
1.4.6.3. Запросы на изменение параметров
К группе запросов на изменение параметров относятся три запроса: xxGetData - получить параметры структурной единицы. xxGetName - получить названия параметров и xxSetData - установить значения параметров структурной единицы.
Получить параметры (xxGetData)
Описание запроса:
Pascal:
Function xxGetData( CompName : PString; Var Param : PRealArray ) : Logic;
C:
Logic xxGetData(PString CompName, PRealArray* Param)
Описание аргументов:
CompName - указатель на строку символов, содержащую полное имя структурной единицы.
Param - адрес массива параметров.
Назначение - возвращает массив параметров структурной единицы, указанной в аргументе CompName .
Описание исполнения.
Если Error <> 0, то выполнение запроса прекращается.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
В массив, адрес которого передан в аргументе Param, заносятся значения параметров. Параметры заносятся в массив в порядке описания в разделе описания статических переменных. Статические переменные, описанные вне описания структурных единиц, считаются параметрами компонента.
Получить имена параметров (xxGetName)
Описание запроса:
Pascal:
Function xxGetName( CompName : PString; Var Param : PRealArray ) : Logic;
C:
Logic xxGetName(PString CompName, PRealArray* Param)
Описание аргументов:
CompName - указатель на строку символов, содержащую полное имя структурной единицы.
Param - адрес массива указателей на названия параметров.
Назначение - возвращает массив указателей на названия параметров структурной единицы, указанной в аргументе CompName .
Описание исполнения.
Если Error <> 0, то выполнение запроса прекращается.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
В массив, адрес которого передан в аргументе Param, заносятся адреса символьных строк, содержащих названия параметров.
Установить параметры (xxSetData)
Описание запроса:
Pascal:
Function xxSetData( CompName : PString; Param : PRealArray ) : Logic;
C:
Logic xxSetData(PString CompName, PRealArray Param)
Описание аргументов:
CompName - указатель на строку символов, содержащую полное имя структурной единицы.
Param - адрес массива параметров.
Назначение - заменяет значения параметров структурной единицы, указанной в аргументе CompName , на значения, переданные, в аргументе Param.
Описание исполнения.
Если Error <> 0, то выполнение запроса прекращается.
Если список компонентов пуст или имя компонента, переданное в аргументе CompName, в этом списке не найдено, то возникает ошибка n01 - неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.
Параметры, значения которых хранятся в массиве, адрес которого передан в аргументе Param, передаются указанной в аргументе CompName структурной единице.
Если исполняющим запрос компонентом является интерпретатор ответа (aiSetData), то генерируется запрос SetEstIntParameters к компоненту оценка. Аргументы генерируемого запроса совпадают с аргументами исполняемого запроса.
1.4.6.4. Инициация редактора компоненты
К этой группе запросов относится запрос, который инициирует работу не рассматриваемых в данной работе компонентов - редакторов компонентов.
Редактировать компонента (xxEdit)
Описание запроса:
Pascal:
Procedure xxEdit(CompName : PString);
C:
void xxEdit(PString CompName )
Описание аргумента:
CompName - указатель на строку символов - имя файла или адрес памяти, содержащие описание редактируемого компонента.
Если в качестве аргумента CompName дана строка, первые четыре символа которой составляют слово File, то остальная часть строки содержит имя компонента и после пробела имя файла, содержащего описание компонента. В противном случае считается, что аргумент CompName содержит указатель на область памяти, содержащую описание компонента в формате для записи на диск. Если описание не вмещается в одну область памяти, то допускается включение в текст описания компонента ключевого слова Continue, за которым следует четыре байта, содержащие адрес следующей области памяти.
Если в качестве аргумента CompName передан пустой указатель или указатель на пустую строку, то редактор создает новый экземпляр компонента.
2. Задачник и обучающее множество
Эта глава посвящена одному из наиболее важных и обделенных вниманием компонентов нейрокомпьютера - задачнику. Важность этого компонента определяется тем, что при обучении сетей всех видов с использованием любых алгоритмов обучения сети необходимо предъявлять примеры, на которых она обучается решению задачи. Источником данных для сети является задачник. Кроме того, задачник содержит правильные ответы для сетей, обучаемых с учителем. Аппаратная реализация этого компонента в общем случае неэффективна.
В этой главе рассматриваются основные структуры и функции компонента задачник. Отметим, что задачник рассматривается только с точки зрения его использования нейронной сетью. Совершенно очевидно, что невозможно предусмотреть всех вариантов интерфейса между пользователем и задачником. Действительно, было бы странно, если бы в одном и том же интерфейсе обрабатывались задачники, содержащие только числовые поля, задачники, содержащие исключительно графическую информацию и задачники смешанного типа.
2.1. Структуры данных задачника
С точки зрения нейрокомпьютера задачник представляет собой прямоугольную таблицу, поля которой содержат информацию о входных данных примеров задачи, правильные ответы и другую информацию. На данный момент существует три основных способа хранения однотипных данных - базы данных, электронные таблицы, текстовые файлы. Основными критериями выбора являются удобство в использовании, компактность и универсальность. Поскольку задачник должен хранить однотипные данные и предоставлять их для обработки другим компонентам нейрокомпьютера, а не производить вычисления, то функционально задачник должен являться базой данных. Наиболее подходящим кажется формат табличных (реляционных) баз данных.
В современных операционных системах предусмотрены различные способы обмена данными между приложениями (устройства, передающие информацию с датчиков, так же будем считать приложениями). Наиболее универсальным является обмен в символьном формате. Вопрос конкретной реализации обмена выходит за рамки данной работы, поскольку это чисто технический вопрос. Вне зависимости от того, каким путем и из какого приложения данные попали в задачник, их представление должно быть одинаковым (принятым в данной реализации задачника). То есть, откуда бы не получал данные задачник, остальные компоненты нейрокомпьютера всегда получают данные от задачника в одном и том же виде. Этот вид зафиксирован в приложении при описании стандарта компонента задачник.
2.2. Поля задачника
Далее будем полагать, что задачник является реляционной базой данных из одной таблицы или набора параллельных таблиц. Каждому примеру соответствует одна запись базы данных. Каждому данному - одно поле. В данном разделе рассмотрены допустимые типы полей, с точки зрения типа хранящихся в них данных. В разд. «Состав данных задачника» все поля разбиваются по смысловой нагрузке. Все поля базы данных можно разбить на четыре типа - числовые поля, текстовые поля, перечислимые поля и поля типа рисунок.
Числовые поля. Поля числовых типов данных Integer, Long и Real (см. раздел «Стандарт типов данных в приложении) предназначены для хранения различных чисел. Поля числового типа могут нести любую смысловую нагрузку.
Перечислимые поля. Поля перечислимого типа служат для хранения качественных признаков - полей базы данных, содержащих, как правило, текстовую информацию, но имеющих малое число различных значений. Простейшим примером поля перечислимого типа является поле «пол» - это поле может принимать только два значения - «мужской» или «женский». Поле перечислимого типа не хранит соответствующего текстового значения, вместо него в поле содержится номер значения. Поля перечислимого типа могут быть только входными данными, комментариями или ответами.
Строки (текстовые поля). Поля текстового типа предназначены для хранения тестовой информации. Они могут быть только комментариями.
Рисунок. Поля типа рисунок предназначены для хранения графической информации. В данной работе не устанавливается способ хранения полей типа рисунок. В приложении оговаривается только способ хранения полей типа рисунок на диске для файлов задачника, созданного в нейрокомпьютере. При передаче рисунков предобработчику используется формат, согласованный для предобработчика и задачника.
2.3. Состав данных задачника
Компонент задачник является необходимой частью нейрокомпьютера вне зависимости от типа применяемых в нем нейронных сетей. Однако в зависимости от решаемой задачи содержимое задачника может меняться. Так, например, для решения задачи классификации без учителя используют нейросети, основанные на методе динамических ядер [229, 267] (наиболее известным частным случаем таких сетей являются сети Кохонена [130, 131]). Задачник для такой сети должен содержать только массивы входных данных и предобработанных входных данных. При использовании обучаемых сетей, основанных на принципе двойственности, к задачнику необходимо добавить массив ответов сети. Кроме того, некоторые исследователи хотят иметь возможность просмотреть ответы, выданные сетью, массив оценок примера, показатели значимости входных сигналов и, возможно, некоторые другие величины. Поэтому, стандартный задачник должен иметь возможность предоставить пользователю всю необходимую информацию.
Подобные документы
Определение перспектив, направлений и тенденций развития вычислительных систем как совокупности техники и программных средств обработки информации. Развитие специализации вычислительных систем и проблема сфер применения. Тенденции развития информатики.
реферат [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