Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №23/2009


Теоретические основы информатики

Искусственный интеллект: популярное введение для учителей и школьников

Проектирование персептронов

Теорема существования

Итак, мы убедились в том, что:

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

2. Универсальным инструментом построения такой функции являются нейросетевые технологии.

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

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

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

Сомнения относительно возможностей персептронов развеяли советские математики — академик А.Н. Колмогоров (1903–1987) и академик В.И. Арнольд (род. в 1937). Им удалось доказать, что любая непрерывная функция n переменных f(x1, x2, ... xn) всегда может быть представлена в виде суммы непрерывных функций одного переменного f1(x1) + f2(x1) + ... + fn(xn), гипотеза Гильберта была опровергнута, и нейроинформатике, таким образом, был открыт “зеленый свет”.

В 1987–1991 гг. профессором Калифорнийского университета (США) Р.Хехт-Нильсеном теоремы Арнольда – Колмогорова были переработаны применительно к нейронным сетям. Было доказано, что для любого множества непротиворечивых между собой пар произвольной размерности (Xq, Dq), q = 1, ..., Q, существует двухслойный персептрон с сигмоидными активационными функциями и с конечным числом нейронов, который для каждого входного вектора Xq формирует соответствующий ему выходной вектор Dq.

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

Необходимое количество нейронов в скрытых слоях персептрона можно определить по формуле, являющейся следствием из теорем Арнольда – Колмогорова – Хехт-Нильсена:

,                      (37)

— где Ny — размерность выходного сигнала;

Q — число элементов множества обучающих примеров;

Nw — необходимое число синаптических связей;

Nx — размерность входного сигнала.

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

                                                         (38)

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

Рекомендации по проведению урока

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

С одной из таких трудностей, называемой “Проб­лемой исключающего ИЛИ”, школьники уже столк­нулись на 1-й лабораторной работе.

Задайте школьникам два вопроса для размышлений:

1. Всегда ли можно подобрать и обучить персептрон, обеспечивающий решение любой задачи?

2. Каким образом лучше задавать количество внутренних нейронных слоев и количество нейронов в них? Может быть, как в мозге — 1011 нейронов? Может быть, чем больше, тем лучше?

Ответы на эти вопросы выясняются в результате освоения теоретического материала этого урока.

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

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

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

Многие проблемы Гильберта были решены. Его утверждения-гипотезы подтверждались одна за другой. Но с тринадцатой возникли проблемы. Сенсационной была работа известного советского математика академика А.Н. Колмогорова, опубликованная в 1956 г. В ней он доказал, что всякая непрерывная функция n переменных представима в виде суперпозиции непрерывных функций трех переменных. В следующем, 1957 году его ученик В.И. Арнольд, будучи студентом третьего курса МГУ, доказал, что всякая непрерывная функция трех переменных представима в виде суперпозиций непрерывных функций двух переменных.

Таким образом, по мнению многих авторитетных математиков, 13-я проблема Гильберта была решена. Она была решена студентом 3-го курса МГУ, причем решена с точностью до наоборот.

В 1987 и 1991 гг. профессором Калифорнийского университета (США) Р.Хехт-Нильсеном были опубликованы еще две статьи, в которых теоремы Арнольда – Колмогорова были переработаны применительно к нейронным сетям. В результате была доказана принципиальная возможность построения нейронной сети, выполняющей преобразование, заданное любым обучающим множеством различающихся между собой примеров. И установлено, что такой универсальной нейросетью является двухслойный персептрон, т.е. персептрон с одним скрытым слоем с сигмоидными активационными функциями.

Теорема Арнольда – Колмогорова – Хехт-Нильсена имеет очень важное для практики следствие в виде формулы (37), с помощью которой можно определять необходимое количество синаптических весов нейронной сети. Оценив с помощью этой формулы необходимое число синаптических весов, можно рассчитать необходимое число нейронов в скрытых слоях. Для этого служит формула (38), но прежде чем выписывать ее на доске, озадачьте школьников — нарисуйте персептрон с одним скрытым слоем и предложите школьникам самим придумать формулу для вычисления числа скрытых нейронов N, если известны Nx, Ny и Nw. Тех, кто справится и напишет формулу (38), не забудьте поощрить хорошей оценкой.

