/ Language: Русский / Genre:sci_math

Учебное пособие по курсу «Нейроинформатика»

Е. Миркес

Данное учебное пособие подготовлено на основе курса лекций по дисциплине «Нейроинформатика», читавшегося с 1994 года на факультете Информатики и вычислительной техники Красноярского государственного технического университета. Несколько слов о структуре пособия. Далее во введении приведены учебный план по данному курсу, задания на лабораторные работы. Следующие главы содержат одну или несколько лекций. Материал, приведенный в главах, несколько шире того, что обычно дается на лекциях. В приложения вынесены описания программ, используемых в данном курсе (Clab и Нейроучебник), и проект стандарта нейрокомпьютера, включающий в себя два уровня — уровень запросов компонентов универсального нейрокомпьютера и уровень языков описания отдельных компонентов нейрокомпьютера. Данное пособие является электронным и включает в себя программы, необходимые для выполнения лабораторных работ.

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

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

Миркес Е.М

Учебное пособие по курсу

НЕЙРОИНФОРМАТИКА

Красноярск 2002

Введение

Рабочая программа по курсу «Нейроинформатика»

НАГРУЗКА

Лекции 32 часа
Лабораторные занятия 64 часа
Самостоятельная работа 20 часов
Всего 116 часов

ПРОГРАММУ СОСТАВИЛИ:

д.ф.-м.н., профессор А.Н. Горбань,

д.т.н., доцент Е.М. Миркес

к.ф.-м.н., доцент Н.Ю. Сиротинина

ЦЕЛИ И ЗАДАЧИ КУРСА

Цель преподавания дисциплины:

• ознакомить студентов с новой перспективной областью информатики;

• научить студентов квалифицированно использовать аппарат нейронных сетей для решения прикладных задач;

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

В результате изучения дисциплины студенты должны:

• знать базовые модели нейронов и нейронных сетей;

• владеть основными парадигмами построения нейронных сетей для решения задач: Сети Кохонена, сетчатки Хопфилда, сети обратного распространения ошибки;

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

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

СОДЕРЖАНИЕ КУРСА

Тема 1. Введение. 2 часа

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

Тема 2. Сети естественной классификации. 4 часа

Задача естественной классификации. Основные методы решения. Метод динамических ядер и сети Кохонена.

Тема 3. Сети ассоциативной памяти. 6 часов

Сети Хопфилда и их обобщения. Инвариантная обработка изображений (по отношению к переносам, поворотам). Ассоциативная память.

Тема 4. Сети, обучаемые методом обратного распространения ошибки. 16 часов

Идея универсального нейрокомпьютера. Выделение компонентов универсального нейрокомпьютера. Задачник. Методы предобработки. Нейронная сеть (быстрое дифференцирование и метод двойственности). Оценка и интерпретатор ответа. Учитель. Контрастер. Логически прозрачные нейронные сети и получение явных знаний из данных.

Тема 5. Персептрон Розенблатта. 4 часа

Правило Хебба. Персептрон и его обучение. Ограничения и возможности персептрона.

ОСНОВНАЯ ЛИТЕРАТУРА

1. Горбань А.Н., Россиев Д.А. Нейронные сети на персональном компьютере. — Новосибирск: Наука. Сибирская издательская фирма РАН, 1996.

2. Миркес Е.М. Нейрокомпьютер. Проект стандарта. Новосибирск: Наука, Сибирская издательская фирма РАН, 1998, 337 С

2. Минский М., Пайперт С. Персептроны. — М.: Мир, 1971. Задания для лабораторных работ

По курсу «Нейроинформатика» студенты выполняют 7 лабораторных работ. Каждая из лабораторных работ преследует свои цели. Все лабораторные выполняются группами по 2–4 человека.

Лабораторная № 1

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

Используемые программы. Лабораторная выполняется на программе clab.

Задание. Данная лабораторная выполняется в несколько этапов.

1. Необходимо выбрать задачу. Примерами таких задач могут служить следующие: «Мужчина/женщина», «Студент/преподаватель», «Студенты живущие дома/в общежитии» и др.

2. Необходимо составить вопросник из 20 косвенных вопросов, по ответам на которые, с точки зрения студента, возможно провести разделение. Список вопросов утверждается преподавателем. Примером косвенного вопроса в задаче «Мужчина/женщина» может служить вопрос «Носите ли Вы дома халат», однако вопросы «Носите ли вы дома юбку» или «Приходится ли Вам по утрам бриться» косвенными считаться не могут.

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

4. Необходимо проанкетировать не менее 20 человек по составленному вопроснику.

5. На основе анкетирования подготовить файлы Ptn и Pbl в соответствии с требованиями пакета CLAB.

6. Провести пробное обучение. В случае, если нейронная сеть не может обучиться решению задачи проанализировать задачник на предмет непротиворечивости. Если противоречий нет, обратиться к преподавателю.

7. Провести минимизацию задачника.

 1.В режиме тестирования предъявить сети все примеры. Расставить «места» значимости всех вопросов в каждом примере (Самый важный — 1, второй по значимости — 2 и т. д.). В следующей таблице приведен пример результатов данного этапа. В таблице рассмотрены результаты только для четырех примеров задачника. При выполнении задания необходимо использовать все примеры.

Пример Вопрос
1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 1 6 12 10 15 2 7 13 17 3 8 11 16 18 4 20 9 14 5 19
3 17 6 5 8 10 12 3 1 13 15 11 9 7 19 2 4 20 16 18 14
4 8 12 11 3 17 14 6 1 13 16 18 4 7 10 9 2 20 19 15 5
Итого 27 26 31 25 47 34 23 23 42 44 48 36 43 61 30 42 66 67 56 48
Место 14 15 12 16 6 11 17 17 9 7 5 10 9 3 13 8 2 1 4 5

 2. Исключить из задачника (и вопросника) несколько (обычно пять) вопросов, занявших первые места (имеющие наибольшие значения в строке «Итого». В приведенном выше примере следует исключать либо четыре, либо шесть вопросов, поскольку на пятом месте сразу два вопроса — одиннадцатый и двадцатый.

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

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

Лабораторная № 2

Цель работы. Освоение работы с сетями Кохонена.

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

1. Расстояние между классами.

2. Максимальное расстояние от точек класса до ядра класа.

3. Число точек в классе.

4. Число точек каждого из «правильных» классов (например число «мужчин» и «женщин») в каждом классе.

Все результаты отражаются в отчете.

Лабораторная № 3

Цель работы. Сравнить два вида сетей ассоциативной памяти.

Используемые программы. Лабораторная выполняется на программе Hopfield.

Задание.

1. Подобрать пять образов, которые способна запомнить классическая сеть Хопфилда.

2. Определить максимальный уровень шума, при котором сеть продолжает правильно воспроизводить все образы.

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

4. Определить максимальный уровень шума, при котором отконтрастированная сеть продолжает правильно воспроизводить все образы.

5. Переключить программу в режим работы проекционной сети ассоциативной памяти. И повторить этапы со второго по четвертый.

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

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

Лабораторная № 4

Цель работы. Исследование стратегий обучения нейронных сетей

Используемые программы. Лабораторная выполняется на программе Sigmoid.

Задание. В лабораторной работе требуется обучить нейронную сеть решению задачи распознавания пяти бинарных изображений с использованием четырех различных методов обучения и провести сравнение методов по скорости обучения и надежности работы обученной сети. Основные этапы выполнения работы:

1. Формирование задачника.

2. Установка параметров метода обучения.

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

4. Тестирование обученной нейронной сети (статистический тест).

5. Повторение этапов 2–4 для других методов обучения.

6. Анализ полученных результатов.

Методы обучения:

1. Градиентный с mParTan

2. Градиентный без mParTan

3. Случайный без mParTan

4. Случайный с mParTan

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

Лабораторная № 5

Цель работы. Исследование влияния различных видов функции оценки на обучение нейронных сетей

Используемые программы. Лабораторная выполняется на программе Sigmoid.

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

1. Формирование задачника.

2. Установка параметров оценки.

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

4. Тестирование обученной нейронной сети (статистический тест).

5. Повторение этапов 2–4 для других методов оценки.

6. Анализ полученных результатов.

Исследуемые оценки:

1. Метод наименьших квадратов.

2. Расстояние до множества с уровнем надежности 0,1.

3. Расстояние до множества с уровнем надежности 1,8.

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

Лабораторная № 6

Цель работы. Контрастирование нейронных сетей

Используемые программы. Лабораторная выполняется на программе Sigmoid.

Задание. В лабораторной работе требуется провести контрастирование обученной нейронной сети с целью минимизации числа синаптических связей и сравненить надежности функционирования контрастированной и неконтрастированной нейронных сетей. Основные этапы выполнения работы:

1. Формирование задачника.

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

3. Тестирование обученной нейронной сети.

4. Контрастирование обученной нейронной сети.

5. Тестирование контрастированной нейронной сети.

6. Анализ полученных результатов.

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

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

Лабораторная № 7

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

Используемые программы. Лабораторная выполняется на программах Sigmoid, Pade, Sinus.

Задание. Необходимо обучить нейронные сети, реализованные в программах Sigmoid, Pade и Sinus с максимальным уровнем надежности. Для программы Sigmoid (сигмоидная сеть) максимальным, но недостижимым уровнем надежности является 2. На практике удается обучить сеть с уровнем надежности 1,9–1,98. Для Паде сети (программа Pade) нет ограничения на достижимый уровень надежности, однако в программе установлено ограничение на уровень существенности — 200. В программе Sinus (сеть с синусоидной характеристикой) максимальный уровень надежности 2 является достижимым.

Для каждой сети определяются следующие показатели:

• число тактов обучения;

• результат статистического теста.

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

Вопросы к экзамену

1. Основные принципы инженерного направления в нейроинформатике

2. Классическая сеть Хопфилда. Ее свойства и методы расширения возможностей.

3. Проекционная сеть ассоциативной памяти

4. Тензорная сеть ассоциативной памяти

5. Автокорреляторы в обработке изображений. Сети Хопфилда с автокорреляторами.

6. Сети естественной классификации. Метод динамических ядер. Пространственная сеть Кохонена.

7. Бинарные сети. Метод обучения бинарных сетей. Правило Хебба, его достоинства и недостатки.

8. Персептрон Розенблатта. Теорема о достаточности целочисленных коэффициентов.

9. Персептрон Розенблатта. Теорема о достаточности двух слоев.

10. Метод двойственности в обучении нейронных сетей. Основные идеи и ограничения на архитектуру.

11. Метод двойственности в обучении нейронных сетей. Требования к элементам сети. Функционирование синапса, сумматора, нелинейного преобразователя.

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

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

14. Контрастирование нейронных сетей с использованием функции оценки.

15. Контрастирование нейронных сетей. Метод контрастирования сумматоров.

16. Логически прозрачные нейронные сети и метод получения явных знаний из данных.

Лекция 1. Возможности нейронных сетей

Лекция является сокращенной версией лекции А.Н.Горбаня. Полный текст лекции приведен в [59]

Нейробум: поэзия и проза нейронных сетей

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

Поэтическая игра воображения вовлекает в работу молодежь, поэзия рекламы создает научную моду и влияет на финансовые вложения. Можете ли Вы четко различить, где кончается бескорыстная творческая игра и начинается реклама? У меня такое однозначное различение не получается: это как вопрос о искренности — можно сомневаться даже в своей собственной искренности.

Итак: игра и мода как важные движущие силы.

В словах «модное научное направление» слышится нечто неоднозначное ‑ то ли пренебрежение, смешанное с завистью, то ли еще что-то. А вообще, мода в науке — это хорошо или плохо? Дадим три ответа на этот вопрос.

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

Мы все зависим от своего прошлого, от привычных дел и привычных мыслей. Так давайте же приветствовать все, что освобождает нас от этой зависимости! В новой модной области почти нет накопленных преимуществ — все равны. Это хорошо для молодежи.

2. Мода — это плохо! Она противоречит глубине и тщательности научного поиска. Часто «новые» результаты, полученные в погоне за модой, суть всего-навсего хорошо забытые старые, да еще нередко и перевранные. Погоня за модой растлевает, заставляет переписывать старые работы и в новой словесной упаковке выдавать их за свои. Мода ‑ источник сверххалтуры. Примеров тому — тысячи.

«Гений — это терпение мысли». Так давайте же вслед за Ньютоном и другими Великими культивировать в себе это терпение. Не будем поддаваться соблазну моды.

3. Мода в науке — это элемент реальности. Так повелось во второй половине xx века: наука стала массовой и в ней постоянно вспыхивают волны моды. Можно ли относиться к реальности с позиций должного: так, дескать, должно быть, а этак — нет? Наверное, можно, но это уж точно непродуктивно. Волны моды и рекламные кампании стали элементом организации массовой науки и с этим приходится считаться, нравится нам это или нет.

Нейронные сети нынче в моде и поэтическая реклама делает свое дело, привлекает внимание. Но стоит ли следовать за модой? Ресурсы ограничены — особенно у нас, особенно теперь. Все равно всего на всех не хватит. И возникают вопросы:

1. нейрокомпьютер — это интеллектуальная игрушка или новая техническая революция?

2. что нового и полезного может сделать нейрокомпьютер?

За этими вопросами скрыты два базовых предположения:

1. на новые игрушки, даже высокоинтеллектуальные, средств нет;

2. нейрокомпьютер должен доказать свои новые возможности — сделать то, чего не может сделать обычная ЭВМ, — иначе на него не стоит тратиться.

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

1. нейрокомпьютеры — это новая техническая революция, которая приходит к нам в виде интеллектуальной игрушки (вспомните — и персональные ЭВМ были придуманы для игры!);

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

Зачем же тогда нейрокомпьютеры? Вступая в творческую игру, мы не можем знать, чем она кончится, иначе это не Игра. Поэзия и реклама дают нам фантом, призрак результата, погоня за которым ‑ важнейшая часть игры. Столь же призрачными могут оказаться и прозаичные ответы ‑ игра может далеко от них увести. Но и они необходимы ‑ трудно бегать по облакам и иллюзия практичности столь же важна, сколь и иллюзия величия. Вот несколько вариантов прозаичных ответов на вопрос «зачем?» ‑ можно выбрать, что для Вас важнее:

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

Б. Вместо программирования — обучение. Нейрокомпьютер учится — нужно только формировать учебные задачники. Труд программиста замещается новым трудом — учителя (может быть, надо сказать — тренера или дрессировщика). Лучше это или хуже? Ни то, ни другое. Программист предписывает машине все детали работы, учитель — создает «образовательную среду», к которой приспосабливается нейрокомпьютер. Появляются новые возможности для работы.

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

Г. Гибкость структуры: можно различными способами комбинировать простые составляющие нейрокомпьютеров — нейроны и связи между ними. За счет этого на одной элементной базе и даже внутри «тела» одного нейрокомпьютера можно создавать совершенно различные машины. Появляется еще одна новая профессия — «нейроконструктор» (конструктор мозгов).

Д. Нейронные сети позволяют создать эффективное программное обеспечение для высокопараллельных компьютеров. Для высокопараллельных машин хорошо известна проблема: как их эффективно использовать — как добиться, чтобы все элементы одновременно и без лишнего дублирования вычисляли что-нибудь полезное? Создавая математическое обеспечения на базе нейронных сетей, можно для широкого класса задач решить эту проблему.

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

Ядром используемых представлений является идея о том, что нейроны можно моделировать довольно простыми автоматами, а вся сложность мозга, гибкость его функционирования и другие важнейшие качества определяются связями между нейронами. Каждая связь представляется как совсем простой элемент, служащий для передачи сигнала. Предельным выражением этой точки зрения может служить лозунг: «структура связей — все, свойства элементов — ничто».

Совокупность идей и научно-техническое направление, определяемое описанным представлением о мозге, называется коннекционизмом (по-английски connection — связь). Как все это соотносится с реальным мозгом? Так же, как карикатура или шарж со своим прототипом-человеком ‑ весьма условно. Это нормально: важно не буквальное соответствие живому прототипу, а продуктивность технической идеи.

С коннекционизмом тесно связан следующий блок идей:

1) однородность системы (элементы одинаковы и чрезвычайно просты, все определяется структурой связей);

2) надежные системы из ненадежных элементов и «аналоговый ренессанс» — использование простых аналоговых элементов;

3) «голографические» системы — при разрушении случайно выбранной части система сохраняет свои полезные свойства.

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

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

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

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

Неявное обучение приводит к тому, что структура связей становится «непонятной» — не существует иного способа ее прочитать, кроме как запустить функционирование сети. Становится сложно ответить на вопрос: «Как нейронная сеть получает результат?» — то есть построить понятную человеку логическую конструкцию, воспроизводящую действия сети.

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

С другой стороны, при использовании нейронных сетей в экспертных системах на PC возникает потребность прочитать и логически проинтерпретировать навыки, выработанные сетью. В главе «Контрастер» описаны служащие для этого методы контрастирования — получения неявными методами логически прозрачных нейронных сетей. Однако за логическую прозрачность приходится платить снижением избыточности, так как при контрастировании удаляются все связи кроме самых важных, без которых задача не может быть решена.

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

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

Из этой теоремы следует, что Нейронные сети — универсальные аппроксимирующие устройства и могут с любой точностью имитировать любой непрерывный автомат

Главный вопрос: что могут нейронные сети. Ответ получен: нейронные сети могут все. Остается открытым другой вопрос: как их этому научить?

Лекции 2 и 3. Сети естественной классификации

В данном разделе курса будут рассмотрены сети естественной классификации. Этот класс сетей имеет еще одно название — сети, обучающиеся без учителя. Второе название имеет более широкое распространение, однако, является в корне неверным. В дальнейшем в нашем курсе будет рассмотрена модель универсального нейрокомпьютера в которой будет явно выделен компонент учитель и описаны его функции. В этом смысле данный вид сетей обучается с явно заданным учителем. Когда давалось это название, имелось в виду, что сети данного вида не обучают воспроизведению заранее заданной классификации. Именно поэтому название «Сети естественной классификации» является наиболее точным для данного класса сетей. Наиболее известной сетью данного вида является сеть Кохонена [131, 132].

Содержательная постановка задачи

Достаточно часто на практике приходится сталкиваться со следующей задачей: есть таблица данных (результаты измерений, социологических опросов или обследований больных). Необходимо определить каким закономерностям подчиняются данные в таблице. Следует заметить, что характерный размер таблицы — порядка ста признаков и порядка нескольких сотен или тысяч объектов. Ручной анализ таких объемов информации фактически невозможен.

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

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

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

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

Рассмотрим множество из m объектов {x}, каждый из которых является n-мерным вектором с действительными координатами (в случае комплексных координат особых трудностей с данным методом также не возникает, но формулы становятся более сложными, а комплексные значения признаков случаются редко).

Зададим пространство ядер классов E, и меру близости dist(a, x), где a — точка из пространства ядер, а x — точка из пространства объектов. Тогда для заданного числа классов k необходимо подобрать k ядер таким образом, чтобы суммарная мера близости была минимальной. Суммарная мера близости записывается в следующем виде:

(1)

где Ki — множество объектов i—го класса.

Сеть Кохонена

Сеть Кохонена для классификации на k классов состоит из k нейронов (ядер), каждый из которых вычисляет близость объекта к своему классу. Все нейроны работают параллельно. Объект считается принадлежащим к тому классу, нейрон которого выдал минимальный сигнал. При обучении сети Кохонена считается, что целевой функционал не задан (отсюда и название «Обучение без учителя»). Однако алгоритм обучения устроен так, что в ходе обучения минимизируется функционал (1), хотя и немонотонно.

