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

ПримечаниеРазработана функциональная модель идеального нейрокомпьютера. Определены принципы выделения функциональных компонентов. Произведена декомпозиция нейрокомпьютера на функциональные компоненты в соответствии с предложенными принципами
Загрузить архив:
Файл: ref-28260.zip (1368kb [zip], Скачиваний: 252) скачать

ИНСТИТУТ ВЫЧИСЛИТЕЛЬНОГО МОДЕЛИРОВАНИЯ СО РАН

КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

На правах рукописи

МИРКЕС ЕВГЕНИЙ МОИСЕЕВИЧ

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

05.13.11 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

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

доктора технических наук

Консультант: д.ф.-м.н.,                             

профессор    А.Н. Горбань

Красноярск 2001


Оглавление

Общая характеристика работы.. 8

Введение к диссертации.. 14

1.       Функциональные компоненты... 22

1.1.    Краткий обзор нейрокомпьютеров.. 22

1.2.    Выделение компонентов.. 24

1.3.    Запросы компонентов нейрокомпьютера.. 27

1.3.1.     Запросы к задачнику. 28

1.3.2.     Запрос к предобработчику. 28

1.3.3.     Запрос к исполнителю.. 29

1.3.4.     Запросы к учителю.. 29

1.3.5.     Запрос к контрастеру. 29

1.3.6.     Запрос к оценке. 29

1.3.7.     Запрос к интерпретатору ответа. 29

1.3.8.     Запросы к сети. 29

1.4.    Запросы общие для всех компонентов.. 30

1.4.1.     Стандарт типов данных. 30

1.4.2.     Переменные типа цвет и операции с цветами. 33

1.4.2.1.Значение переменной типа цвет (Color)33

1.4.2.2.Операции с переменными типа цвет (Color)34

1.4.3.     Предопределенные константы.. 35

1.4.4.     Использование памяти. 37

1.4.5.     Обработка ошибок. 38

1.4.5.1.Процедура обработки ошибок. 38

1.4.5.2.Установить обработчик ошибок (OnError)38

1.4.5.3.Дать номер ошибки (GetError)39

1.4.6.     Запросы, однотипные для всех компонентов. 40

1.4.6.1.Запрос на установление текущего компонента. 41

Сделать текущей (xxSetCurrent)41

1.4.6.2.Запросы, работающие со структурой компонента. 41

Добавление нового экземпляра (xxAdd)41

Удаление экземпляра компонента (xxDelete)42

Запись компонента (xxWrite)42

Вернуть имена структурных единиц (xxGetStructNames)43

Вернуть тип структурной единицы (xxGetType)44

1.4.6.3.Запросы на изменение параметров. 45

Получить параметры (xxGetData)45

Получить имена параметров (xxGetName)45

Установить параметры (xxSetData)46

1.4.6.4.Инициация редактора компоненты.. 47

Редактировать компонента (xxEdit)47

2.       Задачник и обучающее множество.. 48

2.1.    Структуры данных задачника.. 48

2.2.    Поля задачника.. 49

2.3.    Состав данных задачника.. 49

2.3.1.     Цвет примера и обучающая выборка. 50

2.3.2.     Входные данные. 50

2.3.3.     Комментарии. 50

2.3.4.     Предобработанные данные. 51

2.3.5.     Правильные ответы.. 51

2.3.6.     Полученные ответы.. 51

2.3.7.     Оценки. 51

2.3.8.     Вес примера. 51

2.3.9.     Достоверность ответа. 51

2.3.10.   Уверенность в ответе. 52

2.4.    Запросы к компоненту задачник.. 53

2.4.1.     Чтение и запись задачника. 54

2.4.1.1.Прочитать задачник (tbAdd)54

2.4.1.2.Записать задачник (tbWrite)54

2.4.1.3.Закрыть задачник (tbDelete)55

2.4.2.     Начало и конец сеанса. 55

2.4.2.1.Начало сеанса (InitSession)55

2.4.2.2.Конец сеанса (EndSession)56

2.4.3.     Перемещение по примерам.. 56