А теперь зададимся вопросом. Что было бы, если бы гипотеза 13-й проблемы Гильберта оказалась верной?

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

Но они есть. В настоящее время нейроинформатику можно заносить в Книгу рекордов Гиннесса — она побила все рекорды по количеству приложений в самых разнообразных областях. Жизнь блестяще подтвердила теоремы и доказательства, выполненные в 1956–57 гг. Андреем Николаевичем Колмогоровым и его учеником Владимиром Игоревичем Арнольдом.

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

Проблемы и методы проектирования

Как следует из теорем Арнольда – Колмогорова – Хехт-Нильсена, для построения нейросетевой модели любого сколь угодно сложного объекта достаточно использовать персептрон с одним скрытым слоем сигмоидных нейронов, число которых определяется формулами (37), (38). Однако в практических реализациях персептронов как количество слоев, так и число нейронов в каждом из них часто отличаются от теоретических. Иногда целесообразно использовать персептроны с большим количеством скрытых слоев. Такие персептроны могут иметь меньшие размерности матриц синаптических весов, чем двухслойные персептроны, реализующие то же самое преобразование.

Строгой теории выбора оптимального количества скрытых слоев и нейронов в скрытых слоях пока не существует. На практике чаще всего используются персептроны, имеющие один или два скрытых слоя, причем количество нейронов в скрытых слоях обычно колеблется от до Nx / 2 до 3Nx.

При проектировании персептронов необходимо понимать, что персептрон должен не только правильно реагировать на примеры, на которых он обучен, но и уметь обобщать приобретенные знания, т.е. правильно реагировать на примеры, которых в обучающем множестве примеров не было. Чтобы оценить способность сети к обобщению, помимо обучающего множества примеров L (см. рис. 18), в рассмотрение вводят некоторое количество тестовых примеров, образующих тестирующее множество T. Примеры тестирующего множества относятся к той же самой предметной области, но в процессе обучения не участвуют. После обучения вычисляют среднеквадратичную (или максимальную) ошибку между прогнозом сети Y и желаемым выходом сети D. Причем ошибку, вычисленную на обучающем множестве L, называют ошибкой обучения и обозначают eL, а вычисленную на тестирующем множестве T ошибкой обобщения или тестирования и обозначают eT.

Рис. 18. Деление примеров предметной области на обучающее множество L, тестирующее множество T и подтверждающее множество P

Обратим внимание, что ошибка обучения вычисляется на тех примерах предметной области, на которых сеть обучалась. Ошибка же обобщения вычисляется на примерах той же предметной области, но которые сеть никогда “не видела”. Поэтому ошибки eT и eL имеют разную природу и, соответственно, разный характер поведения. При увеличении числа нейронов скрытых слоев персептрона N ошибка обучения eL обычно падает, тогда как ошибка обобщения eT сначала падает, а затем, начиная с некоторого оптимального значения N = N0, возрастает. Характерные кривые зависимости ошибок обучения и обобщения от числа нейронов скрытых слоев персептрона приведены на рис. 19.

Рис. 19. Характерные зависимости ошибки обучения eи ошибки обобщения (тестирования) eT от количества нейронов скрытых слоев персептрона N

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

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

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

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

3. Число скрытых слоев персептрона согласно теоремам Арнольда – Колмогорова – Хехт-Нильсена должно быть не менее одного, причем нейроны в скрытых слоях должны иметь сигмоидную активационную функцию.

4. Число нейронов в скрытых слоях может быть приближенно оценено по формулам (37), (38), однако его желательно оптимизировать для каждой конкретной задачи либо путем экспериментального построения кривых (рис. 19). При построении кривых рис. 19 используются примеры тестирующего множества T.

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

Вопросы с ответами

1. К какому нежелательному последствию может привести чрезмерное уменьшение количества нейронов в скрытых слоях персептрона?

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

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

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

Лабораторная работа № 8: Моделирование таблицы умножения”1

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

Запустите лабораторную работу № 8. На экране компьютера появится рабочее окно программы “Нейросимулятор” (см. рис. 20).

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

Вы сейчас находитесь в режиме “Проектирование сети”. Задайте школьникам вопрос: Что понимается под проектированием сети?

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

Задайте следующий вопрос: Сколько входов и сколько выходов должен иметь персептрон, моделирующий таблицу умножения?