Обучение сети Кохонена

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

ai′=λx+(1-λ)a(2)

Затем сети предъявляется следующий объект, и так далее до тех пор, пока после очередного цикла предъявления всех объектов не окажется, что параметры всех нейронов изменились на величину меньшую наперед заданной точности ε. В формуле (2) параметр λ называют скоростью обучения. Для некоторых мер близости после преобразования (2) может потребоваться дополнительная нормировка параметров нейрона.

Сеть Кохонена на сфере

Рис 1. Три четко выделенных кластера в исходном пространстве сливаются полностью (а) или частично (б) при проецировании на единичную сферу.

Одним из наиболее распространенных и наименее удачных (в смысле практических применений) является сферическая сеть Кохонена. В этой постановке предполагается, что все вектора-объекты имеют единичную длину. Ядра (векторы параметров нейронов) также являются векторами единичной длины. Привлекательность этой модели в том, что нейрон вычисляет очень простую функцию — скалярное произведение вектора входных сигналов на вектор параметров. Недостатком является большая потеря информации во многих задачах. На рис. 1 приведен пример множества точек разбитого на три четко выделенных кластера в исходном пространстве, которые сливаются полностью или частично при проецировании на единичную сферу.

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

Рис. 2. Положение ядер при последовательном предъявлении объектов со скоростью обучения 0,5. Состояние до обучения и после каждой эпохи обучения. Ниже приведен график изменения суммы квадратов изменений координат ядер.

На рис. 2 приведены состояния сети Кохонена перед началом обучения и после каждой эпохи обучения. Эпохой принято называть полный цикл предъявления обучающего множества (всех объектов, по которым проводится обучение). Ядра на рисунках обозначены жирными линиями. Из рисунка видно, что обучение зациклилось — после каждой эпохи сумма квадратов изменений координат всех ядер то уменьшается, то возрастает. В литературе приводится целый ряд способов избежать зацикливания. Один из них — обучать с малым шагом. На рис. 3 приведены состояния сети при скорости обучения 0,01.

Рис. 3. Положение ядер при последовательном предъявлении объектов со скоростью обучения 0,01. Состояние до обучения и после каждой эпохи обучения. Ниже приведен график изменения суммы квадратов изменений координат ядер.

Из анализа рис. 3 видно, что изменения ядер уменьшаются со временем. Однако в случае изначально неудачного распределения ядер потребуется множество шагов для перемещения их к «своим» кластерам (см. рис. 4).

Рис. 4. Обучение сети Кохонена со скоростью 0,01 (107 эпох)

Следующая модификация алгоритма обучения состоит в постепенном уменьшении скорости обучения. Это позволяет быстро приблизиться к «своим» кластерам на высокой скорости и произвести доводку при низкой скорости. Для этого метода необходимым является требование, чтобы последовательность скоростей обучения образовывала расходящийся ряд, иначе остановка алгоритма будет достигнута не за счет выбора оптимальных ядер, а за счет ограниченности точности вычислений. На рис. 5 приведены состояния сети Кохонена при использовании начальной скорости обучения 0,5 и уменьшения скорости в соответствии с натуральным рядом (1, ½, ⅓, …). Уменьшение скорости обучения производилось после каждой эпохи. Из графика изменения суммы квадратов изменений координат ядер видно, что этот метод является лучшим среди рассмотренных. На рис. 6 приведены результаты применения этого метода в случае неудачного начального положения ядер. Распределение объектов выбрано то же, что и на рисунке 4 — два класса по 8 объектов, равномерно распределенных в интервалах [π/4,3 π/4] и [5π/4, 7π/4].

Рис. 5. Положение ядер при последовательном предъявлении объектов со снижением скорости обучения с 0,5 в соответствии с последовательностью 1/n. Состояние до обучения и после каждой эпохи обучения. Ниже приведен график изменения суммы квадратов изменений координат ядер (в логарифмической шкале).

Рис. 6. Обучение сети Кохонена со снижением скорости с 0,5.

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

Рис. 7. Положение ядер при предъявлении объектов в случайном порядке со скоростью обучения 0,5. Состояние до обучения и после каждой эпохи обучения. Ниже приведен график изменения суммы квадратов изменений координат ядер.

Под направленным воздействием подразумевается порядок предъявления объектов, который влечет смещение ядра от оптимального положения в определенную сторону. Именно эффект направленного воздействия приводит к тому, что стандартный метод зацикливается (отметим, что пример с равномерно распределенными по окружности объектами, пронумерованными против часовой стрелки, специально строился для оказания направленного воздействия). Именно из-за направленного воздействия ядра на рис. 6 направлены не строго вертикально. Случайный порядок перебора объектов позволяет избежать, точнее снизить эффект, направленного воздействия. Однако из рис. 7, на котором приведены результаты применения метода перебора объектов в случайном порядке к задаче с равномерно распределенными по окружности объектами, видно, что полностью снять эффект направленного воздействия этот метод не позволяет.

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

Метод динамических ядер

Альтернативой методам пообъектного обучения сетей Кохонена является метод динамических ядер, который напрямую минимизирует суммарную меру близости (1). Метод является итерационной процедурой, каждая итерация которой состоит из двух шагов. Сначала задаются начальные значения ядер. Затем выполняют следующие шаги:

Разбиение на классы при фиксированных значениях ядер:

Ki={x: dist(ai, x)≤dist(aj, x)} (3)

Оптимизация значений ядер при фиксированном разбиении на классы:

(4)

В случае равенства в формуле (3) объект относят к классу с меньшим номером. Процедура останавливается если после очередного выполнения разбиения на классы (3) не изменился состав ни одного класса.

Исследуем сходимость метода динамических ядер. На шаге (3) суммарная мера близости (1) может измениться только при переходе объектов из одного класса в другой. Если объект перешел из j-го класса в i-й, то верно неравенство dist(ai, x)≤dist(aj, x). То есть при переходе объекта из одного класса в другой суммарная мера близости не возрастает. На шаге (4) минимизируются отдельные слагаемые суммарной меры близости (1). Поскольку эти слагаемые независимы друг от друга, то суммарная мера близости на шаге (4) не может возрасти. При это если на шаге (4) суммарная мера близости не уменьшилась, то ядра остались неизменными и при выполнении следующего шага (3) будет зафиксировано выполнение условия остановки. И наконец, учитывая, что конечное множество объектов можно разбить на конечное число классов только конечным числом способов, получаем окончательное утверждение о сходимости метода динамических ядер.

Процедура (3), (4) сходится за конечное число шагов, причем ни на одном шаге не происходит возрастания суммарной меры близости.

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

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

Выбор начального приближения

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

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

Самым универсальным способом задания начального положения ядер является задание начального разбиения объектов на классы. При этом в начальном разбиении могут участвовать не все объекты. Далее решая задачу (4) получаем начальные значения ядер. Далее можно использовать метод динамических ядер.

Примеры видов классификации

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

Сферическая модель

Один вид классификации — сеть Кохонена на сфере был описан ранее. Получим формулы для решения задачи (4) при мере близости «минус скалярное произведение» (минус перед скалярным произведением нужен для того, чтобы решать задачу минимизации (1) и (4), поскольку, чем ближе векторы, тем больше скалярное произведение).

Обозначим через xij объекты, принадлежащие i-му классу. Учитывая дополнительное условие на значение ядра — его единичную длину — и применяя метод множителей Лагранжа для решения задач поиска условного экстремума, получим следующую задачу:

(5)

Дифференцируя (5) по каждой из координат ядра и по множителю Лагранжа λ, и приравнивая результат дифференцирования к нулю, получим следующую систему уравнений:

(6)

Выразив из первых уравнений ail и подставив результат в последнее выражение найдем λ, а затем найдем координаты ядра:

(7)

Рис. 8. Решение задачи методом динамических ядер

Подводя итог, можно сказать, что новое положение ядра есть среднее арифметическое объектов данного класса, нормированное на единичную длину.

На рис. 8. Приведено решение второго примера методом обучения сети Кохонена с уменьшением скорости с 0,5, а на рис. 9 — решение той же задачи методом динамических ядер. В качестве первоначального значения ядер выбраны два первых объекта.

Рис. 9. Решение задачи с помощью обучения сети Кохонена со снижением скорости обучения с 0,5. График суммарного изменения разностей координат ядер.

Пространственная модель

Эта модель описывает наиболее естественную классификацию. Нейрон пространственной сети Кохонена приведен в главе «Описание нейронных сетей». Ядра являются точками в пространстве объектов. Мера близости — квадрат обычного евклидова расстояния. Обучение сети Кохонена ведется непосредственно по формуле (2). Задача (4) имеет вид:

(8)

Дифференцируя (8) по каждой координате ядра и приравнивая результат к нулю получаем следующую систему уравнений:

Преобразуя полученное выражение получаем

, (9)

где |Ki| — мощность i-го класса (число объектов в классе). Таким образом, оптимальное ядро класса — среднее арифметическое всех объектов класса.

Модель линейных зависимостей

Это первая модель, которая может быть решена методом динамических ядер, но не может быть получена с помощью обучения сети Кохонена, поскольку ядра не являются точками в пространстве объектов. Ядрами в данной модели являются прямые, а мерой близости — квадрат расстояния от точки (объекта) до прямой. Прямая в n—мерном пространстве задается парой векторов: ai = (bi, ci). Первый из векторов задает смещение прямой от начала координат, а второй является направляющим вектором прямой. Точки прямой задаются формулой x = b + tc, где t — параметр, пробегающий значения от минус бесконечности до плюс бесконечности. t имеет смысл длины проекции вектора x-b на вектор c. Сама проекция равна tc. При положительном значении вектор проекции сонаправлен с вектором c, при отрицательном — противоположно направлен. При условии, что длина вектора c равна единице, проекция вычисляется как скалярное произведение (x–b,c). В противном случае скалярное произведение необходимо разделить на квадрат длины c. Мера близости вектора (точки) x определяется как квадрат длины разности вектора x и его проекции на прямую. При решении задачи (4) необходимо найти минимум следующей функции:

Продифференцируем целевую функцию по неизвестным tq, cir, bir и приравняем результаты к нулю.

(10)

Выразим из последнего уравнения в (10) bir:

(11)

В качестве bi можно выбрать любую точку прямой. Отметим, что для любого набора векторов xij и любой прямой с ненулевым направляющим вектором ci на прямой найдется такая точка bi, что сумма проекций всех точек на прямую x = b + tc будет равна нулю. Выберем в качестве bi такую точку. Второе слагаемое в правой части (11) является r-й координатой суммы проекций всех точек на искомую прямую и, в силу выбора точки bi равно нулю. Тогда получаем формулу для определения bi:

(12)

Из первых двух уравнений (10) получаем формулы для определения остальных неизвестных:

(13)

Поиск решения задачи (4) для данного вида классификации осуществляется по следующему алгоритму:

1. Вычисляем bi по формуле (12).

2. Вычисляем t по первой формуле в (13).

3. Вычисляем ci по второй формуле в (13).

4. Если изменение значения ci превышает заданную точность, то переходим к шагу 2, в противном случае вычисления закончены.

Определение числа классов

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

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

Простой подбор

Идея метода состоит в том, что бы начав с малого числа классов постепенно увеличивать его до тех пор, пока не будет получена «хорошая» классификация. Понятие «хорошая» классификация может быть формализовано по разному. При простом подборе классов как правило оперируют таким понятием, как часто воспроизводящийся класс. Проводится достаточно большая серия классификаций с различным начальным выбором классов. Определяются классы, которые возникают в различных классификациях. Считаются частоты появления таких классов. Критерием получения «истинного» числа классов может служить снижение числа часто повторяющихся классов. То есть при числе классов k число часто повторяющихся классов заметно меньше чем при числе классов k – 1 и k + 1. Начинать следует с двух классов.

Рис. 10. Множества точек для классификации

Рис. 11. Разбиение множества на два (а) и три (б) класса

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

Сначала рассмотрим множество точек, приведенное на рис. 10а. При классификациях на два класса во всех 100 случаях получаем классификацию, приведенную на рис. 11. Таким образом, получено устойчивое (абсолютно устойчивое) разбиение множества точек на два класса.

В принципе можно на этом остановиться. Однако возможно, что мы имеем дело с иерархической классификацией, то есть каждый (или один) из полученных на данном этапе классов может в дальнейшем разбиться на несколько классов. Для проверки этой гипотезы проведем классификацию на три класса. Во всех 100 случаях получаем одно и то же разбиение, приведенное на рис. 11б. Гипотеза об иерархической классификации получила подтверждение. Предпринимаем попытку дальнейшей детализации — строим разбиение на четыре класса. При этом возникают три различных разбиения, приведенных на рис. 12. При этом разбиение, приведенное на рис. 12в возникает всего два раза из 100. Разбиение, приведенное на рис. 12а — 51 раз, на рис. 12б — 47 раз. Если отбросить редкие классы, то получим набор из семи классов. Один из них воспроизводится 98 раз (красное множество на рис. 12а). Остальные шесть классов образуют две тройки. Каждая тройка состоит из двух классов и класса, являющегося их объединением. Из этого анализа напрашивается вывод о том, что число классов равно пяти. Проверяем это предположение.

Рис. 12. Три варианта классификации на четыре класса

Результаты классификации на пять классов приведены на рис. 13. Выделенные на предыдущем этапе пять «маленьких» классов были воспроизведены 84, 67, 64, 68 и 69 раз. Два «больших» класса, выделенных на предыдущем этапе, были воспроизведены 24 и 30 раз. Остальные классы были получены не более чем 4 раза, а большинство по одному разу. Проверим классификацию на 6 классов. Малые классы были получены 75, 70, 53, 43, 44 раза. Один из больших классов — 16 раз. Из остальных классов один был воспроизведен 24 раза, второй — 19 раз. Все другие классы появлялись не более 10 раз. Всего получено 149 классов.

Рис. 13. Различные варианты классификации на пять классов

Таким образом, получена трехуровневая иерархическая классификация: Два класса первого уровня приведены на рис. 11а. Три класса второго уровня — на рис. 11б. Пять классов третьего уровня — на рис. 13а.

Рис. 14. Классификации на два класса

Рис. 15. Типы классификаций на три класса

Рис. 16. Типичные классификации на четыре класса

Проведем туже процедуру для множества точек, приведенного на рис. 10б. При классификации на два класса получим четыре типичных варианта классификаций, приведенных на рис. 14. Всего получено 14 классов. Два класса были получены по 69 раз, два по 18 раз. Остальные не более 6 раз.

Проведем классификацию на три класса. Получим всего два типа классификаций, приведенных на рис. 15. Всего получено 12 классов. Одна тройка классов была воспроизведена 14 раз, вторая — 26 раз, третья — 27 и четвертая — 33 раза. После классификации на четыре класса получены четыре типичных классификации, приведенные на рис. 16. Всего получено 54 класса. Пять из них получены 36, 37, 36, 36 и 57 раз. Еще 4 класса получены 14 раз, два класса — 10 раз, остальные не более 6 раз. При классификации на пять классов получено семь типичных классификаций, приведенных на рис. 17. Всего было получено 49 классов. При этом пять классов были получены 91, 82, 87, 92 и 82 раза. Еще один класс — 8 раз. Остальные классы не более 3 раз. Увеличился разрыв между «редкими» и «частыми» классами. Сократилось число часто повторяющихся классов. Для контроля проведем классификацию на 6 классов. Всего получено 117 классов. Из них пять были получены 86, 81, 57, 76 и 69 раз. Все остальные классы были получены не более 9 раз.

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

Методы отжига

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

Альтернативой методу перебора служит метод отжига. Идея метода отжига состоит в том, что на основе критерия качества класса принимается решение об удалении этого класса, разбиении класса на два или о слиянии этого класса с другим. Если класс «хороший», то он остается без изменений. Существует много различных критериев качества класса. Рассмотрим некоторые из них.

1. Количественный критерий. Класс, в котором менее N точек считается пустым и полежит удалению. Порог числа точек выбирается из смысла задачи и вида меры близости.

2. Критерий равномерности. Средняя мера близости точек класса от ядра должна быть не менее половины или трети от максимума меры близости точек от ядра (радиуса класса). Если это не так, то класс разбивается на два (порождается еще одно ядро вблизи первоначального).

3. Критерий сферической разделимости. Два класса считаются сферически разделимыми, если сумма радиусов двух классов меньше расстояния между ядрами этих классов. Если классы сферически неразделимы, то эти классы сливаются в один.

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

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

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

Метод применения этого критерия прост. Разбиваем первый класс на два и запускаем процедуру настройки сети (метод динамических ядер или обучение сети Кохонена). Если плотности обоих классов, полученных разбиением одного класса, не меньше плотности исходного класса, то считаем разбиение правильным. В противном случае восстанавливаем классы, предшествовавшие разбиению, и переходим к следующему классу. Если после очередного просмотра всех классов не удалось получить ни одного правильного разбиения, то считаем полученное число классов соответствующим «реальному». Эту процедуру следует запускать с малого числа классов, например, с двух.

Проведем процедуру определения числа классов для множества точек, приведенного на рис. 10а. Результаты приведены на рис. 18. Порядок классов 1-й класс — черный цвет, 2-й класс — синий, 3-й — зеленый, 4-й — красный, 5-й — фиолетовый, 6-й — желтый.

Рассмотрим последовательность действий, отображенную на рис. 18.

Первый рисунок — результат классификации на два класса.

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

Рис. 18. Результат применения критерия плотности классов для определения числа классов к множеству точек, приведенному на рис. 10а.

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

Четвертый рисунок — первый класс разбит на два. Результат классификации на пять классов. Плотности не увеличились. Разбиение отвергнуто. Возврат к третьему рисунку.

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

Шестой рисунок — третий класс разбит на два. Результат классификации на пять классов. Плотности увеличились. Разбиение признано хорошим.

Седьмой рисунок — первый класс разбит на два. Результат классификации на шесть классов. Плотности не увеличились. Разбиение отвергнуто. Возврат к шестому рисунку.

Восьмой рисунок — второй класс разбит на два. Результат классификации на шесть классов. Плотности не увеличились. Разбиение отвергнуто. Возврат к шестому рисунку.

Девятый рисунок — третий класс разбит на два. Результат классификации на шесть классов. Плотности не увеличились. Разбиение отвергнуто. Возврат к шестому рисунку.

Десятый рисунок — четвертый класс разбит на два. Результат классификации на шесть классов. Плотности не увеличились. Разбиение отвергнуто. Возврат к шестому рисунку.

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

Двенадцатый рисунок (совпадает с шестым) — окончательный результат.

Рис. 19. Результат применения критерия плотности классов для определения числа классов к множеству точек, приведенному на рис. 10б.

На рис. 19 приведен результат применения плотностного критерия определения числа классов для множества точек, приведенного на рис. 10б.

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

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

Описание задачи

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

Принято говорить, что у человека возникла ассоциация, если при получении некоторой неполной информации он может подробно описать объект, к которому по его мнению относится эта информация. Достаточно хорошим примером может служить описание малознакомого человека. К примеру, при высказывании: «Слушай, а что за парень, с которым ты вчера разговаривал на вечеринке, такой высокий блондин?»— у собеседника возникает образ вчерашнего собеседника, не ограничивающийся ростом и цветом волос. В ответ на заданный вопрос он может рассказать об этом человеке довольно много. При этом следует заметить, что содержащейся в вопросе информации явно недостаточно для точной идентификации собеседника. Более того, если вчерашний собеседник был случайным, то без дополнительной информации его и не вспомнят.

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