2.4.3.1.В начало (Home)56

2.4.3.2.В конец (End)57

2.4.3.3.Следующий (Next)57

2.4.3.4.Предыдущий (Prev)58

2.4.3.5.Конец (Last)59

2.4.3.6.Начало (First)60

2.4.3.7.Пример номер (Example)60

2.4.4.     Определение, получение и изменение данных. 61

2.4.4.1.Дать пример (Get)61

2.4.4.2.Обновить данные (Put)62

2.4.4.3.Сбросить предобработку (RemovePrepare)62

2.4.5.     Окраска примеров. 63

2.4.5.1.Дать цвет примера (GetColor)63

2.4.5.2.Покрасить пример (PaintCurrent)63

2.4.6.     Ошибки компонента задачника. 64

3.       Предобработчик.. 66

3.1.    Нейрон.. 67

3.2.    Различимость входных данных.. 67

3.3.    Классификация компонентов входных данных.. 69

3.4.    Кодирование бинарных признаков.. 70

3.5.    Кодирование неупорядоченных качественных признаков.. 71

3.6.    Кодирование упорядоченных качественных признаков.. 71

3.7.    Числовые признаки.. 71

3.8.    Простейшая предобработка числовых признаков.. 72

3.9.    Оценка способности сети решить задачу.. 72

3.9.1.     Оценка константы Липшица сети. 74

3.9.2.     Способ вычисления константы Липшица. 74

3.9.3.     Синапс. 75

3.9.4.     Умножитель. 75

3.9.5.     Точка ветвления. 75

3.9.6.     Сумматор. 75

3.9.7.     Нелинейный Паде преобразователь. 76

3.9.8.     Нелинейный сигмоидный преобразователь. 76

3.9.9.     Адаптивный сумматор. 76

3.9.10.   Константа Липшица сигмоидной сети. 77

3.10.       Предобработка, облегчающая обучение. 78

3.11.       Другие способы предобработки числовых признаков.. 79

3.11.1.   Модулярная предобработка. 80

3.11.2.   Функциональная предобработка. 80

3.11.3.   Позиционная предобработка. 82

3.12.       Составной предобработчик.. 82

3.13.       Запросы к компоненту предобработчик.. 83

3.13.1.   Запрос на предобработку. 84

3.13.1.1.Предобработать вектор сигналов (Prepare)84

3.13.2.   Остальные запросы.. 85

3.13.3.   Ошибки компонента предобработчик. 85

4.       Описание нейронных сетей.. 87

4.1.    Конструирование нейронных сетей.. 87

4.1.1.     Элементы нейронной сети. 88

4.1.2.     Составные элементы.. 89

4.1.3.     Функционирование сети. 90

4.1.4.     Методы построения двойственных сетей. 91

4.1.5.     Элементы самодвойственных сетей. 94

4.1.5.1.Синапс. 95

4.1.5.2.Умножитель. 95

4.1.5.3.Точка ветвления. 96

4.1.5.4.Сумматор. 96

4.1.5.5.Нелинейный Паде преобразователь. 97

4.1.5.6.Нелинейный сигмоидный преобразователь. 97

4.1.5.7.Произвольный непрерывный нелинейный преобразователь. 98

4.1.5.8.Пороговый преобразователь. 98

4.1.6.     Правила остановки работы сети. 99

4.1.7.     Архитектуры сетей. 99

4.1.8.     Модификация синаптической карты (обучение)102

4.1.9.     Контрастирование и нормализация сети. 102

4.2.    Примеры сетей и алгоритмов их обучения.. 103

4.2.1.     Сети Хопфилда. 103

4.2.2.     Сеть Кохонена. 105

4.2.3.     Персептрон Розенблатта. 108

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

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

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

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

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

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

4.3.6.     Операции. 118

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

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

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

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

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

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

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

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

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

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

4.3.7.10.Функции управления памятью.. 136

4.3.7.11.БНФ языка описания сетей. 138

4.3.7.12.Описание языка описания сетей. 141

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