Ответ: Он должен иметь два входа: — для первого множителя, — для второго множителя, и один выход: — для результата умножения.

Вопрос: Сколько скрытых слоев и сколько нейронов в скрытых слоях должен иметь персептрон? Какие там должны быть активационные функции?

Ответ: Согласно теореме Арнольда – Колмогорова – Хехт-Нильсена, персептрон должен иметь хотя бы один скрытый слой нейронов с сигмоидными активационными функциями. Их количество предварительно может быть оценено с помощью формул (37)–(38), однако потом его желательно уточнить с целью минимизации ошибки обобщения.

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

Находясь в режиме “Проектирование сети”, школьникам следует научиться изменять количество входных и выходных нейронов, количество скрытых слоев, количество нейронов в скрытых слоях, виды и парамет­ры активационных функций. Сделать это несложно, поскольку всякое изменение структуры сети тут же отражается на ее графическом представлении.

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

Еще раз убедившись, что ваш персептрон имеет два входа и один выход, переведите программу в режим “Обучение”, нажав соответствующую закладку в верхней части рабочего окна. Теперь ваша цель состоит в том, чтобы создать множество обучающих примеров. В нашем случае это таблица умножения, которой школьники должны обучить персептрон. Нажимая несколько раз кнопку “Добавить обучающий пример” (на кнопке изображен знак “+”), введите цифры, как показано на рис. 21. Это и есть множество обучающих примеров, в данном случае — таблица умножения на 2 и на 3.

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

Проследите, чтобы школьники ввели таблицу умножения на 2 и на 3 (“забыв” ввести 2 х 5 = 10), как показано на рис. 21, и, прежде чем приступать к обучению персептрона, задайте следующие вопросы:

1. Какие процессы происходят в нейронной сети во время ее обучения?

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

2. В чем состоит цель обучения нейронной сети?

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

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

Ответ: Датчиком случайных чисел.

4. Назовите известные вам способы обучения персептронов.

Ответ: Правила Хебба, дельта-правило, обобщенное дельта-правило, алгоритм обратного распространения ошибки.

5. Каким из этих способов можно обучать созданный нами персептрон?

Ответ: Методом обратного распространения ошибки.

6. Почему именно им?

Ответ: Потому что персептрон имеет скрытый слой нейронов.

Рис. 21. Введено обучающее множество примеров - таблица умножения
на 2 и на 3

7. Какие параметры требуется задать для работы алгоритма обратного распространения ошибки?

Ответ: Коэффициент скорости обучения, количество эпох обучения.

Теперь обратите внимание школьников на то, что “по умолчанию” в программе “Нейросимулятор” (см. рис. 21) выбран алгоритм обратного распространения ошибки, что коэффициент скорости обучения установлен 0,08, а количество эпох обучения — 300, что начальные значения синаптических весов (инициализация весов) заданы случайно по стандартному закону распределения.

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

Рис. 22. Графическое отображение процесса обучения сети

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

Если ошибка обучения не будет снижаться, нажмите кнопку “Закрыть” и начните процесс обучения заново. Добившись снижения максимальной ошибки обучения, например, до 0,01, закройте графическое изображение (нажатием клавиши “Закрыть”) и переведите программу в режим “Проверка”. Нажмите кнопку “Скопировать из обучающих примеров”, а затем — кнопку “Вычислить”. В появившемся окне (рис. 23) вы можете сравнить желаемые выходы се-
ти d1 с тем, что насчитал обученный вами персептрон: y1. Например, как видно из первой строки, вместо того чтобы выдать 2 x 2 = 2, персептрон ответил: 2 x 1 = 2,0901. Ошибка обучения eL на этом примере составила: |2,0902 - 2| = 0,0902, что в процентах (относительно максимального значения выхода сети max(d1) = 27) составляет: .

Аналогично можно подсчитать ошибку обучения на втором примере:

,

затем на третьем и т.д., а затем выбрать максимальную по всем примерам относительную ошибку обучения персептрона. Значение этой ошибки можно увидеть в нижней части рабочего окна: 1,05%.

Рис. 23. В режиме "Проверка" можно сравнить желаемые выходы сети d1 с тем, что насчитал персептрон y1