Одновременно рассмотренные примеры позволяют сформулировать решаемые ассоциативной памятью задачи:

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

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

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

Нейронным сетям ассоциативной памяти посвящено множество работ (см. например, [75, 77, 80, 86, 114, 130, 131, 153, 231, 247, 296, 312, 329]). Сети Хопфилда являются основным объектом исследования в модельном направлении нейроинформатики.

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

Пусть задан набор из m эталонов — n-мерных векторов {xi}. Требуется построить сеть, которая при предъявлении на вход произвольного образа — вектора x — давала бы на выходе «наиболее похожий» эталон.

Всюду далее образы и, в том числе, эталоны — n-мерные векторы с координатами ±1. Примером понятия эталона «наиболее похожего» на x может служить ближайший к x вектор xi. Легко заметить, что это требование эквивалентно требованию максимальности скалярного произведения векторов x и xi :

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

Сети Хопфилда

Наиболее известной сетью ассоциативной памяти является сеть Хопфилда [312]. В основе сети Хопфилда лежит следующая идея — запишем систему дифференциальных уравнений для градиентной минимизации «энергии» H (функции Ляпунова). Точки равновесия такой системы находятся в точках минимума энергии. Функцию энергии будем строить из следующих соображений:

1. Каждый эталон должен быть точкой минимума.

2. В точке минимума все координаты образа должны иметь значения ±1.

Функция

не удовлетворяет этим требованиям строго, но можно предполагать, что первое слагаемое обеспечит притяжение к эталонам (для вектора x фиксированной длины максимум квадрата скалярного произведения (x, xi)&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/178; достигается при x= xi…), а второе слагаемое — приблизит к единице абсолютные величины всех координат точки минимума). Величина a характеризует соотношение между этими двумя требованиями и может меняться со временем.

Используя выражение для энергии, можно записать систему уравнений, описывающих функционирование сети Хопфилда [312]:

(1)

Сеть Хопфилда в виде (1) является сетью с непрерывным временем. Это, быть может, и удобно для некоторых вариантов аналоговой реализации, но для цифровых компьютеров лучше воспользоваться сетями, функционирующими в дискретном времени — шаг за шагом.

Построим сеть Хопфилда [312] с дискретным временем. Сеть должна осуществлять преобразование входного вектора x так, чтобы выходной вектор x' был ближе к тому эталону, который является правильным ответом. Преобразование сети будем искать в следующем виде:

(2)

где wi — вес i-го эталона, характеризующий его близость к вектору x, Sign — нелинейный оператор, переводящий вектор с координатами yi в вектор с координатами sign(yi).

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

Сеть работает следующим образом:

1. На вход сети подается образ x, а на выходе снимается образ x'.

2. Если x' ≠ x, то полагаем x = x' и возвращаемся к шагу 1.

3. Полученный вектор x' является ответом.

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

Пусть j* — номер эталона, ближайшего к образу x. Тогда, если выбрать веса пропорционально близости эталонов к исходному образу x, то следует ожидать, что образ x' будет ближе к эталону xi, чем x, а после нескольких итераций он станет совпадать с эталоном xi.

Наиболее простой сетью вида (2) является дискретный вариант сети Хопфилда [312] с весами равными скалярному произведению эталонов на предъявляемый образ:

(3)

Рис. 1. а, б, в — эталоны, г — ответ сети на предъявление любого эталона

О сетях Хопфилда (3) известно [53, 231, 247, 312], что они способны запомнить и точно воспроизвести «порядка 0.14n слабо коррелированных образов». В этом высказывании содержится два ограничения:

• число эталонов не превосходит 0.14n.

• эталоны слабо коррелированны.

Наиболее существенным является второе ограничение, поскольку образы, которые сеть должна обрабатывать, часто очень похожи. Примером могут служить буквы латинского алфавита. При обучении сети Хопфилда (3) распознаванию трех первых букв (см. рис. 1 а, б, в), при предъявлении на вход сети любого их эталонов в качестве ответа получается образ, приведенный на рис. 1 г (все образы брались в рамке 10 на 10 точек).

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

Мерой коррелированности образов будем называть следующую величину:

Зависимость работы сети Хопфилда от степени коррелированности образов можно легко продемонстрировать на следующем примере. Пусть даны три эталона x1, x2, x3 таких, что

(4)

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

В первом случае при предъявлении сети q-го эталона в силу формулы (3) получаем

так как все скалярные произведения положительны по условию (4). Аналогично получаем в четвертом случае x'j = -1.

Во втором случае рассмотрим отдельно три варианта

так как скалярный квадрат любого образа равен n, а сумма двух любых скалярных произведений эталонов больше n, по условию (4). Таким образом, независимо от предъявленного эталона получаем x'j = 1. Аналогично в третьем случае получаем x'j = -1.

Окончательный вывод таков: если эталоны удовлетворяют условиям (4), то при предъявлении любого эталона на выходе всегда будет один образ. Этот образ может быть эталоном или «химерой», составленной, чаще всего, из узнаваемых фрагментов различных эталонов (примером «химеры» может служить образ, приведенный на рис. 1 г). Рассмотренный ранее пример с буквами детально иллюстрирует такую ситуацию.

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

Более простое и наглядное, хотя и более сильное условие можно записать в виде

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

Рассмотрим преобразование (3) как суперпозицию двух преобразований:

(5)

Обозначим через

— линейное пространство, натянутое на множество эталонов. Тогда первое преобразование в (5) переводит векторы из Rn в L({xi}). Второе преобразование в (5) переводит результат первого преобразования Px в одну из вершин гиперкуба образов. Легко показать, что второе преобразование в (5) переводит точку Px в ближайшую вершину гиперкуба. Действительно, пусть a и b две различные вершины гиперкуба такие, что a — ближайшая к Px, а b = x'.

Из того, что a и b различны следует, что существует множество индексов, в которых координаты векторов a и b различны. Обозначим это множество через I = {i : ai = -bi}. Из второго преобразования в (5) и того, что b = x', следует, что знаки координат вектора Px всегда совпадают со знаками соответствующих координат вектора b. Учитывая различие знаков i-х координат векторов a и Px при iI можно записать |ai-(Px)i| = |ai|+|(Px)i| = 1+|(Px)i|. Совпадение знаков i-х координат векторов b и Px при iI позволяет записать следующее неравенство |bi-(Px)i| = ||bi|-|(Px)i| < 1+|(Px)i|. Сравним расстояния от вершин a и b до точки Px

Полученное неравенство противоречит тому, что a — ближайшая к Px. Таким образом, доказано, что второе преобразование в (5) переводит точку Px в ближайшую вершину гиперкуба образов.

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

Для обеспечения правильного воспроизведения эталонов вне зависимости от степени их коррелированности достаточно потребовать, чтобы первое преобразование в (5) было таким, что xi = Pxi [67]. Очевидно, что если проектор является ортогональным, то это требование выполняется, поскольку x = Px при xL({xi}), а xjL({xi}) по определению множества L({xi}).

Для обеспечения ортогональности проектора воспользуемся дуальным множеством векторов. Множество векторов V({xi}) называется дуальным к множеству векторов {xi}, если все векторы этого множества vj удовлетворяют следующим требованиям:

1. (xi, vi) = ςij; ςij = 0, при i ≠ j; ςij = 1 при i = j;

2. vjL({xi}).

Преобразование

является ортогональным проектором на линейное пространство L({xi}).

Ортогональная сеть ассоциативной памяти преобразует образы по формуле

(6)

Дуальное множество векторов существует тогда и только тогда, когда множество векторов {xi} линейно независимо. Если множество эталонов {xi} линейно зависимо, то исключим из него линейно зависимые образы и будем рассматривать полученное усеченное множество эталонов как основу для построения дуального множества и преобразования (6). Образы, исключенные из исходного множества эталонов, будут по-прежнему сохраняться сетью в исходном виде (преобразовываться в самих себя). Действительно, пусть эталон x является линейно зависимым от остальных m эталонов. Тогда его можно представить в виде

Подставив полученное выражение в преобразование (6) и учитывая свойства дуального множества получим:

(7)

Рассмотрим свойства сети (6) [67]. Во-первых, количество запоминаемых и точно воспроизводимых эталонов не зависит от степени их коррелированности. Во-вторых, формально сеть способна работать без искажений при любом возможном числе эталонов (всего их может быть до 2n). Однако, если число линейно независимых эталонов (т. е. ранг множества эталонов) равно n, сеть становится прозрачной — какой бы образ не предъявили на ее вход, на выходе окажется тот же образ. Действительно, как было показано в (7), все образы, линейно зависимые от эталонов, преобразуются проективной частью преобразования (6) сами в себя. Значит, если в множестве эталонов есть n линейно независимых, то любой образ можно представить в виде линейной комбинации эталонов (точнее n линейно независимых эталонов), а проективная часть преобразования (6) в силу формулы (7) переводит любую линейную комбинацию эталонов в саму себя.

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

Отметим, что результаты работы сетей (3) и (6) эквивалентны, если все эталоны попарно ортогональны.

Остановимся несколько подробнее на алгоритме вычисления дуального множества векторов. Обозначим через Γ({xi}) матрицу Грама множества векторов {xi}.

Элементы матрицы Грама имеют вид γij = (xi, xj) (ij-ый элемент матрицы Грама равен скалярному произведению i-го эталона на j-ый). Известно, что векторы дуального множества можно записать в следующем виде:

(8)

где γij-1 — элемент матрицы Γ-1({xi}). Поскольку определитель матрицы Грама равен нулю, если множество векторов линейно зависимо, то матрица, обратная к матрице Грама, а следовательно и дуальное множество векторов существует только тогда, когда множество эталонов линейно независимо.

Для работ сети (6) необходимо хранить эталоны и матрицу Γ-1({xi}).

Рассмотрим процедуру добавления нового эталона к сети (6). Эта операция часто называется дообучением сети. Важным критерием оценки алгоритма формирования сети является соотношение вычислительных затрат на обучение и дообучение. Затраты на дообучение не должны зависеть от числа освоенных ранее эталонов.

Для сетей Хопфилда это, очевидно, выполняется — добавление еще одного эталона сводится к прибавлению к функции H одного слагаемого (x, xm+1)², а модификация связей в сети — состоит в прибавлении к весу ij-й связи числа xim+1xjm+1 — всего n² операций.

Для рассматриваемых сетей с ортогональным проектированием также возможно простое дообучение. На первый взгляд, это может показаться странным — если добавляемый эталон линейно независим от старых эталонов, то, вообще говоря, необходимо пересчитать матрицу Грама и обратить ее. Однако симметричность матрицы Грама позволяет не производить заново процедуру обращения всей матрицы. Действительно, обозначим через Gm — матрицу Грама для множества из m векторов; через Em — единичную матрицу размерности m×m. При обращении матриц методом Гаусса используется следующая процедура:

1 .Запишем матрицу размерности m×2m следующего вида: (Gm|Em).

2. Используя операции сложения строк и умножения строки на ненулевое число преобразуем левую квадратную подматрицу к единичной. В результате получим (Em|Gm-1). Пусть известна Gm-1 — обратная к матрице Грама для множества из m векторов xi. Добавим к этому множеству вектор xm+1. Тогда матрица для обращения матрицы Gm+1 методом Гауса будет иметь вид:

После приведения к единичной матрице главного минора ранга m получится следующая матрица:

где bi — неизвестные величины, полученные в ходе приведения главного минора к единичной матрице. Для завершения обращения матрицы Gm+1 необходимо привести к нулевому виду первые m элементов последней строки и (m +1)-го столбца. Для обращения в ноль i-го элемента последней строки необходимо умножить i-ю строку на (x, xm+1) и вычесть из последней строки. После проведения этого преобразования получим

где , .

b0 = 0 только если новый эталон является линейной комбинацией первых m эталонов. Следовательно b0 ≠ 0. Для завершения обращения необходимо разделить последнюю строку на b0 и затем вычесть из всех предыдущих строк последнюю, умноженную на соответствующее номеру строки bi. В результате получим следующую матрицу

где Fij = Gmij-1-bicj/b0. Поскольку матрица, обратная к симметричной, всегда симметрична получаем ci/b0 = -bi/b0 при всех i. Так как b0 ≠ 0 следовательно bi = -ci.

Обозначим через d вектор ((x1, xm+1), …, (xm, xm+1)), через b — вектор (b1, …, bm). Используя эти обозначения можно записать b = Gm-1d, b0 = (xm+1,xm+1)-(d,b), b0 = (xm+1,xm+1)-(d,b). Матрица Gm+1-1 записывается в виде

Таким образом, при добавлении нового эталона требуется произвести следующие операции:

1. Вычислить вектор d (m скалярных произведений — mn операций, mnn²).

2. Вычислить вектор b (умножение вектора на матрицу — m² операций).

3. Вычислить b0 (два скалярных произведения — m+n операций).

4. Умножить матрицу на число и добавить тензорное произведение вектора b на себя (2m² операций).

5. Записать Gm+1-1.

Таким образом эта процедура требует m+n+mn+3m² операций. Тогда как стандартная схема полного пересчета потребует:

1. Вычислить всю матрицу Грама (nm(m+1)/2 операций).

2. Методом Гаусса привести левую квадратную матрицу к единичному виду (2m³+m²-m операций).

3. Записать Gm+1-1.

Всего 2m³+m²–m+nm(m+1)/2 операций, что в m раз больше.

Используя ортогональную сеть (6), удалось добиться независимости способности сети к запоминанию и точному воспроизведению эталонов от степени коррелированности эталонов. Так, например, ортогональная сеть смогла правильно воспроизвести все буквы латинского алфавита в написании, приведенном на рис. 1.

Основным ограничением сети (6) является малое число эталонов — число линейно независимых эталонов должно быть меньше размерности системы n.

Тензорные сети

Для увеличения числа линейно независимых эталонов, не приводящих к прозрачности сети, используется прием перехода к тензорным или многочастичным сетям [75, 86, 93, 293].

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

Поскольку в данной работе тензоры используются только как элементы векторного пространства, далее будем использовать термин вектор вместо тензор. Вектор x&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8855;k является nk-мерным вектором. Однако пространство L({x&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8855;k}) имеет размерность, не превышающую величину , где — число сочетаний из p по q. Обозначим через {x&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8855;k} множество k-х тензорных степеней всех возможных образов.

Теорема. При k<n в множестве {x&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8855;k} линейно независимыми являются векторов. Доказательство теоремы приведено в последнем разделе данной главы.

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

1. Первая строка содержит двойку, поскольку при n= 2 в множестве X всего два неколлинеарных вектора.

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

Рис. 2. “Тензорный” треугольник Паскаля

В табл. 1 приведено сравнение трех оценок информационной емкости тензорных сетей для некоторых значений n и k. Первая оценка — nk — заведомо завышена, вторая — — дается формулой Эйлера для размерности пространства симметричных тензоров и третья — точное значение.

Таблица 1.

Как легко видеть из таблицы, уточнение при переходе к оценке rn,k является весьма существенным. С другой стороны, предельная информационная емкость тензорной сети (число правильно воспроизводимых образов) может существенно превышать число нейронов, например, для 10 нейронов тензорная сеть валентности 8 имеет предельную информационную емкость 511.

Легко показать, что если множество векторов {xi} не содержит противоположно направленных, то размерность пространства L({x⊗k}) равна числу векторов в множестве {xi}.

Сеть (2) для случая тензорных сетей имеет вид

(9)

а ортогональная тензорная сеть

(10)

где rij-1 — элемент матрицы Γ-1({x⊗k}).

Рассмотрим, как изменяется степень коррелированности эталонов при переходе к тензорным сетям (9)

Таким образом, при использовании сетей (9) сильно снижается ограничение на степень коррелированности эталонов. Для эталонов, приведенных на рис. 1, данные о степени коррелированности эталонов для нескольких тензорных степеней приведены в табл. 2.

Таблица 2. Степени коррелированности эталонов, приведенных на рис. 1, для различных тензорных степеней.

Тензорная степень Степень коррелированности Условия
CAB CAC CBC CAB+CAC CAB+CBC CAC+CBC
1 0.74 0.72 0.86 1.46 1.60 1.58
2 0.55 0.52 0.74 1.07 1.29 1.26
3 0.41 0.37 0.64 0.78 1.05 1.01
4 0.30 0.26 0.55 0.56 0.85 0.81
5 0.22 0.19 0.47 0.41 0.69 0.66
6 0.16 0.14 0.40 0.30 0.56 0.54
7 0.12 0.10 0.35 0.22 0.47 0.45
8 0.09 0.07 0.30 0.16 0.39 0.37

Анализ данных, приведенных в табл. 2, показывает, что при тензорных степенях 1, 2 и 3 степень коррелированности эталонов не удовлетворяет первому из достаточных условий (), а при степенях меньше 8 — второму ().

Таким образом, чем выше тензорная степень сети (9), тем слабее становится ограничение на степень коррелированности эталонов. Сеть (10) не чувствительна к степени коррелированности эталонов.

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

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

В качестве примера рассмотрим вычисление сдвигового автокоррелятора для черно-белых изображений. Пусть дан двумерный образ S размером p&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/215;q=n. Обозначим точки образа как sij. Элементами автокоррелятора Ac(S) будут величины , где sij=0 при выполнении любого из неравенств i < 1, i > p, j < 1, j > q. Легко проверить, что автокорреляторы любых двух образов, отличающихся только расположением в рамке, совпадают. Отметим, что aij=a-i,-j при всех i,j, и aij=0 при выполнении любого из неравенств i < 1-p, i > p-1, j < 1-qj > q-1. Таким образом, можно считать, что размер автокоррелятора равен p&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/215;(2q+1).

Автокорреляторная сеть имеет вид

(11)

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

Конструирование сетей под задачу

Подводя итоги, можно сказать, что все сети ассоциативной памяти типа (2) можно получить, комбинируя следующие преобразования:

1. Произвольное преобразование. Например, переход к автокорреляторам, позволяющий объединять в один выходной образ все образы, отличающиеся только положением в рамке.

2. Тензорное преобразование, позволяющее сильно увеличить способность сети запоминать и точно воспроизводить эталоны.

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

Наиболее сложная сеть будет иметь вид:

(12)

где rij-1 — элементы матрицы, обратной матрице Грама системы векторов {F(xi)}⊗k, F(x) — произвольное преобразование.

Возможно применение и других методов предобработки. Некоторые из них рассмотрены в работах [68, 91, 278]

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

Работа ортогональных тензорных сетей при наличии помех сравнивалась с возможностями линейных кодов, исправляющих ошибки. Линейным кодом, исправляющим k ошибок, называется линейное подпространство в n-мерном пространстве над GF2, все вектора которого удалены друг от друга не менее чем на 2k+1. Линейный код называется совершенным, если для любого вектора n-мерного пространства существует кодовый вектор, удаленный от данного не более, чем на k. Тензорной сети в качестве эталонов подавались все кодовые векторы избранного для сравнения кода. Численные эксперименты с совершенными кодами показали, что тензорная сеть минимально необходимой валентности правильно декодирует все векторы. Для несовершенных кодов картина оказалась хуже — среди устойчивых образов тензорной сети появились «химеры» — векторы, не принадлежащие множеству эталонов.

Таблица 3. Результаты численного эксперимента. МР — минимальное расстояние между эталонами, ЧЭ — число эталонов