Методы Forw и Back для блоков. 141

Описание элементов. 141

Пример описания элементов. 143

Описание блоков. 155

Пример описания блоков. 157

4.3.7.13.Сокращение описания сети. 164

Раздел описания сигналов и параметров. 164

Раздел описания связей. 165

Частично сокращенное описание. 168

Пример сокращенного описания блоков. 168

4.4.    Запросы к компоненту сеть. 170

4.4.1.     Запросы к компоненту сеть. 171

4.4.2.     Запросы на функционирование. 172

4.4.2.1.Выполнить прямое Функционирование (Forw)172

4.4.2.2.Выполнить обратное Функционирование (Back)172

4.4.3.     Запросы на изменение параметров. 173

4.4.3.1.Провести обучение (Modify)173

4.4.3.2.Изменить маску обучаемости (ModifyMask)174

4.4.3.3.Обнулить градиент (NullGradient)175

4.4.3.4.Случайное направление спуска (RandomDirection)175

4.4.4.     Запросы, работающие со структурой сети. 176

4.4.4.1.Вернуть параметры сети (nwGetData)176

4.4.4.2.Установить параметры сети (nwSetData)177

4.4.4.3.Нормализовать сеть (NormalizeNet)178

4.4.5.     Остальные запросы.. 178

4.4.6.     Ошибки компонента сеть. 179

5.       Оценка и интерпретатор ответа.. 180

5.1.    Интерпретатор ответа.. 180

5.2.    Уровень уверенности.. 182

5.3.    Построение оценки по интерпретатору.. 183

5.4.    Оценка обучающего множества.Вес примера.. 188

5.5.    Глобальные и локальные оценки.. 190

5.6.    Составные интерпретатор ответаи оценка.. 195

5.7.    Запросы к компоненту интерпретатор ответа.. 195

5.7.1.     Запрос на интерпретацию.. 196

5.7.1.1.Интерпретировать массив сигналов (Interpretate)196

5.7.2.     Остальные запросы.. 197

5.7.3.     Ошибки компонента интерпретатор ответа. 198

5.8.    Запосы к компоненту оценка.. 198

5.8.1.     Запрос на оценивание. 199

5.8.1.1.Оценить массив сигналов (Estimate)199

5.8.2.     Остальные запросы.. 200

5.8.2.1.Установить параметры (SetEstIntParameters)200

5.8.3.     Ошибки компонента оценка. 201

6.       Исполнитель.. 202

6.1.    Описание компонента исполнитель. 202

6.2.    Запросы к компоненту исполнитель. 203

6.2.1.     Позадачная обработка (TaskWork)204

6.2.2.     Обработка обучающего множества (TaskSetWork)206

6.2.3.     Ошибки компонента исполнитель. 209

7.       Учитель.. 210

7.1.    Что можно обучать методом двойственности.. 210

7.2.    Задача обучения сети.. 212

7.3.    Описание алгоритмов обучения.. 213

7.3.1.     Краткий обзор макрокоманд учителя. 213

7.3.2.     Неградиентные методы обучения. 215

7.3.2.1.Методслучайной стрельбы.. 216

7.3.2.2.Метод покоординатного спуска. 217

7.3.2.3.Подбор оптимального шага. 217

7.3.2.4.Метод случайного поиска. 218

7.3.2.5.Метод Нелдера-Мида. 219

7.3.3.     Градиентные методы обучения. 220

7.3.3.1.Метод наискорейшего спуска. 220

7.3.3.2.kParTan. 222

7.3.3.3.Квазиньютоновские методы.. 222

7.4.    Запросы к компоненту учитель. 222

7.4.1.     Обучение сети. 222

7.4.1.1.Обучить сеть (InstructNet)223

7.4.1.2.Провести N шагов обучения (NInstructSteps)223

7.4.1.3.Прервать обучение (CloseInstruction)224

7.4.2.     Чтение/запись учителя. 224

7.4.2.1.Прочитать учителя (inAdd)224

7.4.2.2.Удаление учителя (inDelete)225