После того как вы нашли максимальную ошибку обучения персептрона, нажмите клавишу “Сбросить примеры”, а затем — клавишу “Добавить строку”, введите пример, которого не было в обучающем множестве: 2 x 5 = 10, после чего нажмите кнопку “Вычислить”.

Ответ изображен на рис. 24. Ошибка обобщения составила: 0,93%.

Рис. 24. Сеть ответила, что дважды пять будет примерно 9,9074

А теперь попробуем добиться более хороших результатов, воспользовавшись следствием из теоремы Арнольда – Колмогорова – Хехт-Нильсена (формулы (37), (38)). Подставляя в формулу (37) число входных нейронов Nx = 2, число выходных нейронов Ny = 1 и количество обучающих примеров Q = 18, получим оценку необходимого количества синаптических связей нейросети:

.

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

.

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

.

Вернувшись в режим “Проектирование сети”, увеличим количество нейронов скрытого слоя до 7 (рис. 25). Затем, выполняя обучение сети и проверку ее прогнозирующих свойств, получаем значительно более хороший результат, приведенный на рис. 26 и 27, из которых видно, что ошибка обучения сети eL снизилась до 0,33%, а ошибка обобщения снизилась до 0,11%.

Рис. 25. Структура сети с семью нейронами скрытого слоя

Рис. 26. Результат работы сети с семью нейронами скрытого слоя. Ошибка обучения составила: eL= 0,33%

И в заключение попросите школьников нажать кнопку “Вычислить и округлить”. Результат будет следующим: 2 x 5 = 10,0.

Рис. 27. Результат работы сети с семью нейронами скрытого слоя. Ошибка обобщения составила: eT= 0,11%

А теперь спросите школьников:

— Сколько времени они сами потратили для того, чтобы научиться таблице умножения?

— Может ли ребенок, которого обучили всей таблице умножения за исключением 2 x 5 = 10, самостоятельно догадаться, сколько будет дважды пять?

— Можно ли утверждать, что интеллект программы “Нейросимулятор” оказался сильнее интеллекта ребенка, усваивающего таблицу умножения?

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

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

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

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

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

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

Оптимизацию нейронных сетей удобно выполнять с использованием приложения Microsoft Excel. Для обмена данными с Microsoft Excel в режимах “Обучение”, “Проверка” и “Прогноз”2 имеются кнопки “Загрузить из Excel-файла” и “Отправить в Excel-файл”. Кроме того, в режимах “Проверка” и “Прогноз” имеется кнопка “Скопировать из обучающих примеров”, нажатие которой позволяет скопировать в рабочее окно входные векторы (Xq) обучающих примеров, которые уже были введены в режиме “Обучение”.

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

Лабораторная работа № 9: "Моделирование таблиц умножения и сложения"

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

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

Теперь школьникам можно предложить запустить нейросимулятор (открыв лабораторную работу № 8) и самостоятельно спроектировать и обучить необходимый для выполнения задания персептрон.

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

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

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

Лабораторная работа № 10: "Прогнозирование выборов президента страны"

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

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

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

Теперь школьникам предлагается аналогичное задание — создать нейросетевую прогностическую систему и повторить прогноз результата президентских выборов 2008 года, однако для обучения нейросети предлагается использовать не зарубежный, а отечественный опыт президентских выборов России за период с 1991 по 2004 гг.

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

x1 — пол претендента в президенты России, который будем кодировать с помощью цифр: 1 — мужской, 2 — женский;

x2 — возраст претендента;

x3 — от какой партии баллотируется: 1 — от правящей, т.е. от партии, набравшей более 5% голосов; 2 — от всех остальных партий;

x4 — место рождения: 1 — Москва, Санкт-Петербург; 2 — прочие города России; 3 — российские села, деревни; 4 — зарубежье;

x5 — статус: 1 — действующий президент; 2 — преемник президента; 3 — остальные;

x6 — сфера деятельности: 1 — спорт, культура, медицина; 2 — военная деятельность; 3 — экономика; 4 — политика;

x7 — семейное положение: 1 — не женат/не замужем; 2 — разведен/разведена; 3 — женат/замужем;

x8 — известность: 1 — неизвестный; 2 — известный; 3 — очень известный;

d — результат голосований: 1 — победа; 0 — поражение.

Таблица 1