Размерность Число векторов МР ЧЭ Валентность Число химер Число ответов После обработки сетью расстояние до правильного ответа стало
верн. неверн. меньше то же больше
1 10 1024 3 64 3,5 896 128 896 0 856 0
2 7,21 384 640 384 0 348 0
3 10 1024 5 8 3 260 464 560 240 260 60
4 5,15 230 494 530 240 230 60
5 17,21 140 532 492 240 182 70
6 15 32768 7 32 3 15456 17312 15456 0 15465 0
7 5,21 14336 18432 14336 0 14336 0

В случае n=10, k=1 (см. табл. 3 и 4, строка 1) при валентностях 3 и 5 тензорная сеть работала как единичный оператор — все входные вектора передавались на выход сети без изменений. Однако уже при валентности 7 число химер резко сократилось и сеть правильно декодировала более 60% сигналов. При этом были правильно декодированы все векторы, удаленные от ближайшего эталона на расстояние 2, а часть векторов, удаленных от ближайшего эталона на расстояние 1, остались химерами. В случае n=10, k=2 (см. табл. 3 и 4, строки 3, 4, 5) наблюдалось уменьшение числа химер с ростом валентности, однако часть химер, удаленных от ближайшего эталона на расстояние 2 сохранялась. Сеть правильно декодировала более 50% сигналов. Таким образом при малых размерностях и кодах, далеких от совершенных, тензорная сеть работает довольно плохо. Однако, уже при n=15, k=3 и валентности, большей 3 (см. табл. 3 и 4, строки 6, 7), сеть правильно декодировала все сигналы с тремя ошибками. В большинстве экспериментов число эталонов было больше числа нейронов.

Таблица 4. Результаты численного эксперимента

Число химер, удаленных от ближайшего эталона на: Число неверно распознанных векторов, удаленных от ближайшего эталона на:
1 2 3 4 5 1 2 3 4 5
1 640 256 0 0 0 896 0 0 0 0
2 384 0 0 0 0 384 0 0 0 0
3 0 210 50 0 0 0 210 290 60 0
4 0 180 50 0 0 0 180 290 60 0
5 0 88 50 2 0 0 156 290 60 0
6 0 0 1120 13440 896 0 0 1120 13440 896
7 0 0 0 13440 896 0 0 0 13440 896

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

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

В данном разделе приведено доказательство теоремы о числе линейно независимых образов в пространстве k-х тензорных степеней эталонов.

При построении тензорных сетей используются тензоры валентности k следующего вида:

(13)

где aj — n-мерные вектора над полем действительных чисел.

Если все вектора ai=a, то будем говорить о k-й тензорной степени вектора a, и использовать обозначение a⊗k. Для дальнейшего важны следующие элементарные свойства тензоров вида (13).

1. Пусть и , тогда скалярное произведение этих векторов может быть вычислено по формуле

(14)

Доказательство этого свойства следует непосредственно из свойств тензоров общего вида.

2. Если в условиях свойства 1 вектора являются тензорными степенями, то скалярное произведение имеет вид:

(15)

Доказательство непосредственно вытекает из свойства 1.

3. Если вектора a и b ортогональны, то есть (a,b) = 0, то и их тензорные степени любой положительной валентности ортогональны.

Доказательство вытекает из свойства 2.

4. Если вектора a и b коллинеарны, то есть b = λa, то a⊗k=λka⊗k.

Следствие. Если множество векторов содержит хотя бы одну пару противоположно направленных векторов, то система векторов будет линейно зависимой при любой валентности k.

5. Применение к множеству векторов невырожденного линейного преобразования B в пространстве Rn эквивалентно применению к множеству векторов линейного невырожденного преобразования, индуцированного преобразованием B, в пространстве .

Сюръективным мультииндексом α(L) над конечным множеством L назовем k-мерный вектор, обладающий следующими свойствами:

1. для любого iL существует j∈{1, …, k} такое, что αj=i;

2. для любого j∈{1, …, k} существует iL такое, что αj=i.

Обозначим через d(α(L),i) число компонент сюръективного мультииндекса α(L) равных i, через |L| — число элементов множества L, а через Α(L) — множество всех сюръективных мультииндексов над множеством L.

Предложение 1. Если вектор a представлен в виде , где &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;i — произвольные действительные коэффициенты, то верно следующее равенство

(16)

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

В множестве , выберем множество X следующим образом: возьмем все (n-1)-мерные вектора с координатами ±1, а в качестве n-й координаты во всех векторах возьмем единицу.

Предложение 2. Множество x является максимальным множеством n-мерных векторов с координатами равными ±1 и не содержит пар противоположно направленных векторов.

Доказательство. Из равенства единице последней координаты всех векторов множества X следует отсутствие пар противоположно направленных векторов. Пусть x — вектор с координатами ±1, не входящий в множество X, следовательно последняя координата вектора x равна минус единице. Так как в множество X включались все (n-1) — мерные вектора с координатами ±1, то среди них найдется вектор, первые n-1 координата которого равны соответствующим координатам вектора x со знаком минус. Поскольку последние координаты также имеют противоположные знаки, то в множестве X нашелся вектор противоположно направленный по отношению к вектору x. Таким образом множество X максимально.

Таким образом в множестве X содержится ровно 2n-1 вектор. Каждый вектор x&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8712;X можно представить в виде , где I&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8834;{1, …, n-1}. Для нумерации векторов множества X будем использовать мультииндекс I. Обозначим через |I| число элементов в мультииндексе I. Используя введенные обозначения можно разбить множество X на n непересекающихся подмножеств: Pi = {xI, |I|=i}, .

Теорема. При k<n в множестве {x⊗k} линейно независимыми являются

векторов.

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

Лемма. Пусть дана последовательность векторов

a1,a2=a¹2+a²2,a3=a¹3+a²3,…,am=a¹m+a²m

таких, что (ai,a²j)=0 при всех i<j и (a¹i,a²i)=0, a²i≠0 при всех i, тогда все вектора множества {ai} линейно независимы.

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

1. b1=a1/||a1||