7.4.2.3.Запись компонента (inWrite)225

7.4.3.     Инициация редактора учителя. 226

7.4.3.1.Редактировать компонент (inEdit)226

7.4.4.     Работа с параметрами учителя. 227

7.4.4.1.Получить параметры (inGetData)227

7.4.4.2.Получить имена параметров (inGetName)227

7.4.4.3.Установить параметры (inSetData)228

7.4.5.     Обработка ошибок. 228

8.       Контрастер. 229

8.1.    Задачи для контрастера.. 229

8.1.1.     Упрощение архитектуры нейронной сети. 229

8.1.2.     Уменьшение числа входных сигналов. 231

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

8.1.4.     Снижение требований к точности входных сигналов. 232

8.1.5.     Получение явных знаний из данных. 232

8.1.5.1.Построение логически прозрачных сетей. 233

8.1.5.2.Получение явных знаний. 234

8.2.    Множества повышенной надежности.. 237

8.2.1.     Формальная постановка задачи. 237

8.2.2.     Классификация дублей. 238

8.2.3.     Прямой дубль первого рода. 238

8.2.4.     Косвенный дубль первого рода. 239

8.2.5.     Прямой дубль второго рода. 240

8.2.6.     Косвенный дубль второго рода. 241

8.2.7.     Косвенный супердубль. 241

8.3.    Процедура контрастирования.. 242

8.3.1.     Контрастирование на основе показателей значимости. 242

8.3.2.     Контрастирование без ухудшения. 243

8.3.3.     Гибридная процедура контрастирования. 244

8.3.4.     Контрастирование при обучении. 245

8.4.    Определение показателей значимости.. 245

8.4.1.     Определение показателей значимости через градиент.. 245

8.4.2.     Усреднение по обучающему множеству. 246

8.4.3.     Накопление показателей значимости. 247

8.5.    Запросы к компоненту контрастер. 248

8.5.1.     Контрастирование сети. 248

8.5.1.1.Контрастировать сеть(ContrastNet)248

8.5.1.2.Прервать контрастирование (CloseContrast)248

8.5.1.3.Контрастировать пример (ContrastExample)249

8.5.2.     Чтение/запись контрастера. 250

8.5.2.1.Прочитать контрастера (cnAdd)250

8.5.2.2.Удаление контрастера (cnDelete)250

8.5.2.3.Запись контрастера (cnWrite)251

8.5.3.     Инициация редактора контрастера. 251

8.5.3.1.Редактировать контрастера (cnEdit)251

8.5.4.     Работа с параметрами контрастера. 252

8.5.4.1.Получить параметры (cnGetData)252

8.5.4.2.Получить имена параметров (cnGetName)252

8.5.4.3.Установить параметры (cnSetData)253

8.5.5.     Обработка ошибок. 253

9.       Нейронные сети ассоциативной памяти, функционирующие в дискретном времени.. 255

9.1.    Описание задачи.. 255

9.2.    Формальная постановка задачи.. 256

9.3.    Сети Хопфилда.. 256

9.4.    Функционирование сети.257

9.5.    Ортогональные сети.. 261

9.6.    Тензорные сети.. 265

9.7.    Сети для инвариантной обработки изображений.. 268

9.8.    Численный эксперимент. 269

9.9.    Доказательство теоремы.. 271

10.     Заключение.. 277

11.     Приложение 1. Логически прозрачная сеть для прогнозирования шизофрении.. 278

12.     Приложение 2. Краткое описание возможностей программы NEUROPRO   285

12.1.       Общие сведения.. 285

12.2.       Требования к аппаратуре. 285

12.3.       Основные возможности программы.. 285

12.4.       Форматы файлов.. 286

12.5.       Нейросетевая парадигма.. 286

12.6.       Подача и снятие сигналов.. 286

12.7.       Точность решения задачи.. 287

12.8.       Обучение нейронной сети.. 288

12.9.       Упрощение нейронной сети.. 288

12.10.     Вербализация нейронной сети.. 289

13.     Приложение 3. Акты о внедрении.. 290