Школьникам можно дать задание собрать необходимую для обучения персептрона информацию о президентских выборах в России из сети Интернет (например, с сайтов www.wikipedia.ru   и www.peoples.ru) и выполнить все задания лабораторной работы самостоятельно.

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

В табл. 11 приведены данные о претендентах и результаты президентских выборов в России за период с 1991 по 2004 гг., а в табл. 12 — аналогичные данные по выборам 2008 г. Примеры табл. 11 мы будем использовать как обучающее множество, а табл. 12 — как тестирующее.

Теперь задайте школьникам вопрос: Что понимается под проектированием нейронной сети?

Ответ: Спроектировать нейронную сеть — это значит определить количество входов, количество выходов, число скрытых слоев, число нейронов в скрытых слоях, типы активационных функций.

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

Ответ: В табл. 11 и 12 подобраны примеры обучающего и тестирующего множества, в которых парамет­ры x1, x2, …, x8 характеризуют претендента, и от них зависит исход голосований, задаваемый парамет­ром d. Поэтому параметры x1, x2, …, x8 являются входными, а параметр d — выходным. Следовательно, нейронная сеть должна иметь 8 входов и 1 выход.

Вопрос: Сколько в проектируемой нейронной сети должно быть скрытых слоев, сколько нейронов в скрытых слоях и какими должны быть активационные функции нейронов?

Ответ: Согласно теореме Арнольда – Колмогорова – Хехт-Нильсена, персептрон должен иметь хотя бы один скрытый слой нейронов с сигмоидными активационными функциями. Количество нейронов в скрытом слое оценивается с помощью формул (37), (38). Учитывая, что в нашем случае число входов Nx = 8, число выходов Ny = 1, количество примеров обучающего множества Q = 33, согласно первой из этих двух формул количество сил синаптических связей нейросети должно лежать в интервале:

.

Применяя вторую формулу, получаем оценку количества нейронов в скрытом слое:

.

Для начала работы берем среднее значение из этого интервала:

.

Теперь попросите школьников открыть лабораторную работу № 8 и, запустив программу “Нейросимулятор”, в режиме “Проектирование сети” создать нейронную сеть требуемой структуры, как показано на рис. 28.

Рис. 28. Структура нейросети, предназначенной для прогнозирования результатов выборов Президента России

Переключив “Нейросимулятор” в режим “Обучение”, попросите школьников ввести примеры обучающего множества из табл. 11. Это можно сделать вручную, многократно используя кнопку “Добавить строку”, либо с помощью кнопки “Загрузить из Excel-файла” считать информацию из предварительно подготовленного Excel-файла.

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

Таблица 12

Теперь нажмите кнопку “Сбросить примеры” и попросите школьников ввести тестирующее множество примеров из табл. 12. Сделать это можно вручную, многократно используя кнопку “Добавить строку”, либо с помощью кнопки “Загрузить из Excel-файла” считать информацию из предварительно подготовленного Excel-файла. Нажав после этого кнопку “Вычислить”, сравните желаемые выходы сети d1 с прогнозными y1.

Рис. 29. Проверка на тестирующем множестве:: прогноз президентских выборов 2008 года

Глядя на рис. 29, где приведены результаты вычислений, и вспоминая, что первые три строки в тестирующем множестве соответствуют параметрам политических деятелей: А.Богданова, В.Жириновского и Г.Зюганова, — а последняя строка соответствует параметрам Д.Медведева, и учитывая, что цифрой “1” мы кодировали победу, а цифрой “0” — поражение, можно заключить, что созданная нами нейро­сетевая прогностическая система предсказывает победу Д.Медведеву и поражение А.Богданову, В.Жириновскому и Г.Зюганову, что и произошло в действительности на президентских выборах 2008 г. Отметим, что, как видно из рис. 29, погрешность e обобщения сети составила 11,95%.

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

Рис. 30. Значения рейтингов претендентов на президентских выборах 2008 г.:

1 — А. Богданов,

2 — В.Жириновский,

3 — Г.Зюганов,

4 — Д.Медведев