2. b2=(a2-(a2,b2))/||a2-(a2,b1)b1||. Причем a2-(a2,b1)b1 ≠ 0, так как (a1, a²2)=0, (a¹2-((a2,b1)b1,a²2)=0 и a²2≠0.

j.

Причем , так как (ai, a&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/178;j)=0, при всех i<j,

и a²j≠0.

Доказательство теоремы. Произведем линейное преобразование векторов множества x с матрицей

Легко заметить, что при этом преобразовании все единичные координаты переходят в единичные, а координаты со значением –1 в нулевые. Таким образом .

По пятому свойству заключаем, что число линейно независимых векторов в множествах X и Y совпадает. Пусть 1≤mk. Докажем, что yI⊗k при |I|=m содержит компоненту, ортогональную всем yJ⊗k, |J|≤m, JI.

Из предложения 1 имеем

(17)

Представим (17) в виде двух слагаемых:

(18)

Обозначим первую сумму в (18) через yI0⊗k. Докажем, что yI0⊗k ортогонален ко всем yJ⊗k, |J|≤m, JI, и второй сумме в (18). Так как IJ, IJ, существует q∈I, q∉J.

Из свойств сюръективного мультииндекса следует, что все слагаемые, входящие в yI0⊗k содержат в качестве тензорного сомножителя eq, не входящий ни в одно тензорное произведение, составляющие в сумме yJ⊗k. Из свойства 2 получаем, что (yJ⊗k, yI0⊗k) = 0. Аналогично, из того, что в каждом слагаемом второй суммы LI, IL следует ортогональность yI0⊗k каждому слагаемому второй суммы в (18) и, следовательно, всей сумме.

Таким образом yI⊗k содержит компоненту yI0⊗k ортогональную ко всем yJ⊗k, |J|≤m, JI и (yJ⊗k-yI0⊗k). Множество тензоров Yk={yI⊗k, |I|≤k} удовлетворяет условиям леммы, и следовательно все тензоры в Yk линейно независимы. Таким образом, число линейно независимых тензоров в множестве  не меньше чем

Для того, чтобы показать, что число линейно независимых тензоров в множестве {x⊗k} не превосходит этой величины достаточно показать, что добавление любого тензора из Y к Yk приводит к появлению линейной зависимости. Покажем, что любой yI⊗k при |I|>k может быть представлен в виде линейной комбинации тензоров из Yk. Ранее было показано, что любой тензор yI⊗k может быть представлен в виде (17). Разобьем (17) на три суммы:

(19)

Рассмотрим первое слагаемое в (19) отдельно.

Заменим в последнем равенстве внутреннюю сумму в первом слагаемом на тензоры из Yk:

(20)

Преобразуем второе слагаемое в (19).

(21)

Преобразуя аналогично (21) второе слагаемое в (20) и подставив результаты преобразований в (19) получим

(22)

В (22) все не замененные на тензоры из Yk слагаемые содержат суммы по подмножествам множеств мощностью меньше k. Проводя аналогичную замену получим выражение, содержащее суммы по подмножествам множеств мощностью меньше k-1 и так далее. После завершения процедуры в выражении останутся только суммы содержащие вектора из Yk, то есть yI⊗k будет представлен в виде линейной комбинации векторов из Yk. Теорема доказана.

Лекция 7.1. Двойственные сети

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

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

До сих пор эти правила, архитектуры, системы оценки и интерпретации, приемы использования и другие интеллектуальные находки существуют в виде «зоопарка» сетей. Каждая сеть из нейросетевого зоопарка имеет свою архитектуру, правило обучения и решает конкретный набор задач, аналогично тому, как каждое животное в обычном зоопарке имеет свои голову, лапы, хвост и питается определенной пищей. В данном курсе проводится систематизация «зоопарка» и превращение его в «технопарк». То есть переход от разнообразия организмов к разнообразию деталей — это и эффективнее, и экономнее. Процесс накопления зоопарка и последующего преобразования его в технопарк вполне закономерен при возникновении всего нового. Хорошим примером может послужить процесс развития персональных компьютеров. В семидесятых годах, когда они только появились, происходил процесс накопления зоопарка. В то время существовало множество абсолютно несовместимых друг с другом персональных компьютеров (IBM PC, Apple, PDP, HP и др.). В восьмидесятых и начале девяностых годов происходил процесс систематизации и преобразования зоопарка персональных компьютеров в технопарк. Сейчас, придя в хороший магазин, торгующий компьютерами, вы можете из имеющейся в наличии комплектации собрать такой персональный компьютер, какой вам нужен. Вы можете сами выбрать процессор, память, принтер, аудио и видео карты и т. д.

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

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

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

2. Возможность реализации большинства используемых алгоритмов.

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

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

Краткий обзор нейронных сетей

Можно по разному описывать «зоопарк» нейронных сетей. Приведем классификацию нейронных сетей по решаемым ими задачам.

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

2. Ассоциативная память. Наиболее известный представитель — сети Хопфилда. Эта задача также позволяет строить обобщения. Наиболее общий вариант описан в [78–80].

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

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

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

Основное различие между дифференцируемыми и пороговыми сетями состоит в способе обучения. Для дифференцируемых сетей есть конструктивная процедура обучения, гарантирующая результат, если архитектура сети позволяет ей решит задачу (см. разд. «Оценка способности сети решить задачу» — метод двойственного обучения (обратного распространения ошибки). Следует заметить, что при использовании обучения по методу двойственности так же возникают сложности, типа локальных минимумов. Однако существует набор регулярных процедур, позволяющих с ними бороться (см. [91]). Для обучения пороговых сетей используют правило Хебба или его модификации. Однако, для многослойных сетей с пороговыми элементами правило Хебба не гарантирует обучения. (В случае однослойных сетей — персептронов, доказана теорема о достижении результата в случае его принципиальной достижимости). С другой стороны, в работе [146] доказано, что многослойные сети с пороговыми нейронами можно заменить эквивалентными двухслойными сетями с необучаемыми весами первого слоя.

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

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

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

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

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

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

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

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

1. Тестирование решения примера

 1. Взять пример у задачника.

 2. Предъявить его сети для решения.

 3. Предъявить результат интерпретатору ответа.

2. Оценивание решения примера

 1. Взять пример у задачника.

 2. Предъявить его сети для решения.

 3. Предъявить результат оценке.

3. Оценивание решения примера с вычислением градиента.

 1. Взять пример у задачника.

 2. Предъявить его сети для решения.

 3. Предъявить результат оценке с вычислением производных.

 4. Предъявить результат работы оценки сети для вычисления градиента.

4. Оценивание и тестирование решения примера.

 1. Взять пример у задачника.

 2. Предъявить его сети для решения.

 3. Предъявить результат оценке.

 4. Предъявить результат интерпретатору ответа.

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

Последним компонентом, которого необходимо выделить, является контрастер нейронной сети. Этот компонент является надстройкой над учителем. Его назначение — сводить число связей сети до минимально необходимого или до «разумного» минимума (степень разумности минимума определяется пользователем). Кроме того, контрастер, как правило, позволяет свести множество величин весов связей к 2–4, реже к 8 выделенным пользователем значениям. Наиболее важным следствием применения процедуры контрастирования является получение логически прозрачных сетей — сетей, работу которых легко описать и понять на языке логики [76, 83].

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

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

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

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

Рис 1. Схема запросов в нейрокомпьютере

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

Запросы к задачнику позволяют последовательно перебирать все примеры обучающей выборки, обращаться непосредственно к любому примеру задачника и изменять обучающую выборку. Обучающая выборка выделяется путем «раскрашивания» примеров задачника в различные «цвета». Понятие цвета и способ работы с цветами описаны в разделе «Переменные типа цвет и операции с цветами».

Запросы последовательного перебора обучающей выборки:

«Инициировать выдачу примеров цвета К». По этому запросу происходит инициация выдачи примеров К-го цвета.

«Дать очередной пример». По этому запросу задачник возвращает предобработанные данные очередного примера и, при необходимости, правильные ответы, уровень достоверности и другие данные этого примера.

«Следующий пример». По этому запросу задачник переходит к следующему примеру обучающей выборки. Если такого примера нет, то возвращается признак отсутствия очередного примера.

Для непосредственного доступа к примерам задачника служит запрос «Дать пример номер N». Действия задачника в этом случае аналогичны выполнению запроса «Дать очередной пример».

Для изменения обучающей выборки служит запрос «Окрасить примеры в цвет К». Этот запрос используется редко, поскольку изменение обучающей выборки, как правило, осуществляется пользователем при редактировании задачника.

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

Предобработчик сам никаких запросов не генерирует. Единственный запрос к предобработчику — «Предобработать пример» может быть выдан только задачником.

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

«Обработать очередной пример». Вид ответа зависит от параметров запроса.

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

«Начать обучение сети». По этому запросу учитель начинает процесс обучения сети.

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

«Провести N шагов обучения» — как правило, выдается контрастером, необходим для накопления показателей чувствительности.

Запрос к контрастеру

«Отконтрастировать сеть». Ответом является код завершения операции контрастирования.

Запрос к оценке

Оценка не генерирует никаких запросов. Она выполняет только один запрос — «Оценить пример». Результатом выполнения запроса является оценка примера и, при необходимости, вектор производных оценки по выходным сигналам сети.

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

Интерпретатор ответа не генерирует никаких запросов. Он выполняет только один запрос — «Интерпретировать ответ». Ответом является результат интерпретации.

Запросы к сети

Сеть не генерирует никаких запросов. Набор исполняемых сетью запросов можно разбить на три группы.

Запрос, обеспечивающий тестирование.

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

Запросы, обеспечивающие обучение сети.

«Обнулить градиент». При исполнении этого запроса градиент оценки по обучаемым параметрам сети кладется равным нулю. Этот запрос необходим, поскольку при вычислении градиента по очередному примеру сеть добавляет его к ранее вычисленному градиенту по сумме других примеров.

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

«Изменить карту с шагами Н1 и H2». Генерируется учителем во время обучения.

Запрос, обеспечивающие контрастирование.

«Изменить карту по образцу». Генерируется контрастером при контрастировании сети.

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

Лекция 7.2. Задачник и обучающее множество

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

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

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

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

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

Поля задачника

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

Числовые поля. Поля числовых типов данных integer, long и real (см. раздел «Стандарт типов данных» в приложении) предназначены для хранения различных чисел. Поля числового типа могут нести любую смысловую нагрузку.

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

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

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

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

Компонент задачник является необходимой частью нейрокомпьютера вне зависимости от типа применяемых в нем нейронных сетей. Однако в зависимости от решаемой задачи содержимое задачника может меняться. Так, например, для решения задачи классификации без учителя используют нейросети, основанные на методе динамических ядер [224, 262] (наиболее известным частным случаем таких сетей являются сети Кохонена [131, 132]). Задачник для такой сети должен содержать только массивы входных данных и предобработанных входных данных. При использовании обучаемых сетей, основанных на принципе двойственности, к задачнику необходимо добавить массив ответов сети. Кроме того, некоторые исследователи хотят иметь возможность просмотреть ответы, выданные сетью, массив оценок примера, показатели значимости входных сигналов и, возможно, некоторые другие величины. Поэтому, стандартный задачник должен иметь возможность предоставить пользователю всю необходимую информацию.

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

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

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

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

Входные данные

Входные данные — данные, необходимые для решения сетью примера. Входные данные являются массивом. Существует всего несколько видов входных данных. Каждый элемент массива входных данных может быть:

• числом;

• полем с ограниченным числом состояний;

• рисунком.

Комментарии

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

Предобработанные данные

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

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

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

Полученные ответы

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

Оценки

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

Вес примера

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

Достоверность ответа

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

Уверенность в ответе

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

Рис. 1. Схема данных задачника.

Все перечисленные выше массивы можно разбить на четыре типа по структуре:

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

• Массив ответов. При обучении с учителем, в задачнике есть, по крайней мере, два массива этого вида — массив описания полей ответов и массив правильных ответов. Кроме того, возможно хранение в задачнике массивов вычисленных ответов, достоверности ответов и уверенности в ответе. Массив описания полей ответов — один для всех примеров задачника. Все остальные массивы данного типа хранятся по одному экземпляру каждого массива на пример.

• Массив комментариев. Таких массивов обычно только два — массив описания полей комментариев и массив комментариев. Массив описания полей комментариев — один на весь задачник, а массив комментариев — один на пример.

На рис. 1 приведено схематическое устройство задачника. Такое представление данных позволяет гибко использовать память. Однако следует учесть, что часть полей может переходить из одного массива в другой. Например, при исключении одного входного данного из использования (см. главу «Контрастер»), соответствующее ему поле переходит из массива входных данных в массив комментариев.

Лекция 8. Предобработчик

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

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

Наиболее важным в данной являются следующее.

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

Сформулирована мера сложности нейросетевой задачи.

Выборочная оценка константы Липшица и оценка константы Липшица нейронной сети позволяют легко оценить способность нейронной сети решить поставленную задачу. Эти легко реализуемые процедуры позволяют сэкономить время и силы.

Правильно выбранная предобработка упрощает нейросетевую задачу.

Нейрон

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

x — вектор входных сигналов нейрона;

α — вектор синаптических весов нейрона;

Σ — входной сумматор нейрона;

p = (α,x) — выходной сигнал входного сумматора;

σ — функциональный преобразователь;

y — выходной сигнал нейрона.

Обычно нейронные сети называют по виду функции σ(p). Хорошо известны и наиболее часто используются два вида сигмоидных сетей:

S1: σ(p) = 1/(1+exp(-cp)),

S2: σ(p) = p/(c+|p|),

где c — параметр, называемый «характеристикой нейрона». Обе функции имеют похожие графики.

Каждому типу нейрона соответствует свой интервал приемлемых входных данных. Как правило, этот диапазон либо совпадает с диапазоном выдаваемых выходных сигналов (например для сигмоидных нейронов с функцией S1), либо является объединением диапазона выдаваемых выходных сигналов и отрезка, симметричного ему относительно нуля (например, для сигмоидных нейронов с функцией S2), Этот диапазон будем обозначать как [a,b]

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

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

Таблица 1

Входной сигнал Нейрон типа S1 Нейрон типа S2
c=0.1 c=0.5 c=1 c=2 c=0.1 c=0.5 c=1 c=2
250 1.0 1.0 1.0 1.0 0.99960 0.99800 0.99602 0.99206
275 1.0 1.0 1.0 1.0 0.99964 0.99819 0.99638 0.99278
300 1.0 1.0 1.0 1.0 0.99967 0.99834 0.99668 0.99338

Совершенно очевидно, что нейронная сеть просто неспособна научиться надежно различать эти сигналы (если вообще способна научиться их различать!). Если использовать нейроны с входными синапсами, не равными единице, то нейронная сеть сможет отмасштабировать входные сигналы так, чтобы они стали различимы, но при этом будет задействована только часть диапазона приемлемых входных данных — все входные сигналы будут иметь один знак. Кроме того, все подаваемые сигналы будут занимать лишь малую часть этого диапазона. Например, если мы отмасштабируем температуры так, чтобы 300 соответствовала величина суммарного входного сигнала равная 1 (величина входного синапса равна 1/300), то реально подаваемые сигналы займут лишь одну шестую часть интервала [0,1] и одну двенадцатую интервала [-1,1]. Получаемые при этом при этом величины выходных сигналов нейронов приведены в табл. 2.

Таблица 2

Входной сигнал Нейрон типа S1 Нейрон типа S2
c=0.1 c=0.5 c=1 c=2 c=0.1 c=0.5 c=1 c=2
250 (0.83) 0.52074 0.60229 0.69636 0.84024 0.89286 0.62500 0.45455 0.29412
275 (0.91) 0.52273 0.61183 0.71300 0.86057 0.90164 0.64706 0.47826 0.31429
300 (1.0) 0.52498 0.62246 0.73106 0.88080 0.90909 0.66667 0.50000 0.33333

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

Таблица 3

Входной сигнал Нейрон типа S1 Нейрон типа S2
c=0.1 c=0.5 c=1 c=2 c=0.1 c=0.5 c=1 c=2
250 (-1) 0.47502 0.37754 0.26894 0.11920 -0.9091 -0.6667 -0.5000 -0.3333
275 (0) 0.50000 0.50000 0.50000 0.50000 0.0000 0.0000 0.0000 0.0000
300 (1) 0.52498 0.62246 0.73106 0.88080 0.9091 0.6667 0.5000 0.3333

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

Другой способ определения различимости входных сигналов приведен в разделе «Оценка способности сети решить задачу».

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

Информация поступает к нейронной сети в виде набора ответов на некоторый список вопросов. Можно выделить три основных типа ответов (вопросов).

1. Бинарный признак (возможен только один из ответов — истина или ложь).

2. Качественный признак (принимает конечное число значений).

3. Число.

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

1. Упорядоченные признаки.

2. Неупорядоченные признаки.

3. Частично упорядоченные признаки.

Упорядоченным признаком называется такой признак, для любых двух состояний которого можно сказать, что одно из них предшествует другому. Тот факт, что состояние x предшествует состоянию y, будем обозначать следующим образом — x<y. Примером упорядоченного признака может служить состояние больного. Действительно, все состояния можно упорядочить по тяжести заболевания:

легкий больной < средний больной < тяжелый больной

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

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

Черный < Синий < Голубой < Белый;

Черный < Красный < Ярко красный < Белый;

Черный < Зеленый < Ярко зеленый < Белый;

Черный < Фиолетовый < Ярко фиолетовый < Белый

и т. д. Однако, между состояниями Синий и Красный отношения порядка нет.

Известно, что любой частично упорядоченный признак можно представить в виде комбинации нескольких упорядоченных и неупорядоченных признаков. Так, рассмотренный выше частично упорядоченный признак распадается на три упорядоченных признака: интенсивность синего, красного и зеленого цветов. Каждый из этих признаков является упорядоченным (цепочки порядка для этих признаков приведены в первых трех строчках рассмотрения примера). Каждое состояние исходного качественного признака описывается тройкой состояний полученных качественных признаков. Так, например, состояние Фиолетовый описывается в виде (Синий, Красный, Черный).

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

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

Таблица 4. Кодирование бинарного признака

Смысл значения ложь Значение входного сигнала
Истина Ложь
Отсутствие заданного свойства при b = 0 a 0
Отсутствие заданного свойства при b ≠ 0 b 0
Наличие другого свойства b a

Бинарные признаки характеризуются наличием только двух состояний — истина и ложь. Однако даже такие простые данные могут иметь два разных смысла. Значение истина означает наличие у описываемого объекта какого-либо свойства. А ответ ложь может означать либо отсутствие этого свойства, либо наличие другого свойства. В зависимости от смысловой нагрузки значения ложь, и учитывая заданный диапазон [a,b], рекомендуемые способы кодирования бинарного признака приведены в табл. 4.

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

Таблица 5. Кодирование неупорядоченного качественного признака

Состояние Вектор входных сигналов
α1 (b,a,a,…,a)
α2 (a,b,a,…,a)
αn (a,a,…,a,b)

Поскольку никакие два состояния неупорядоченного признака не связаны отношением порядка, то было бы неразумным кодировать их разными величинами одного входного сигнала нейронной сети. Поэтому, для кодирования качественных признаков рекомендуется использовать столько входных сигналов, сколько состояний у этого качественного признака. Каждый входной сигнал соответствует определенному состоянию. Так если набор всех состояний рассматриваемого признака обозначить через α1, α2, …, αn, то рекомендуемая таблица кодировки имеет вид, приведенный в табл. 5.

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

Таблица 6. Кодирование упорядоченного качественного признака

Состояние Вектор входных сигналов
α1 (b,a,a,…,a)
α2 (b,b,a,…,a)
αn (b,b,…,b,b)

Упорядоченные частные признаки, в отличие от неупорядоченных, имеют отношение порядка между состояниями. Однако кодирование их разными значениями одного входного сигнала неразумно из-за того, что расстояние между состояниями не определено, а такое кодирование эти расстояния задает явным образом. Поэтому, упорядоченные частные признаки рекомендуется кодировать в виде стольких входных сигналов, сколько состояний у признака. Но, в отличие от неупорядоченных признаков, накапливать число сигналов с максимальным значением. Для случая, когда все состояния обозначены через α1 < α2 < … < αn, рекомендуемая таблица кодировки приведена в табл. 6.

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

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

Содержательное значение признака. Если входными данными сети является угол между двумя направлениями, например, направление ветра, то ни в коем случае не следует подавать на вход сети значение угла (не важно в градусах или радианах). Такая подача приведет к необходимости «уяснения» сетью того факта, что 0 градусов и 360 градусов одно и тоже. Разумнее выглядит подача в качестве входных данных синуса и косинуса этого угла. Число входных сигналов сети увеличивается, но зато близкие значения признака кодируются близкими входными сигналами.

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

Расположение значений признака в интервале значений. Следует рассмотреть вопрос о равнозначности изменения значения признака на некоторую величину в разных частях интервала значений признака. Как правило, это связано с косвенными измерениями (вместо одной величины измеряется другая). Например, сила притяжения двух небесных тел при условии постоянства массы однозначно характеризуется расстоянием между ними. Пусть рассматриваются расстояния от 1 до 100 метров. Легко понять, что при изменении расстояния с 1 до 2 метров, сила притяжения изменится в четыре раза, а при изменении с 99 до 100 метров — в 1.02 раза. Следовательно, вместо подачи расстояния следует подавать обратный квадрат расстояния c'=1/c².

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

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

(1)

где [a,b] — диапазон приемлемых входных сигналов, [cmin,cmax] — диапазон значений признака c, c' — предобработанный сигнал, который будет подан на вход сети. Предобработку входного сигнала по формуле (1) будем называть простейшей предобработкой.

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

В данном разделе рассматриваются только сети, все элементы которых непрерывно зависят от своих аргументов (см. главу «Описание нейронных сетей»). Предполагается, что все входные данные предобработаны так, что все входные сигналы сети лежат в диапазоне приемлемых входных сигналов [a,b]. Будем обозначать вектора входных сигналов через xi, а требуемые ответы сети через fi. Компоненты векторов будем обозначать нижним индексом, например, компоненты входного вектора через xij. Будем полагать, что в каждом примере ответ является вектором чисел из диапазона приемлемых сигналов [a,b]. В случае обучения сети задаче классификации требуемый ответ зависит от вида используемого интерпретатора ответа (см. главу «Оценка и Интерпретатор ответа» ).

Нейронная сеть вычисляет некоторую вектор-функцию F от входных сигналов. Эта функция зависит от параметров сети. Обучение сети состоит в подборе такого набора параметров сети, чтобы величина была минимальной (в идеале равна нулю). Для того чтобы нейронная сеть могла хорошо приблизить заданную таблично функцию f необходимо, чтобы реализуемая сетью функция F при изменении входных сигналов с xi на xj могла изменить значение с fi на fj. Очевидно, что наиболее трудным для сети должно быть приближение функции в точках, в которых при малом изменении входных сигналов происходит большое изменение значения функции. Таким образом, наибольшую сложность будет представлять приближение функции f в точках, в которых достигает максимума выражение . Для аналитически заданных функций величина называется константой Липшица. Исходя из этих соображения можно дать следующее определение сложности задачи.

Сложность аппроксимации таблично заданной функцииf, которая в точках xi принимает значения fi, задается выборочной оценкой константы Липшица, вычисляемой по следующей формуле:

(2)

Оценка (2) является оценкой константы Липшица аппроксимируемой функции снизу.

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

(3)

В формулах (2) и (3) можно использовать произвольные нормы. Однако для нейронных сетей наиболее удобной является евклидова норма. Далее везде используется евклидова норма.

В следующем разделе описан способ вычисления оценки константы Липшица сети (3) сверху. Очевидно, что в случае  сеть принципиально не способна решить задачу аппроксимации функции f.

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

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

Для композиции функций fg=f(g(x)) константа Липшица оценивается как произведение констант Липшица:

Λfg ≤  ΛfΛg (4)

Для вектор-функции f=(f1, f2, … fn) константа Липшица равна:

(5)

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

Для непрерывных функций константа Липшица является максимумом производной в направлении r=(r1, …, rn) по всем точкам и всем направлениям. При этом вектор направления имеет единичную длину:

Напомним формулу производной функции f(x1, …, xn) в направлении r:

(6)

Синапс

Обозначим входной сигнал синапса через x, а синаптический вес через α. Тогда выходной сигнал синапса равен αx. Поскольку синапс является функцией одной переменной, константа Липшица равна максимуму модуля производной — модулю синаптического веса:

Λs=|α| (7)

Умножитель

Обозначим входные сигналы умножителя через x1, x2 Тогда выходной сигнал умножителя равен . Используя (6) получаем . Выражение r1x2+r2x1 является скалярным произведением векторов (r1, r2) и, учитывая единичную длину вектора r, достигает максимума, когда эти векторы сонаправлены. То есть при векторе

Используя это выражение, можно записать константу Липшица для умножителя:

(8)

Если входные сигналы умножителя принадлежат интервалу [a,b], то константа Липшица для умножителя может быть записана в следующем виде:

(9)

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

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

Сумматор

Производная суммы по любому из слагаемых равна единице. В соответствии с (6) получаем:

(10)

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

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

Нелинейный Паде преобразователь или Паде элемент имеет два входных сигнала и один выходной. Обозначим входные сигналы через x1, x2. Используя (6) можно записать константу Липшица в следующем виде:

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

(11)

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

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

(12)

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

Для адаптивного сумматора на n входов оценка константы Липшица, получаемая через представление его в виде суперпозиции слоя синапсов и простого сумматора, вычисляется следующим образом. Используя формулу (7) для синапсов и правило (5) для вектор-функции получаем следующую оценку константы Липшица слоя синапсов:

.

Используя правило (4) для суперпозиции функций и оценку константы Липшица для простого сумматора (10) получаем:

ΛA ≤ ΛΣΛL = √n||α||. (13)

Однако, если оценить константу Липшица адаптивного сумматора напрямую, то, используя (6) и тот факт, что при фиксированных длинах векторов скалярное произведение достигает максимума для сонаправленных векторов получаем:

(14)

Очевидно, что оценка (14) точнее, чем оценка (13).

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

Рассмотрим слоистую сигмоидную сеть со следующими свойствами:

1. Число входных сигналов — n0.

2. Число нейронов в i-м слое — ni.

3. Каждый нейрон первого слоя получает все входные сигналы, а каждый нейрон любого другого слоя получает сигналы всех нейронов предыдущего слоя.

4. Все нейроны всех слоев имеют вид, приведенный на рис. 1 и имеют одинаковую характеристику.

5. Все синаптические веса ограничены по модулю единицей.

6. В сети m слоев.

В этом случае, учитывая формулы (4), (5), (12) и (14) константу Липшица i-го слоя можно оценить следующей величиной:

Используя формулу (4) получаем оценку константы Липшица всей сети:

Если используется нейроны типа S1, то ΛP=c и оценка константы Липшица сети равна:

Для нейронов типа S2, то ΛP=1/- и оценка константы Липшица сети равна:

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

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

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

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

Определим среди координат векторов xi и xj координату, в которой достигает минимума величина |xil-xjl|, исключив из рассмотрения совпадающие координаты. Очевидно, что эта координата является «узким местом», определяющим сложность задачи. Следовательно, для уменьшения сложности задачи требуется увеличить расстояние между векторами xi и xj, а наиболее перспективной координатой для этого является l-я. Однако увеличение расстояние между xil и xjl не всегда осмыслено. Дело в том, что все параметры, как правило, измеряются с конечной точностью. Поэтому, если величина |xil-xjl| меньше чем точность измерения l-го параметра, значения xil и xjl можно считать совпадающими. Таким образом, для изменения масштаба надо выбирать тот из входных параметров, для которого значение |xil-xjl| минимально, но превышает точность измерения этого параметра.

Таблица 7. Кодирование параметра после разбиения на два сигнала

Предположим, что все входные параметры предобработаны в соответствии с формулой (1). Перенумеруем примеры обучающего множества так, чтобы были верны следующие неравенства: xl1<xl2<,…,xlN, где N — число примеров в обучающем множестве. При этом, возможно, придется исключить ряд пар параметр-ответ с совпадающими значениями параметра. Если в какой-либо из таких пар значения ответов различаются, то это снижает возможную полезность данной процедуры.

Наиболее простой путь — разбить диапазон l-го параметра на два. Зададимся точкой x. Будем кодировать l-й параметр двумя входными сигналами в соответствии с табл. 7. При таком кодировании критерий Липшица, очевидно, уменьшится. Вопрос о выборе точки x может решаться по-разному. Простейший путь — положить x=(a-b)/2. Более сложный, но часто более эффективный — подбор x исходя из требования минимальности критерия Липшица.

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

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

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

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

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

Зададимся некоторым набором положительных чисел y1, …, yk. Определим сравнение по модулю для действительных чисел следующим образом:

x mod y = x-y·Int(x/y), (15)

где Int(x) — функция, вычисляющая целую часть величины x путем отбрасывания дробной части. Очевидно, что величина x mod y лежит в интервале (-y, y).

Кодирование входного признака x при модулярной предобработке вектором Z производится по следующей формуле:

(16)

Таблица 8. Пример сигналов при модулярном вводе

x x mod 3 x mod 5 x mod 7 x mod 11
5 2 0 5 5
10 1 0 3 10
15 0 0 1 3

Однако модулярная предобработка обладает одним отрицательным свойством — во всех случаях, когда yiyr1, при целом r, разрушается отношение предшествования чисел. В табл. 8 приведен пример векторов. Поэтому, модульная предобработка пригодна при предобработке тех признаков, у которых важна не абсолютная величина, а взаимоотношение этой величины с величинами y1, …, yk.

Примером такого признака может служить угол между векторами, если в качестве величин y выбрать yi=π/i.

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

Функциональная предобработка преследует единственную цель — снижение константы Липшица задачи. В разделе «Предобработка, облегчающая обучение», был приведен пример такой предобработки. Рассмотрим общий случай функциональной предобработки, отображающих входной признак x в k-мерный вектор z. Зададимся набором из k чисел, удовлетворяющих следующим условиям: xmin<y1<…<yk-1<yk<xmax.

Таблица 9. Пример функциональной предобработки числового признака x∈[0,5], при условии, что сигналы нейронов принадлежат интервалу [-1,1]. В сигмоидной предобработке использована φ(x)=x/(1+|x|), а в шапочной — φ(x)=2/(1+x²)-1. Были выбраны четыре точки yi=i.

x z1(x) z2(x) z3(x) z4(x)
Линейная предобработка
1.5 0.5 -0.5 -1 -1
3.5 1 1 0.5 -0.5
Сигмоидная предобработка
1.5 0.3333 -0.3333 -0.6 -0.7142
3.5 0.7142 0.6 0.3333 -0.3333
Шапочная предобработка
1.5 0.6 0.6 -0.3846 -0.7241
3.5 -0.7241 -0.3846 0.6 0.6

Пусть φ — функция, определенная на интервале [xmin-yk, xmax-y1], а φmin,φmax — минимальное и максимальное значения функции φ на этом интервале. Тогда i-я координата вектора z вычисляется по следующей формуле:

(17)

Линейная предобработка. В линейной предобработке используется кусочно линейная функция:

(18)

Графики функций zi(x) представлены на рис. 2а. Видно, что с увеличением значения признака x ни одна функция не убывает, а их сумма возрастает. В табл. 9 представлены значения этих функций для двух точек — x1=1.5 и x2=3.5.

Сигмоидная предобработка. В сигмоидной предобработке может использоваться любая сигмоидная функция. Если в качестве сигмоидной функции использовать функцию S2, приведенную в разделе «Нейрон» этой главы, то формула (17) примет следующий вид:

Графики функций zi(x) представлены на рис. 2б. Видно, что с увеличением значения признака x ни одна функция не убывает, а их сумма возрастает. В табл. 9 представлены значения этих функций для двух точек x1=1.5 и x2=3.5.

Шапочная предобработка. Для шапочной предобработки используются любые функции, имеющие график в виде «шапочки». Например, функция φ(x)=1/(1+x²).

Графики функций zi(x) представлены на рис. 2 в. Видно, что с увеличением значения признака x ни одна из функций zi(x) , ни их сумма не ведут себя монотонно. В табл. 9 представлены значения этих функций для двух точек x1=1.5 и x2=3.5.

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

Основная идея позиционной предобработки совпадает с принципом построения позиционных систем счисления. Зададимся положительной величиной y такой, что yk≥(xmin-xmax). Сдвинем признак x так, чтобы он принимал только неотрицательные значения. В качестве сигналов сети будем использовать результат простейшей предобработки y-ичных цифр представления сдвинутого признака x. Формулы вычисления цифр приведены ниже:

(19)

где операция сравнения по модулю действительного числа определена в (15). Входные сигналы сети получаются из компонентов вектора z путем простейшей предобработки.

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

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

Таблица 10. Типы предобработчиков

Тип Описание
Number Предобрабатывает числовые входные данные
Unordered Предобрабатывает неупорядоченные качественные признаки
Ordered Предобрабатывает упорядоченные качественные признаки
Binary Обрабатывает бинарные признаки

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

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

Лекция 9. Описание нейронных сетей

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

Как уже говорилось главе «Двойственные сети», на данный момент в нейросетевом сообществе принято описывать архитектуру нейронных сетей в неразрывном единстве с методами их обучения. Эта связь не является естественной. Так, в первой части этой главы будет рассматриваться только архитектура нейронных сетей. Во второй части будет продемонстрирована независимость ряда методов обучения нейронных сетей от их архитектуры. Однако, для удобства, во второй части главы архитектуры всех парадигм нейронных сетей будут описаны вместе с методами обучения.

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

1. Сети с непрерывным временем.

2. Сети с дискретным асинхронным временем.

3. Сети с дискретным временем, функционирующие синхронно.

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

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

Впервые последовательное описание конструирования нейронных сетей из элементов было предложено в книге А.Н. Горбаня [65]. Однако за прошедшее время предложенный А.Н. Горбанем способ конструирования претерпел ряд изменений.

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

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

На рис. 1 приведены все элементы, необходимые для построения нейронных сетей. Естественно, что возможно расширение списка нелинейных преобразователей. Однако, это единственный вид элементов, который может дополняться. Вертикальными стрелками обозначены входы параметров (для синапса — синаптических весов или весов связей), а горизонтальными — входные сигналы элементов. С точки зрения функционирования элементов сети сигналы и входные параметры элементов равнозначны. Различие между этими двумя видами параметров относятся к способу их использования в обучении. Кроме того, удобно считать, что параметры каждого элемента являются его свойствами и хранятся при нем. Совокупность параметров всех элементов сети называют вектором параметров сети. Совокупность параметров всех синапсов называют вектором обучаемых параметров сети, картой весов связей или синаптической картой. Отметим, что необходимо различать входные сигналы элементов и входные сигналы сети. Они совпадают только для элементов входного слоя сети.

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

• элемент — неделимая часть сети, для которой определены методы прямого и обратного функционирования;

• каскад — сеть составленная из последовательно связанных слоев, каскадов, циклов или элементов;

• слой — сеть составленная из параллельно работающих слоев, каскадов, циклов или элементов;

• цикл — каскад выходные сигналы которого поступают на его собственный вход.

Очевидно, что не все элементы являются неделимыми. В следующем разделе будет приведен ряд составных элементов.

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

На рис. 2 приведен пример поэтапного конструирования трехслойной сигмоидной сети.

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

Название «составные элементы» противоречит определению элементов. Это противоречие объясняется соображениями удобства работы. Введение составных элементов преследует цель упрощения конструирования. Как правило, составные элементы являются каскадами простых элементов.

Хорошим примером полезности составных элементов может служить использование сумматоров. В ряде работ [36, 53, 107, 127, 289] интенсивно используются сети, нейроны которых содержат нелинейные входные сумматоры. Под нелинейным входным сумматором, чаще всего понимают квадратичные сумматоры — сумматоры, вычисляющие взвешенную сумму всех попарных произведений входных сигналов нейрона. Отличие сетей с квадратичными сумматорами заключается только в использовании этих сумматоров. На рис. 3а приведен фрагмент сети с линейными сумматорами. На рис. 3б — соответствующий ему фрагмент с квадратичными сумматорами, построенный с использованием элементов, приведенных на рис. 1. На (рис. 3в) — тот же фрагмент, построенный с использованием квадратичных сумматоров. При составлении сети с квадратичными сумматорами из простых элементов на пользователя ложится большой объем работ по проведению связей и организации вычисления попарных произведений. Кроме того, рис. 3в гораздо понятнее рис. 3б и содержит ту же информацию. Кроме того, пользователь может изменить тип сумматоров уже сконструированной сети, указав замену одного типа сумматора на другой. На рис. 4 приведены обозначения и схемы наиболее часто используемых составных элементов.

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

Таблица 1. Однородные и неоднородные сумматоры

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

Рис. 5 Схема функционирования сети

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

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

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

Пусть задана нейронная сеть, вычисляющая некоторую функцию (рис. 5а). Необходимо построить двойственную к ней сеть, вычисляющую градиент некоторой функции H от выходных сигналов сети. В книге А.Н. Горбаня «Обучение нейронных сетей» [65] предложен метод построения сети, двойственной к данной. Пример сети, построенной по методу А.Н. Горбаня, приведен на рис. 5б. Для работы такой сети необходимо, обеспечение работы элементов в трех режимах. Первый режим — обычное прямое функционирование (рис. 5а). Второй режим — нагруженное прямое функционирование (рис. 5б, верхняя цепочка). Третий режим — обратное функционирование.

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

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

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

Второй подход — включение оценки как элемента в нейронную сеть — лишает структуру гибкости, поскольку для замены функции оценки потребуется изменять сеть. Кроме того, оценка будет достаточно сложным элементом. некоторые оценки включают в себя процедуру сортировки и другие сложные операции (см. главу «Оценка и интерпретатор ответа»).

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

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

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

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

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

• Необходимо включать в сеть оценку как один из элементов

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

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

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

• Для выполнения обратного функционирования не требуется дополнительных элементов и линий связи между элементами.

• Оценка является независимым от сети компонентом.

Наиболее существенным является второе преимущество, поскольку при аппаратной реализации нейронных сетей наиболее существенным ограничением является число связей. Так в приведенных на рис. 5 сетях задействовано для самодвойственной сети — 6 связей, для сети, построенной по методу нагруженного функционирования — 20 связей, а для сети, построенной по методу унифицированной двойственности — 27 связей. Следует заметить, что с ростом размеров сети данные пропорции будут примерно сохраняться.

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

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

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

Далее в этом разделе для каждого из элементов, приведенных на рис. 1 определены правила обратного функционирования, в соответствии со сформулированными выше требованиями к элементам самодвойственной сети.

Синапс

У синапса два входа — вход сигнала и вход синаптического веса (рис. 6а). Обозначим входной сигнал синапса через x, а синаптический вес через α. Тогда выходной сигнал синапса равен αx. При обратном функционировании на выход синапса подается сигнал ∂F/∂(αx).

На входе синапса должен быть получен сигнал обратного функционирования, равный , а на входе синаптического веса — поправка к синаптическому весу, равная (рис. 6б).

Умножитель

Умножитель имеет два входных сигнала и не имеет параметров. Обозначим входные сигнал синапса через x1, x2. Тогда выходной сигнал умножителя равен x1x2 (рис. 7а). При обратном функционировании на выход умножителя подается сигнал &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8706;F/&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8706;(x1x2). На входах сигналов x1 и x2 должны быть получены сигналы обратного функционирования, равные и , соответственно (рис. 7б).

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

В отличие от ранее рассмотренных элементов, точка ветвления имеет только один вход и несколько выходов. Обозначим входной сигнал через x, а выходные через x1, x2, …, xn, причем xi=x (рис. 8а). При обратном функционировании на выходные связи точки ветвления подаются сигналы (рис. 8б). На входной связи должен получаться сигнал, равный . Можно сказать, что точка ветвления при обратном функционировании переходит в сумматор, или, другими словами, сумматор является двойственным по отношению к точке ветвления.

Сумматор

Сумматор считает сумму входных сигналов. Обычный сумматор не имеет параметров. При описании прямого и обратного функционирования ограничимся описанием простого сумматора, поскольку функционирование адаптивного и квадратичного сумматора может быть получено как прямое и обратное функционирование сети в соответствии с их схемами, приведенными на рис. 3б и 3в. Обозначим входные сигналы сумматора через x1, x2, …, xn (рис. 9а). Выходной сигнал равен . При обратном функционировании на выходную связь сумматора подается сигнал (рис. 9б). На входных связях должны получаться сигналы, равные

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

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

Нелинейный Паде преобразователь или Паде элемент имеет два входных сигнала и один выходной. Обозначим входные сигналы через x1, x2. Тогда выходной сигнал Паде элемента равен x1/x2 (рис. 10а). При обратном функционировании на выход Паде элемента подается сигнал ∂F/∂(x1/x2).

На входах сигналов x1 и x2 и должны быть получены сигналы обратного функционирования, равные и , соответственно (рис. 10б).

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

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

Обозначим входной сигнал через x, параметр через α, а вычисляемую этим преобразователем функцию через σ(α,x) (рис. 11а). При обратном функционировании на выход сигмоидного элемента подается сигнал ∂F/∂σ(α,x).

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

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

Произвольный непрерывный нелинейный преобразователь имеет несколько входных сигналов, а реализуемая им функция зависит от нескольких параметров. Выходной сигнал такого элемента вычисляется как некоторая функция φ(x,α), где x — вектор входных сигналов, а a — вектор параметров. При обратном функционировании на выходную связь элемента подается сигнал обратного функционирования, равный ∂F/∂φ.

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

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

Пороговый преобразователь, реализующий функцию определения знака (рис. 12а), не является элементом с непрерывной функцией, и, следовательно, его обратное функционирование не может быть определено из требования вычисления градиента. Однако, при обучении сетей с пороговыми преобразователями полезно иметь возможность вычислять поправки к параметрам. Так как для порогового элемента нельзя определить однозначное поведение при обратном функционировании, предлагается доопределить его, исходя из соображений полезности при конструировании обучаемых сетей. Основным методом обучения сетей с пороговыми элементами является правило Хебба (подробно рассмотрено во второй части главы). Оно состоит из двух процедур, состоящих в изменении «весов связей между одновременно активными нейронами». Для этого правила пороговый элемент при обратном функционировании должен выдавать сигнал обратного функционирования, совпадающий с выданным им сигналом прямого функционирования (рис. 12б). Такой пороговый элемент будем называть зеркальным. При обучении сетей Хопфилда [312], подробно рассмотренном во второй части главы, необходимо использовать «прозрачные» пороговые элементы, которые при обратном функционировании пропускают сигнал без изменения (рис. 12в).

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

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

Существует два основных правила остановки работы сети с циклами. Первое правило состоит в остановке работы сети после указанного числа срабатываний каждого элемента. Циклы с таким правилом остановки будем называть ограниченными.

Второе правило остановки работы сети — сеть прекращает работу после установления равновесного распределения сигналов в цикле. Такие сети будем называть равновесными. Примером равновесной сети может служить сеть Хопфилда [312] (см. разд. «Сети Хопфилда»).

Архитектуры сетей

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

Большинство используемых сетей не позволяют определить, как повлияет изменение какого-либо внутреннего параметра сети на выходной сигнал. На рис. 13 приведен пример сети, в которой увеличение параметра α приводит к неоднозначному влиянию на сигнал x2: при отрицательных x1 произойдет уменьшение x2, а при положительных x1 — увеличение. Таким образом, выходной сигнал такой сети немонотонно зависит от параметра α. Для получения монотонной зависимости выходных сигналов сети от параметров внутренних слоев (то есть всех слоев кроме входного) необходимо использовать специальную монотонную архитектуру нейронной сети. Принципиальная схема сетей монотонной архитектуры приведена на рис. 14.

Основная идея построения монотонных сетей состоит в разделении каждого слоя сети на два — возбуждающий и тормозящий. При этом все связи в сети устроены так, что элементы возбуждающей части слоя возбуждают элементы возбуждающей части следующего слоя и тормозят тормозящие элементы следующего слоя. Аналогично, тормозящие элементы возбуждают тормозящие элементы и тормозят возбуждающие элементы следующего слоя. Названия «тормозящий» и «возбуждающий» относятся к влиянию элементов обеих частей на выходные элементы.

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

Особо отметим архитектуру еще одного класса сетей — сетей без весов связей. Эти сети, в противовес коннекционистским, не имеют обучаемых параметров связей. Любую сеть можно превратить в сеть без весов связей заменой всех синапсов на умножители. Легко заметить, что получится такая же сеть, только вместо весов связей будут использоваться сигналы. Таким образом в сетях без весов связей выходные сигналы одного слоя могут служить для следующего слоя как входными сигналами, так и весами связей. Заметим, что вся память таких сетей содержится в значениях параметров нелинейных преобразователей. Из разделов «Синапс» и «Умножитель» следует, что сети без весов связей способны вычислять градиент функции оценки и затрачивают на это ровно тоже время, что и аналогичная сеть с весами связей.

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

Кроме прямого и обратного функционирования, все элементы должны уметь выполнять еще одну операцию — модификацию параметров. Процедура модификации параметров состоит в добавлении к существующим параметрам вычисленных поправок (напомним, что для сетей с непрерывно дифференцируемыми элементами вектор поправок является градиентом некоторой функции от выходных сигналов). Если обозначить текущий параметр элемента черезα, а вычисленную поправку через Δα, то новое значение параметра вычисляется по формуле α'=h1α+h2Δα.

Параметры обучения h1 и h2 определяются компонентом учитель и передаются сети вместе с запросом на обучение. В некоторых случаях бывает полезно использовать более сложную процедуру модификации карты.

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

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

В последние годы широкое распространение получили различные методы контрастирования или скелетонизации нейронных сетей. В ходе процедуры контрастирования достигается высокая степень разреженности синаптической карты нейронной сети, так как большинство связей получают нулевые веса (см. например [47, 100, 303, 304]).

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

1. Из сети удаляются все связи, имеющие нулевые веса и исключенные из обучения.

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

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

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

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

Сети Хопфилда

Классическая сеть Хопфилда [312], функционирующая в дискретном времени, строится следующим образом. Пусть {ei} — набор эталонных образов (i=1, …, m). Каждый образ, включая и эталоны, имеет вид n-мерного вектора с координатами, равными нулю или единице. При предъявлении на вход сети образа x сеть вычисляет образ, наиболее похожий на x. В качестве меры близости образов выберем скалярное произведение соответствующих векторов. Вычисления проводятся по следующей формуле:

Эта процедура выполняется до тех пор, пока после очередной итерации не окажется, что x=x'. Вектор x, полученный в ходе последней итерации, считается ответом. Для нейросетевой реализации формула работы сети переписывается в следующем виде:

или

x'=sign(Ax),

где .

На рис. 17 приведена схема сети Хопфилда [312] для распознавания четырехмерных образов. Обычно сети Хопфилда [312] относят к сетям с формируемой синаптической картой. Однако, используя разработанный в первой части главы набор элементов, можно построить обучаемую сеть. Для построения такой сети используем «прозрачные» пороговые элементы. Ниже приведен алгоритм обучения сети Хопфилда [312].

1. Положим все синаптические веса равными нулю.

2. Предъявим сети первый эталон e¹ и проведем один такт функционирования вперед, то есть цикл будет работать не до равновесия, а один раз (см. рис. 17б).

3. Подадим на выход каждого нейрона соответствующую координату вектора e¹ (см. рис. 17в). Поправка, вычисленная на j-ом синапсе i-го нейрона, равна произведению сигнала прямого функционирования на сигнал обратного функционирования. Поскольку при обратном функционировании пороговый элемент прозрачен, а сумматор переходит в точку ветвления, то поправка равна ei¹ej¹.

4. Далее проведем шаг обучения с параметрами обучения, равными единице. В результате получим αij=ei¹ej¹.

Повторяя этот алгоритм, начиная со второго шага, для всех эталонов получим , что полностью совпадает с формулой формирования синаптической карты сети Хопфилда [312], приведенной в начале раздела.

Сеть Кохонена

Сети Кохонена [131, 132] (частный случай метода динамических ядер [224, 262]) являются типичным представителем сетей решающих задачу классификации без учителя. Рассмотрим пространственный вариант сети Кохонена. Дан набор из m точек {xp} в n-мерном пространстве. Необходимо разбить множество точек {xp} на k классов близких в смысле квадрата евклидова расстояния. Для этого необходимо найти k точек &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/945;l таких, что , минимально; .

Существует множество различных алгоритмов решения этой задачи. Рассмотрим наиболее эффективный из них.

1. Зададимся некоторым набором начальных точек αl.

2. Разобьем множество точек {xp} на k классов по правилу .

3. По полученному разбиению вычислим новые точки &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/945;l из условия минимальности .

Обозначив через |Pi| число точек в i-ом классе, решение задачи, поставленной на третьем шаге алгоритма, можно записать в виде .

Второй и третий шаги алгоритма будем повторять до тех пор, пока набор точек αl не перестанет изменяться. После окончания обучения получаем нейронную сеть, способную для произвольной точки x вычислить квадраты евклидовых расстояний от этой точки до всех точек αl и, тем самым, отнести ее к одному из k классов. Ответом является номер нейрона, выдавшего минимальный сигнал.

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

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

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

Алгоритм классификации.

1. На вход нейронной сети, состоящей из одного слоя нейронов, приведенных на рис. 18б, подается вектор x.

2. Номер нейрона, выдавшего минимальный ответ, является номером класса, к которому принадлежит вектор x.

Алгоритм обучения.

1. Полагаем поправки всех синапсов равными нулю.

2. Для каждой точки множества {xp} выполняем следующую процедуру.

 1. Предъявляем точку сети для классификации.

 2. Пусть при классификации получен ответ — класс l. Тогда для обратного функционирования сети подается вектор Δ, координаты которого определяются по следующему правилу:

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

3. Для каждого нейрона производим следующую процедуру.

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

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

 3. Вычисляем сумму квадратов накопленных в первых n синапсах поправок и, разделив на –2, заносим в поправку последнего синапса.

 4. Проводим шаг обучения с параметрами h1=0, h2=-2.

4. Если вновь вычисленные синаптические веса отличаются от полученных на предыдущем шаге, то переходим к первому шагу алгоритма.

В пояснении нуждается только второй и третий шаги алгоритма. Из рис. 18в видно, что вычисленные на шаге 2.2 алгоритма поправки будут равны нулю для всех нейронов, кроме нейрона, выдавшего минимальный сигнал. У нейрона, выдавшего минимальный сигнал, первые n поправок будут равны координатам распознававшейся точки x, а поправка последнего синапса равна единице. После завершения второго шага алгоритма поправка последнего синапса i-го нейрона будет равна числу точек, отнесенных к i-му классу, а поправки остальных синапсов этого нейрона равны сумме соответствующих координат всех точек i — о класса. Для получения правильных весов остается только разделить все поправки первых n синапсов на поправку последнего синапса, положить последний синапс равным сумме квадратов полученных величин, а остальные синапсы — полученным для них поправкам, умноженным на –2. Именно это и происходит при выполнении третьего шага алгоритма.

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

Персептрон Розенблатта [146, 181] является исторически первой обучаемой нейронной сетью. Существует несколько версий персептрона. Рассмотрим классический персептрон — сеть с пороговыми нейронами и входными сигналами, равными нулю или единице. Опираясь на результаты, изложенные в работе [146] можно ввести следующие ограничения на структуру сети.

1. Все синаптические веса могут быть целыми числами.

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

Таким образом, можно ограничиться рассмотрением только двухслойных персептронов с не обучаемым первым слоем. Заметим, что для построения полного первого слоя пришлось бы использовать 2n нейронов, где n — число входных сигналов персептрона. На рис. 19а приведена схема полного персептрона для трехмерного вектора входных сигналов. Поскольку построение такой сети при достаточно большом n невозможно, то обычно используют некоторое подмножество нейронов первого слоя. К сожалению, только полностью решив задачу можно точно указать необходимое подмножество. Обычно используемое подмножество выбирается исследователем из каких-то содержательных соображений или случайно.

Классический алгоритм обучения персептрона является частным случаем правила Хебба. Поскольку веса связей первого слоя персептрона являются не обучаемыми, веса нейрона второго слоя в дальнейшем будем называть просто весами. Будем считать, что при предъявлении примера первого класса персептрон должен выдать на выходе нулевой сигнал, а при предъявлении примера второго класса — единичный. Ниже приведено описание алгоритма обучения персептрона.

1. Полагаем все веса равными нулю.

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

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

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

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

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

3. Если в ходе выполнения второго шага алгоритма хоть один раз выполнялся шаг 2.2 или 2.3 и не произошло зацикливания, то переходим к шагу 2. В противном случае обучение завершено.

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

1. k=1; m=0. Запоминаем веса связей.

2. После цикла предъявлений образов сравниваем веса связей с запомненными. Если текущие веса совпали с запомненными, то произошло зацикливание. В противном случае переходим к шагу 3.

3. m=m+1. Если m<k, то переходим ко второму шагу.

4. k=2k;m=0. Запоминаем веса связей и переходим к шагу 2.

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

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

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

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

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

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

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

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

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

Лекция 10. Оценка и интерпретатор ответа

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

Основные функции, которые должна выполнять оценка:

1. Вычислять оценку решения, выданного сетью.

2. Вычислять производные этой оценки по выходным сигналам сети.

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

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

Интерпретатор ответа

Как было показано в главе «Описание нейронных сетей», ответ, выдаваемый нейронной сетью, как правило, является числом, из диапазона [a,b]. Если ответ выдается несколькими нейронами, то на выходе сети мы имеем вектор, каждый компонент которого лежит в интервале [a,b]. Если в качестве ответа требуется число из этого диапазона, то мы можем его получить. Однако, в большинстве случаев это не так. Достаточно часто требуемая в качестве ответа величина лежит в другом диапазоне. Например, при предсказании температуры воздуха 25 июня в Красноярске ответ должен лежать в интервале от 5 до 35 градусов Цельсия. Сеть не может дать на выходе такого сигнала. Значит, прежде чем обучать сеть необходимо решить в каком виде будем требовать ответ. В данном случае ответ можно требовать в виде α=(b-a)(T-Tmin)/(Tmax-Tmin)+a, где T — требуемая температура, Tmin и Tmax — минимальная и максимальная температуры, α — ответ, который будем требовать от сети. При интерпретации ответа необходимо проделать обратное преобразование. Если сеть выдала сигнал α, то ответом является величина T=(α-a)(T-Tmin)/(b-a)+Tmin. Таким образом, можно интерпретировать выдаваемый сетью сигнал, как величину из любого, наперед заданного диапазона.

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

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

Двоичный интерпретатор. Основная идея двоичного интерпретатора — получение на выходе нейронной сети двоичного кода номера класса. Это достигается двухэтапной интерпретацией:

1. Каждый выходной сигнал нейронной сети интерпретируется как 1, если он больше (a+b)/2, и как 0 в противном случае.

2. Полученная последовательность нулей и единиц интерпретируется как двоичное число.

Двоичный интерпретатор позволяет интерпретировать N выходных сигналов нейронной сети как номер одного из 2N классов.

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

Уровень уверенности

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

1. Кодирование номером канала. Знаковый интерпретатор. Знаковый интерпретатор работает в два этапа.

1. Каждый выходной сигнал нейронной сети интерпретируется как 1, если он больше (a+b)/2, и как 0 в противном случае.

2. Если в полученном векторе только одна единица, то номером класса считается номер нейрона, сигнал которого интерпретирован как 1. В противном случае ответом считается неопределенный номер класса (ответ «не знаю»).

Для того чтобы ввести уровень уверенности для этого интерпретатора потребуем, чтобы при обучении сети для всех примеров было верно неравенство: |-(a+b)/2|≤ε, где i=1,…,N; αi — i-ый выходной сигнал. e — уровень надежности (насколько сильно сигналы должны быть отделены от (a+b)/2 при обучении). В этом случае уровень уверенности R определяется следующим образом:

Таким образом, при определенном ответе уровень уверенности показывает, насколько ответ далек от неопределенного, а в случае неопределенного ответа — насколько он далек от определенного.

2. Кодирование номером канала. Максимальный интерпретатор. Максимальный интерпретатор в качестве номера класса выдает номер нейрона, выдавшего максимальный сигнал. Для такого интерпретатора в качестве уровня уверенности естественно использовать некоторую функцию от разности между максимальным и вторым по величине сигналами. Для этого потребуем, чтобы при обучении для всех примеров обучающего множества разность между максимальным и вторым по величине сигналами была не меньше уровня надежности e. В этом случае уровень уверенности вычисляется по следующей формуле: R=max{1,(αij)/e}, где αi — максимальный, а αj — второй по величине сигналы.

3. Двоичный интерпретатор. Уровень надежности для двоичного интерпретатора вводится так же, как и для знакового интерпретатора при кодировании номером канала.

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

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

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

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

Эту оценку будем называть оценкой числа с допуском e.

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

Для оценок, построенных по интерпретатору потребуется следующая функция оценки

и ее производная

Рассмотрим построение оценок по интерпретатору для четырех рассмотренных в предыдущем разделе интерпретаторов ответа.

1. Кодирование номером канала. Знаковый интерпретатор. Пусть для рассматриваемого примера правильным ответом является k-ый класс. Тогда вектор выходных сигналов сети должен удовлетворять следующей системе неравенств:

где e — уровень надежности.

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

Производная оценки по i-му выходному сигналу равна

2. Кодирование номером канала. Максимальный интерпретатор. Пусть для рассматриваемого примера правильным ответом является k-ый класс. Тогда вектор выходных сигналов сети должен удовлетворять следующей системе неравенств: αk-e≥αi при i≠k. Оценкой решения сетью данного примера является расстояние от точки a в пространстве выходных сигналов до множества точек, удовлетворяющих этой системе неравенств. Для записи оценки, исключим из вектора выходных сигналов сигнал αk, а остальные сигналы отсортируем по убыванию. Обозначим величину αk-e через β0, а вектор отсортированных сигналов через β1β2≥…≥βN-1. Система неравенств в этом случае приобретает вид β0βi, при i>1. Множество точек удовлетворяющих этой системе неравенств обозначим через D. Очевидно, что если β0β1, то точка b принадлежит множеству D. Если β0<β1, то найдем проекцию точки b на гиперплоскость β0=β1. Эта точка имеет координаты

Если , то точка &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/185; принадлежит множеству D. Если нет, то точку b нужно проектировать на гиперплоскость &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;0=&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;1=&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;2. Найдем эту точку. Ее координаты можно записать в следующем виде (b,b,b,&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;3,…,&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;N-1). Эта точка обладает тем свойством, что расстояние от нее до точки b минимально. Таким образом, для нахождения величины b достаточно взять производную от расстояния по b и приравнять ее к нулю:

Из этого уравнения находим b и записываем координаты точки β²:

Эта процедура продолжается дальше, до тех пор, пока при некотором l не выполнится неравенство

или пока l не окажется равной N–1. Оценкой является расстояние от точки b до точки

Она равна следующей величине

Производная оценки по выходному сигналу βm равна

Для перехода к производным по исходным выходным сигналам αi необходимо обратить сделанные на первом этапе вычисления оценки преобразования.

3. Двоичный интерпретатор. Оценка для двоичного интерпретатора строится точно также как и для знакового интерпретатора при кодировании номером канала. Пусть правильным ответом является k-ый класс, тогда обозначим через K множество номеров сигналов, которым в двоичном представлении k соответствуют единицы. При уровне надежности оценка задается формулой:

Производная оценки по i-му выходному сигналу равна:

4. Порядковый интерпретатор. Для построения оценки по порядковому интерпретатору необходимо предварительно переставить компоненты вектора a в соответствии с подстановкой, кодирующей правильный ответ. Обозначим полученный в результате вектор через βº. Множество точек, удовлетворяющих условию задачи, описывается системой уравнений , где e — уровень надежности. Обозначим это множество через D. Оценка задается расстоянием от точки b до проекции этой точки на множество D. Опишем процедуру вычисления проекции.

1. Просмотрев координаты точки βº, отметим те номера координат, для которых нарушается неравенство βºi+e≤βºi+1.

2. Множество отмеченных координат либо состоит из одной последовательности последовательных номеров i,i+1,…,i+l, или из нескольких таких последовательностей. Найдем точку &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/185;, которая являлась бы проекцией точки &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/186; на гиперплоскость, определяемую уравнениями &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/185;i+e&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/8804;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/185;i+1, где i пробегает множество индексов отмеченных координат. Пусть множество отмеченных координат распадается на n последовательностей, каждая из которых имеет вид , где m — номер последовательности. Тогда точка &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/946;&/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/185; имеет вид:

3. Точка β¹ является проекцией, и следовательно, расстояние от βº до β¹ должно быть минимальным. Это расстояние равно

Для нахождения минимума этой функции необходимо приравнять к нулю ее производные по γm. Получаем систему уравнений

Решая ее, находим

4. Если точка  удовлетворяет неравенствам, приведенным в первом пункте процедуры, то расстояние от нее до точки βº является оценкой. В противном случае, повторяем первый шаг процедуры, используя точку β¹ вместо βº; Объединяем полученный список отмеченных компонентов со списком, полученным при поиске предыдущей точки; находим точку β², повторяя все шаги процедуры, начиная со второго.

Отметим, что в ходе процедуры число отмеченных последовательностей соседних индексов не возрастает. Некоторые последовательности могут сливаться, но новые возникать не могут. После нахождения проекции можно записать оценку:

Обозначим через Im m-ую последовательность соседних координат, выделенную при последнем исполнении первого шага процедуры вычисления оценки: Im={im,im+1,…,im+lm}. Тогда производную оценки по выходному сигналу βºi можно записать в следующем виде:

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

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

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

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

В предыдущем разделе был рассмотрен ряд оценок, позволяющих оценить решение сетью конкретного примера. Однако, ситуация, когда сеть хотят обучить решению только одного примера, достаточно редка. Обычно сеть должна научиться решать все примеры обучающего множества. Ряд алгоритмов обучения, которые будут рассматриваться в главе «Учитель», требуют возможности обучать сеть решению всех примеров одновременно и, соответственно, оценивать решение сетью всех примеров обучающего множества. Как уже отмечалось, обучение нейронной сети — это процесс минимизации в пространстве обучаемых параметров функции оценки. Большинство алгоритмов обучения используют способность нейронных сетей быстро вычислять вектор градиента функции оценки по обучаемым параметрам. Обозначим оценку отдельного примера через Hi, а оценку всего обучающего множества через HOM. Простейший способ получения HOM из Hi — простая сумма. При этом вектор градиента вычисляется очень просто:

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

Обучение по всему обучающему множеству позволяет задействовать дополнительные механизмы ускорения обучения. Большинство этих механизмов будет рассмотрено в главе «Учитель». В этом разделе будет рассмотрен только один из них — использование весов примеров. Использование весов примеров может быть вызвано одной из следующих причин.

Один из примеров плохо обучается.

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

Примеры в обучающем множестве имеют различную достоверность.

Рассмотрим первую причину — пример плохо обучается. Под «плохо обучается» будем понимать медленное снижение оценки данного примера по отношению к снижению оценки по обучающему множеству. Для того чтобы ускорить обучение данного примера, ему можно приписать вес, больший, чем у остальных примеров. При этом оценка по обучающему множеству и ее градиент можно записать в следующем виде: где wi — вес i-го примера. Эту функцию оценки будем называть оценкой взвешенных примеров. При этом градиент, вычисленный по оценке решения сетью этого примера, войдет в суммарный градиент с большим весом, и, следовательно, сильнее повлияет на выбор направления обучения. Этот способ применим также и для коррекции проблем, связанных со второй причиной — разное число примеров разных классов. Однако в этом случае увеличиваются веса всем примерам того класса, в котором меньше примеров. Опыт показывает, что использование весов в таких ситуациях позволяет улучшить обобщающие способности сетей.

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

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

где wi — вес примера, δi — его достоверность.

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

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

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

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

Приведем два примера нелокальных оценки.

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

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

Таким образом, функция оценки должна состоять из двух компонентов: первая реализует притяжение между примерами одного класса и барицентром этого класса, а вторая отвечает за отталкивание барицентров разных классов. Обозначим точку в пространстве выходных сигналов, соответствующую m-му примеру, через &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/945;m, множество примеров i-го класса через Ii, барицентр точек, соответствующих примерам этого класса, через  Bi (), число примеров в i-ом классе через |Bi|, а расстояние между точками a и b через . Используя эти обозначения, можно записать притягивающий компонент функции оценки для всех примеров i-го класса в виде:

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

Таким образом, оценку, обеспечивающую сближение точек, соответствующих примерам одного класса, и отталкивание барицентров, можно записать в виде:

Вычислим производную оценки по j-му выходному сигналу, полученному при решении i-го примера. Пусть i-ый пример принадлежит l-му классу. Тогда производная имеет вид:

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

Интерпретатор для кинетической оценки строится следующим образом. Для построения разделителя i-го и j-го классов строим плоскость, перпендикулярную к вектору (Bi-Bj). Уравнение этой плоскости можно записать в виде

Для определения константы D находим среди точек i-го класса ближайшую к барицентру j-го класса. Подставляя координаты этой точки в уравнение гиперплоскости, получаем уравнение на D. Решив это уравнение, находим величину D1. Используя ближайшую к барицентру i-го класса точку j-го класса, находим величину D2. Искомая константа D находится как среднее арифметическое между D1 и D2. Для отнесения произвольного вектора к i-му или j-му классу достаточно подставить его значения в левую часть уравнения разделяющей гиперплоскости. Если значение левой части уравнения получается больше нуля, то вектор относится к j-му классу, в противном случае — к i-му.

Интерпретатор работает следующим образом: если для i-го класса все разделители этого класса с остальными классами выдали ответ i-ый класс, то окончательным ответом является i-ый класс. Если такого класса не нашлось, то ответ «не знаю». Ситуация, когда для двух различных классов все разделители подтвердили принадлежность к этому классу, невозможна, так как разделитель этих двух классов должен был отдать предпочтение одному из них.

Рассмотренный пример решения задачи с использованием нелокальной оценки позволяет выделить основные черты обучения с нелокальной оценкой:

1. Невозможность оценить решение одного примера.

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

3. Невозможность построения интерпретатора ответа до окончания обучения.

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

Генератор случайных чисел. Необходимо обучить сеть генерировать последовательность случайных чисел из диапазона [0,1]с заданными k первыми моментами. Напомним, что для выборки роль первого момента играет среднее значение, второго — средний квадрат, третьего — средний куб и так далее. Есть два пути решения этой задачи. Первый — используя стандартный генератор случайных чисел подготовить задачник и обучить по нему сеть. Этот путь плох тем, что такой генератор будет просто воспроизводить последовательность чисел, записанную в задачнике. Для получения такого результата можно просто хранить задачник.

Второй вариант — обучать сеть без задачника! Пусть нейросеть принимает один входной сигнал и выдает один выходной. При использовании сети выходной сигнал первого срабатывания сети (первое случайное число) будет служить входным сигналом для второго срабатывания сети и так далее.

Для построения оценки зададимся тремя наборами чисел: Mi — необходимое значение i-го момента, Li — длина последовательности, на которой i-ый момент сгенерированной последовательности должен не более чем на si отличаться от Mi. si — точность вычисления i-го момента.

Выборочная оценка совпадения i-го момента в сгенерированной последовательности на отрезке, начинающемся с j-го случайного числа, вычисляется по следующей формуле:

где αl — выходной сигнал, полученный на l-ом срабатывании сети. Для оценки точности совпадения i-го момента в сгенерированной последовательности на отрезке, начинающемся с j-го случайного числа, воспользуемся оценкой числа с допуском si:

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

Производная оценки по выходному сигналу l-го срабатывания сети можно записать в следующем виде:

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

При использовании предложенной оценки нет никаких гарантий того, что в генерируемой сетью последовательности не появятся сильно скоррелированные подпоследовательности. Для удаления корреляций можно модифицировать оценку так, чтобы она возрастала при появлении корреляций. Рассмотрим две подпоследовательности длинны L, первая из которых начинается с αi, а другая с αi+k. Коэффициент корреляции этих последовательностей записывается в виде:

В этой формуле приняты следующие обозначения: — среднее по последовательности, начинающейся с &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/945;i; — средний квадрат последовательности начинающейся с &/storebooks/E/E-M-Mirkes/Uchebnoe-Posobie-Po-Kursu-Nejroinformatika/945;i. Вычисление такого коэффициента корреляции довольно долгий процесс. Однако вместо выборочных моментов в формулу можно подставить значения моментов, которые последовательность должна иметь. В этом случае формула сильно упрощается:

Добавку для удаления корреляций последовательностей длиной от L1 до L2 и смещенных друг относительно друга на смещения от h1 до h2 можно записать в виде:

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

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

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

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

Лекция 11.1. Исполнитель

Компонент исполнитель является служебным. Это означает, что он универсален и невидим для пользователя. В отличие от всех других компонентов исполнитель не выполняет ни одной явной функции в обучении нейронных сетей, а является вспомогательным для компонентов учитель и контрастер. Задача этого компонента — упростить работу компонентов учитель и контрастер. Этот компонент выполняет всего несколько запросов, преобразуя каждый из них в последовательность запросов к различным компонентам. В данной главе содержательно рассмотрены алгоритмы исполнения всех запросов исполнителя.

Как было описано в главе «Двойственные сети», исполнитель выполняет четыре вида запросов.

1. Тестирование решения примера.

2. Оценивание решения примера.

3. Оценивание решения примера с вычислением градиента.

4. Оценивание и тестирование решения примера.

Таблица 1. Параметры запроса для позадачной работы

Название параметра 1 2 3 4
Перейти к следующему примеру +/– +/– +/– +/–
Остановиться в конце обучающего множества +/– +/– +/– +/–
Вычислять оценку + + +
Интерпретировать ответ + +
Вычислять градиент +
Подготовка к контрастированию +/–

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

Тестирование решения всех примеров обучающего множества.

Оценивание решения всех примеров обучающего множества.

Оценивание решения всех примеров обучающего множества с вычислением градиента.

Оценивание и тестирование решения всех примеров обучающего множества.

Как уже отмечалось в главе «Двойственные сети», каждую из приведенных четверок запросов можно объединить в один запрос с параметрами. В табл. 1 приведен полный список параметров для первой четверки запросов, а в табл. 2 — для второй.

Таблица 2. Параметры запроса для обучающего множества в целом

Название параметра 5 6 7 8
Вычислять оценку + + +
Интерпретировать ответ + +
Вычислять градиент +
Подготовка к контрастированию +/–

Символ «+» означает, что в запросе, номер которого указан в первой строке колонки, возможность, задаваемая данным параметром, должна быть использована. Символ «–» — что связанная с данным параметром возможность не используется. Символы «+/–» означают, что запрос может, как использовать, так и не использовать данную возможность. Отметим, что подготовка к контрастированию может быть задействована, только если производится вычисление градиента, а вычисление градиента невозможно без вычисления оценки. Остальные параметры независимы.

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

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

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

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

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

Лекция 11.2, 12. Учитель

Этот компонент не является столь универсальным как задачник, оценка или нейронная сеть, поскольку существует ряд алгоритмов обучения жестко привязанных к архитектуре нейронной сети. Примерами таких алгоритмов могут служить обучение (формирование синаптической карты) сети Хопфилда [312], обучение сети Кохонена [ 31, 132] и ряд других аналогичных сетей. Однако в главе «Описание нейронных сетей» приводится способ формирования сетей, позволяющий обучать сети Хопфилда [312] и Кохонена [131, 132] методом обратного распространения ошибки. Описываемый в этой главе компонент учитель ориентирован в первую очередь на обучение двойственных сетей (сетей обратного распространения ошибки).

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

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

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

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

Кроме того, использование нейронных сетей позволяет ставить новые вопросы перед исследователем. В практике группы «НейроКомп» был следующий случай. Была поставлена задача обучить сеть ставить диагноз вторичного иммунодефицита по данным анализов крови и клеточного метаболизма. Вся обучающая выборка была разбита на два класса: больные и здоровые. При анализе базы данных стандартными статистическими методами значимых отличий обнаружить не удалось. Сеть оказалась не способна обучиться. Далее у исследователя было два пути: либо увеличить число нейронов в сети, либо определить, что мешает обучению. Исследователи выбрали второй путь. При обучении сети была применена следующая процедура: как только обучение сети останавливалось из-за невозможности дальнейшего уменьшения оценки, пример, имеющий наихудшую оценку, исключался из обучающего множества. После того, как сеть обучилась решению задачи на усеченном обучающем множестве, был проведен анализ исключенных примеров. Выяснилось, что исключено около половины больных. Тогда множество больных было разбито на два класса — больные1 (оставшиеся в обучающем множестве) и больные2 (исключенные). При таком разбиении обучающей выборки стандартные методы статистики показали значимые различия в параметрах классов. Обучение сети классификации на три класса быстро завершилось полным успехом. При содержательном анализе примеров, составляющих классы больные1 и больные2, было установлено, что к классу болные1 относятся больные на завершающей стадии заболевания, а к классу больные2 — на начальной. Ранее такое разбиение больных не проводилось. Таким образом, обучение нейронной сети решению прикладной задачи поставило перед исследователем содержательный вопрос, позволивший получить новое знание о предметной области.

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

1. Обучать сеть решению задачи.

2. Подбирать входные данные так, чтобы на выходе нейронной сети был заданный ответ.

3. Ставить вопросы о соответствии входных данных задачника постановке нейросетевой задачи.

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

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

Основная проблема состоит в том, что при оптимизации первой функции, значения других функций не контролируются. И наоборот, при оптимизации всех других функций не контролируется значение первой функции. Если обучение устроено по циклу — сначала оптимизация первой функции, потом второй и т. д., то после завершения цикла значение любой из функций может оказаться не меньше, а больше чем до начала обучения. Такой подход к обучению нейронных сетей привел к появлению различных методов «коррекции» данной трудности. Так, например, появилось правило, что нельзя «сильно» оптимизировать оценку отдельного примера, для того, чтобы при оптимизации сеть «не сильно» забывала остальные примеры. Возникли различные правила «правильного» перебора примеров и т. д. Наиболее ярким примером такого правила является случайный перебор примеров, рекомендованный для обучения сетей, обучаемых без учителя (сетей Кохонена [131, 132]). Однако все эти правила не гарантировали быстрого достижения результата. Более того, часто результат вообще не достигался за обозримое время.

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

В случае использования оценки обучающего множества, математическая интерпретация задачи приобретает классический вид задачи минимизации функции в пространстве многих переменных. Для этой классической задачи существует множество известных методов решения [48, 104, 143]. Особенностью обучения нейронных сетей является их способность быстро вычислять градиент функции оценки. Под быстро, понимается тот факт, что на вычисления градиента тратится всего в два-три раза больше времени, чем на вычисление самой функции. Именно этот факт делает градиентные методы наиболее полезными при обучении нейронных сетей. Большая размерность пространства обучаемых параметров нейронной сети (102–106) делает практически неприменимыми все методы, явно использующие матрицу вторых производных.

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

Все алгоритмы обучения сетей методом обратного распространения ошибки опираются на способность сети вычислять градиент функции ошибки по обучающим параметрам. Даже правило Хебба использует вектор псевдоградиента, вычисляемый сетью при использовании зеркального порогового элемента (см. раздел «Пороговый элемент» главы «Описание нейронных сетей»). Таким образом, акт обучения состоит из вычисления градиента и собственно обучения сети (модификации параметров сети). Однако, существует множество не градиентных методов обучения, таких, как метод покоординатного спуска, метод случайного поиска и целое семейство методов Монте-Карло. Все эти методы могут использоваться при обучении нейронных сетей, хотя, как правило, они менее эффективны, чем градиентные методы. Некоторые варианты методов обучения описаны далее в этой главе.

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

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

При описании методов используется набор макросов, приведенный в табл. 2. В табл. 2 дано пояснение выполняемых макросами действий. Все макрокоманды могут оперировать с данными как пространства параметров, так и пространства входных сигналов сети. В первой части главы полагается, что объект обучения установлен заранее. В макросах используются понятия и аргументы, приведенные в табл. 1. Список макрокоманд приведен в табл. 2.

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

Название Смысл
Точка Точка в пространстве параметров или входных сигналов. Аналогична вектору.
Вектор Вектор в пространстве параметров или входных сигналов. Аналогичен точке.
Вектор_минимумов Вектор минимальных значений параметров или входных сигналов.
Вектор_максимумов Вектор максимальных значений параметров или входных сигналов.
Указатель_на_вектор Адрес вектора. Используется для передачи векторов в макрокоманды.
Пустой_указатель Указатель на отсутствующий вектор.

При описании методов обучения все аргументы имеют тип, определяемый типом аргумента макрокоманды. Если в описании макрокоманды в табл. 2 тип аргумента не соответствует ни одному из типов, приведенных в табл. 1, то эти аргументы имеют числовой тип.

Таблица 2. Список макрокоманд, используемых для описания учителя

Название Аргументы (типы) Выполняемые действия
Модификация_вектора Указатель_на_вектор Старый_Шаг Новый_Шаг Генерирует запрос на модификацию вектора (см. раздел «Провести обучение (Modify)»).
Вычислить_градиент Вычисляет градиент функции оценки.
Установить_параметры Указатель_на_вектор Скопировать вектор, указанный в аргументе, в текущий вектор.
Создать_вектор Указатель_на_вектор Создает экземпляр вектора с неопределенными значениями. Адрес вектора помещается в аргумент.
Освободить_вектор Указатель_на_вектор Освобождает память занятую вектором, расположенным по адресу Указатель_на_вектор.
Случайный_вектор Указатель_на_вектор В векторе, на который указывает Указатель_на_вектор, генерируется вектор, каждая из координат которого является случайной величиной, равномерно распределенной на интервале между значениями соответствующих координат векторов Вектор_минимумов и Вектор_максимумов.
Оптимизация_шага Указатель_на_вектор Начальный_Шаг Производит подбор оптимального шага (см. рис. 3).
Сохранить_вектор Указатель_на_вектор Скопировать текущий вектор в вектор, указанный в аргументе.
Вычислить_оценку Оценка Вычисляет оценку текущего вектора. Вычисленную величину складывает в аргумент Оценка.

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

Среди неградиентных методов рассмотрим следующие методы, каждый из которых является представителем целого семейства методов оптимизации:

1. Метод случайной стрельбы (представитель семейства методов Монте-Карло).

2. Метод покоординатного спуска (псевдоградиентный метод).

3. Метод случайного поиска (псевдоградиентный метод).

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

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

1.  Создать_вектор В1

2.  Создать_вектор В2

3.  Вычислить_оценку О1

4.  Сохранить_вктор В1

5.  Установить_параметры В1

6.  Случайный_вектор В2

7.  Модификация_вектора В2, 0, 1

8.  Вычислить_оценку О2

9.  Если О2<О1 то переход к шагу 11

10. Переход к шагу 5

11. О1=О2

12. Переход к шагу 4

13. Установить_параметры В1

14. Освободить_вектор В1

15. Освободить_вектор В2

Рис. 1. Простейший алгоритм метода случайной стрельбы

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

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

Число_попыток — число неудачных пробных генераций вектора при одном радиусе.

Минимальный_радиус — минимальное значение радиуса, при котором продолжает работать алгоритм.

Идея этого метода состоит в следующем. Зададимся начальным состоянием вектора параметров. Новый вектор параметров будем искать как сумму начального и случайного, умноженного на радиус, векторов. Если после Число_попыток случайных генераций не произошло уменьшения оценки, то уменьшаем радиус. Если произошло уменьшение оценки, то полученный вектор объявляем начальным и продолжаем процедуру с тем же шагом. Важно, чтобы последовательность уменьшающихся радиусов образовывала расходящийся ряд. Примером такой последовательности может служить использованный в примере на рис. 2 ряд 1/n.

1.  Создать_вектор В1

2.  Создать_вектор В2

3.  Вычислить_оценку O1

4.  Число_Смен_Радиуса=1

5.  Радиус=1/Число_Смен_Радиуса

6.  Попытка=0

7.  Сохранить_вектор В1

8.  Установить_параметры В1

9.  Случайный_вектор В2

10. Модификация_вектора В2, 1, Радиус

11. Вычислить_оценку О2

12. Попытка=Попытка+1

13. Если 02<01 то переход к шагу 16

14. Если Попытка<=Число_попыток то переход к шагу 8

15. Переход к шагу 18

16. О1=О2

17. Переход к шагу 6

18. Число_Смен_Радиуса= Число_Смен_Радиуса+1

19. Радиус=1/Число_Смен_Радиуса

20. Если радиус >= Минимапьный_радиус то переход к шагу 6

21. Установить_параметры В1

22. Освободить_вектор В1

23. Освободить_вектор В2

Рис. 2. Алгоритм метода случайной стрельбы с уменьшением радиуса

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

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

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

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

Данный раздел посвящен описанию макрокоманды Оптимизация_Шага. Эта макрокоманда часто используется в описании процедур обучения и не столь очевидна как другие макрокоманды. Поэтому ее текст приведен на рис. 3. Идея подбора оптимального шага состоит в том, что при наличии направления в котором производится спуск (изменение параметров) задача многомерной оптимизации в пространстве параметров сводится к одномерной оптимизации — подбору шага. Пусть заданы начальный шаг (Ш2) и направление спуска (антиградиент или случайное) (Н). Тогда вычислим величину О1 — оценку в текущей точке пространства параметров. Изменив параметры на вектор направления, умноженный на величину пробного шага, вычислим величину оценки в новой точке — О2. Если О2 оказалось меньше либо равно О1, то увеличиваем шаг и снова вычисляем оценку. Продолжаем эту процедуру до тех пор, пока не получится оценка, большая предыдущей. Зная три последних значения величины шага и оценки, используем квадратичную оптимизацию — по трем точкам построим параболу и следующий шаг сделаем в вершину параболы. После нескольких шагов квадратичной оптимизации получаем приближенное значение оптимального шага.

1.  Создать_вектор В

2.  Сохранить_вектор В

3.  Вычислить_оценку О1

4.  Ш1=0

5.  Модификация_вектора Н, 1, Ш2

6.  Вычислить_оценку О2

7.  Если О1<О2 то переход к шагу 15

8.  Ш3=Ш2*3

9.  Установить_параметры В

10. Модификация_вектора Н, 1, Ш3

11. Вычислить_оценку О3

12. Если О3>О2 то переход к шагу 21

13. О1=О2 О2=О3 Ш1=Ш2 Ш2=ШЗ

14. Переход к шагу 3

15. ШЗ=Ш2 03=02

16. Ш2=ШЗ/3

17. Установить_параметры В

18. Модификация_вектора Н, 1, Ш2

19. Вычислить_оценку О3

20. Если О2>=О1 то переход к шагу 15

21. Число_парабол=0

22. Ш=((ШЗШЗ-Ш2Ш2)О1+(Ш1Ш1-ШЗШЗ)О2+(Ш2Ш2-Ш1Ш )О3)/(2((ШЗ-Ш2)О1+(Ш1-Ш3)О2 +(Ш2-Ш )О3))

23. Установить_параметры В

24. Модификация_вектора Н, 1, Ш

25. Вычислить_оценку О

26. Если Ш>Ш2 то переход к шагу 32

27. Если О>О2 то переход к шагу 30

28. ШЗ=Ш2 О3=О2 О2=О Ш2=Ш

29. Переход к шагу 36

30. Ш1=Ш О1=О

31. Переход к шагу 36

32. Если О>О2 то переход к шагу 35

33. ШЗ=Ш2 О3=О2 О2=О Ш2=Ш

34. Переход к шагу 36

35. Ш1=Ш О1=О

36. Чиспо_парабол=Число_парабол+1

37. Если Число_парабоп<Максимальное_Число_Парабол то переход к шагу 22

33. Установить_параметры В

39. Модификация_вектора Н, 1, Ш 2

40. Освободить_вектор В

Рис. 3. Алгоритм оптимизации шага

Если после первого пробного шага получилось О2 большее О1, то уменьшаем шаг до тех пор, пока не получим оценку, меньше чем О1. После этого производим квадратичную оптимизацию.

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

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

1.  Создать_вектор Н

2.  Число_Смен_Радиуса=1

3.  Попытка=0

4.  Радиус=1/Число_Смен_Радиуса

5.  Случайный_вектор Н

6.  Оптимизация шага Н Радиус

7.  Попытка=Попытка+1

8.  Если Радиус=0 то Попытка=0

9.  Если Попытка<=Число_попыток то переход к шагу 4

10. Число_Смен_Радиуса= Число_Смен_Радиуса+1

11. Радиус=1/Число_Смен_Радиуса

12. Если Радиус>= Минимальный_радиус то переход к шагу 3

13. Освободить_вектор Н

Рис. 4. Алгоритм метода случайного поиска

Число_попыток — число неудачных пробных генераций вектора при одном радиусе.

Минимальный_радиус — минимальное значение радиуса, при котором продолжает работать алгоритм.

Идея этого метода состоит в следующем. Зададимся начальным состоянием вектора параметров. Новый вектор параметров будем искать как сумму начального и случайного, умноженного на радиус, векторов. Если после Число_попыток случайных генераций не произошло уменьшения оценки, то уменьшаем радиус. Если произошло уменьшение оценки, то полученный вектор объявляем начальным и продолжаем процедуру с тем же шагом. Важно, чтобы последовательность уменьшающихся радиусов образовывала расходящийся ряд. Примером такой последовательности может служить использованный в примере на рис. 4 ряд 1/n.

Метод Нелдера-Мида

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

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

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

Изучению градиентных методов обучения нейронных сетей посвящено множество работ [47, 65, 90] (сослаться на все работы по этой теме не представляется возможным, поэтому дана ссылка на работы, где эта тема исследована наиболее детально). Кроме того, существует множество публикаций, посвященных градиентным методам поиска минимума функции [48, 104] (как и в предыдущем случае, ссылки даны только на две работы, которые показались наиболее удачными). Данный раздел не претендует на какую-либо полноту рассмотрения градиентных методов поиска минимума. В нем приведены только несколько методов, применявшихся в работе группой «НейроКомп». Все градиентные методы объединены использованием градиента как основы для вычисления направления спуска.

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

1. Вычислить_оценку О2

2. О1=О2

3. Вычислить_градиент

4. Оптимизация шага Пустой_указатель Шаг

5. Вычислить_оценку О2

6. Если О1-О2<Точность то переход к шагу 2

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

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

Этот метод работает, как правило, на порядок быстрее методов случайного поиска. Он имеет два параметра — Точность, показывающий, что если изменение оценки за шаг метода меньше чем Точность, то обучение останавливается; Шаг — начальный шаг для оптимизации шага. Заметим, что шаг постоянно изменяется в ходе оптимизации шага.

а)

б)

в)

Рис. 6. Траектории спуска при различных конфигурациях окрестности минимума и разных методах оптимизации.

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

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

kParTan

1.  Создать_вектор В1

2.  Создать_вектор В2

3.  Шаг=1

4.  Вычислить_оценку О2

5.  Сохранить_вектор В1

6.  О1=О2

7.  N=0

8.  Вычислить_градиент

9.  Оптимизация_шага Пустой_указатель Шаг

10. N=N+1

11. Если N<k то переход к шагу 8

12. Сохранить_вектор В2

13. В2=В2-В1

14. ШагParTan=1

15. Оптимизация шага В2 ШагParTan

16. Вычислить_оценку О2

17. Если О1-О2<Точность то переход к шагу 5

Рис. 7. Метод kParTan

Одним из простейших антиовражных методов является метод kParTan. Идея метода состоит в том, чтобы запомнить начальную точку, затем выполнить k шагов оптимизации по методу наискорейшего спуска, затем сделать шаг оптимизации по направлению из начальной точки в конечную. Описание метода приведено на рис 7. На рис 6в приведен один шаг оптимизации по методу 2ParTan. Видно, что после шага вдоль направления из первой точки в третью траектория спуска привела в минимум. К сожалению, это верно только для двумерного случая. В многомерном случае направление kParTan не ведет прямо в точку минимума, но спуск в этом направлении, как правило, приводит в окрестность минимума меньшего радиуса, чем при еще одном шаге метода наискорейшего спуска (см. рис. 6б). Кроме того, следует отметить, что для выполнения третьего шага не потребовалось вычислять градиент, что экономит время при численной оптимизации.

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