Теперь, после того как мы убедились в том, что нейронная сеть правильно выполнила прогноз, а значит, выявила и усвоила закономерности предметной области, попробуем использовать нашу модель в практических целях. Выберем кого-нибудь из политиков, например В.Жириновского, и узнаем, как будет изменяться его рейтинг в зависимости от возраста. Для этого переведем программу “Нейросимулятор” в режим “Прогноз” и введем параметры интересующего нас политика. Причем сделаем это несколько раз, создав несколько строк. В первой строке оставим возраст В.Жириновского таким, каким он был на момент выборов 2008 года, а в каждой последующей строке увеличим его возраст на 1 год, как показано на рис. 31. Напомним, что выполнить эту операцию можно путем нажатия кнопки “Добавить пример” или с помощью загрузки из заранее приготовленного Excel-файла.

Рис. 31. Программа "Нейросимулятор" в режиме "Прогноз" с введенныит параметрами В.Жириновского. Его возраст (x2) увеличивается в каждой новой строке на 1 год

Нажав кнопку “Вычислить”, в столбце y1 получаем прогноз сети — зависимость политического рейтинга В.Жириновского от его возраста (рис. 32).

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

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

Выясним, как можно повлиять на рейтинг В.Жириновского путем изменения его параметров. Для этого в режиме “Прогнозирование” введем строки, содержащие параметры В.Жириновского. Первую строку оставим без изменения. Начиная со второй строки, будем поочередно изменять параметры, оставляя неизменным лишь возраст. Как показано на рис. 34, во второй строке изменен параметр x1, в третьей строке изменен параметр x3, в четвертой, пятой и шестой строках изменен параметр x4 и т.д.

Нажимая кнопку “Вычислить”, получаем прогноз (см. рис. 35), результаты которого представлены в виде гистограммы на рис. 36.

Рис. 32. Прогноз сети: рейтинг В.Жириновского в зависимости от его возраста

Рис. 33. Зависимость рейтинга В,Жириновского от его возраста

Рис. 34. Нейросимулятор, подготовленный для прогнозирования рейтинга В.Жириновского при варьировании его параметров

Рис. 35. Прогноз рейтинга В.Жириновского при варьировании его параметров

Рис. 36. Прогноз рейтинга В.Жириновского при варьировании его параметров

1 — исходное состояние: фактический рейтинг,

2 — такой рейтинг был бы у В.Жириновского, если бы он был женщиной,

3 — если бы он баллотировался от партии, не имеющей места в парламенте,

4 — если бы он родился не за рубежов, а в Москве или Санкт-Петербурге,

5 — если бы он родился в других городах России,

6 — если бы он родился в российском селе или деревне,

7 — если бы он был преемником Президента России,

8 — если бы он был Президентом России,

9 — если бы он сменил деятельность на спорт, культуру или медицину,

10 — если бы он сменил деятельность на военную,

11 — если бы он сменил деятельность на экономическую,

12 — если бы он развелся,

13 — если бы он не имел известности

Итак, анализируя полученную картину, можно сделать заключение, что серьезнейшим фактором, снижающим рейтинг В.Жириновского, является то, что он родился за рубежом. Единственный шанс победить на выборах — это стать преемником президента или самим президентом, что нереально. Смена партии, вида деятельности и семейного положения не приведут к заметному изменению его рейтинга. Однако не будем забывать, что, согласно данным рис. 33,
с каждым годом рейтинг В.Жириновского будет повышаться, поэтому шансы стать Президентом России в будущем у него все-таки есть.

Зададимся теперь вопросом: Насколько надежны полученные в результате нейропрогноза выводы?

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

В нашей математической модели учтены 8 входных параметров, и она проверена на четырех тестовых примерах (см. рис. 29 и 30): на выборах 2008 года она правильно (с максимальной погрешностью 11,95%) предсказала победу Д.Медведеву и поражение А.Богданову, В.Жириновскому и Г.Зюганову. Таким образом, мы убедились, что наша модель правильно усвоила закономерности предметной области и у нас, казалось бы, нет причин не доверять результатам ее прогнозирования. Тем не менее надо отдавать себе отчет в том, что на самом деле результат голосований зависит от гораздо большего количества различных факторов, что для более ответственных прогнозов следует увеличить объемы обучающего и тестирующего множества примеров.

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

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

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

Уважемые коллеги! Напоминаем, что скачать лабораторные работы можно с сайта http://www.LbAI.ru


1 Напомним, что скачать лабораторные работы можно с сайта http://www.LbAI.ru

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

Л.. Н.. Ясницкий

TopList