Существует большое семейство квазиньютоновских методов, позволяющих на каждом шаге проводить минимизацию в направлении минимума квадратичной формы. Идея этих методов состоит в том, что функция оценки приближается квадратичной формой. Зная квадратичную форму, можно вычислить ее минимум и проводить оптимизацию шага в направлении этого минимума. Одним из наиболее часто используемых методов из семейства одношаговых квазиньютоновских методов является BFGS метод. Этот метод хорошо зарекомендовал себя при обучении нейронных сетей (см. [29]). Подробно ознакомиться с методом BFGS и другими квазиньютоновскими методами можно в работе [48].

Лекции 13, 14. Контрастер

Компонент контрастер предназначен для контрастирования нейронных сетей. Первые работы, посвященные контрастированию (скелетонизации) нейронных сетей появились в начале девяностых годов [64, 323, 340]. Однако, задача контрастирования нейронных сетей не являлась центральной, поскольку упрощение сетей может принести реальную пользу только при реализации обученной нейронной сети в виде электронного (оптоэлектронного) устройства. Только в работе А.Н. Горбаня и Е.М. Миркеса «Логически прозрачные нейронные сети» [83] (более полный вариант работы см. [77]), опубликованной в 1995 году задаче контрастирования нейронных сетей был придан самостоятельный смысл — впервые появилась реальная возможность получать новые явные знания из данных. В связи с тем, что контрастирование нейронных сетей не является достаточно развитой ветвью нейроинформатики, стандарт, приведенный в данной главе, является очень общим.

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

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

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

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

3. Сведение параметров нейронной сети к небольшому набору выделенных значений.

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

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

Далее в этом разделе все перечисленные выше задачи рассмотрены более подробно.

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

Стремление к упрощению архитектуры нейронных сетей возникло из попытки ответить на следующие вопрос: «Сколько нейронов нужно использовать и как они должны быть связаны друг с другом?» При ответе на этот вопрос существует две противоположные точки зрения. Одна из них утверждает, что чем больше нейронов использовать, тем более надежная сеть получится. Сторонники этой позиции ссылаются на пример человеческого мозга. Действительно, чем больше нейронов, тем больше число связей между ними, и тем более сложные задачи способна решить нейронная сеть. Кроме того, если использовать заведомо большее число нейронов, чем необходимо для решения задачи, то нейронная сеть точно обучится. Если же начинать с небольшого числа нейронов, то сеть может оказаться неспособной обучиться решению задачи, и весь процесс придется повторять сначала с большим числом нейронов. Эта точка зрения (чем больше — тем лучше) популярна среди разработчиков нейросетевого программного обеспечения. Так, многие из них как одно из основных достоинств своих программ называют возможность использования любого числа нейронов.

X 1 2 3 4
F(X) 5 4 6 3