SoftCraft
разноликое программирование

Отправная точка
Программирование
Windows API
Автоматы
Нейроинформатика
Парадигмы
Параллелизм
Проектирование
Теория
Техника кодирования
Трансляторы
Учебный процесс
Прочие вопросы

Разное

Беллетристика
Брюзжалки
Цели и задачи
Об авторе


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


Оглавление | Введение | П1 | П2 | П3 | Литература
Лекции: 1, 2-3, 4-6, 7.1, 7.2, 8, 9, 10, 11.1, 11.2-12, 13-14, 15-16


Приложение 1. Описание пакета программ CLAB (С.Е. Гилев)

Данное приложение является документацией к пакету программ CLAB, разработанной автором программы С.Е. Гилевым.

Описание пакета

Общее описание

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

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

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

Нейросеть представляет собой набор нейронов и синапсов. Через синапсы нейрон может получать сигналы от других нейронов, а также входные сигналы, если данный нейрон является входным. Сигналы, полученные нейроном от всех входящих в него синапсов, суммируются и преобразуются в выходной сигнал согласно характеристической функции (в пакете CLAB она имеет вид Y(x)=x/(c+abs(x))). Этот сигнал в следующий момент времени подается на все выходящие из нейрона синапсы.

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

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

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

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

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

Ptn-файл

Для удобства работы с пакетом создается ptn-файл. Он представляет собой текстовый файл с расширением .ptn.

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

При вводе имени сигнала вначале указывается количество входных сигналов, объединенных этим именем. Его можно указать равным 0. В этом случае при работе редактора Editor, имеющегося в пакете CLAB, соответствующая строка с именем будет выводиться на экран, но ввода входного сигнала редактор не потребует. Это позволяет вводить комментарии или пользоваться длинными именами, не входящими в одну строку.

В ptn-файле указываются также имена двух классов - сначала «красного», а затем «синего». Каждое имя должно содержать не более 10 символов.

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

В пакете CLAB имеется средство для обучения нейросети решению задач с такими «дырами» в векторе входных сигналов – так называемый «дырокол». В этом случае следует имена таких входных сигналов пометить в ptn-файле звездочками.

Задачник

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

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

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

Кроме входных сигналов требуется указать класс примера. Для этого с клавиатуры вводится буква R для "красного" или L для "синего" примера. Класс текущего примера указывается во 2-й строке экрана в виде имени этого класса, заданного в ptn-файле. Если класс примера не указан, то Editor не включит его в задачник.

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

Задачник должен быть организован по страницам. В начале каждой страницы в отдельной строке следует указать количество сначала "красных", потом "синих" примеров, расположенных на этой странице. Каждое из этих чисел должно быть не больше 20. После каждого примера в отдельной строке вводится буква R или L в зависимости от класса примера.

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

Создание нейросети

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

SIZE - количество нейронов сети;

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

CH - параметр характеристической функции;

STEP - начальный шаг движения по антиградиенту;

HIGH и LOW - параметры, определяющие уровни начальных значений весов синапсов.

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

Очевидно, что значение параметра SIZE должно быть не меньше числа входных сигналов. Кроме того, оно должно быть не больше 64. Опыт показывает, что лучше задавать его по возможности меньшим. Можно порекомендовать задавать значение параметра SIZE равным сумме числа входных и выходных нейронов (т.е. на 2 большим, чем число входных сигналов).

Значение параметра TIME также лучше задавать по возможности меньшим. Можно задать его равным 3, а в случае необходимости увеличить.

Для параметра CH мы рекомендуем значения от 0,1 до 0,8. Следует заметить, что большие значения этого параметра требуют, как правило, больше времени на обучение, но при этом улучшаются предсказательные возможности нейросети. Другими словами, при малых значениях характеристики нейросеть легко "натаскивается" выдавать правильные ответы для входных векторов, встречавшихся ей в процессе обучения, но способность к экстраполяции на область примеров не включенных в задачник при этом хуже.

Значение параметра STEP можно задавать равным 0,005. В процессе счета программа сама подберет для него нужное значение.

Начальные значения весов синапсов генерируются датчиком псевдослучайных чисел в диапазоне от LOW до HIGH. Рекомендуется задавать значение этих параметров близким к значению параметра CH.

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

Для обучения нейросети в пакете CLAB содержится программа teacher. Вначале она предлагает пользователю указать имя файла, содержащего карту синапсов, имя ptn-файла и имя файла задачника. Затем программа переходит непосредственно к обучению нейросети на примерах задачника.

Выходные сигналы могут принимать значения в интервале (-1,1). Они интерпретируются как координаты точки внутри квадрата [-1,1]*[-1,1]. Как только программа Teacher приступает к обучению, этот квадрат высвечивается на левой половине экрана. На нем крестиками изображаются ответы нейросети. Для каждого примера координаты крестика соответствуют выходным сигналам нейросети. Цвет крестика (красный либо синий) показывает класс этого примера, указанный в задачнике.

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

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

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

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

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

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

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

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

В случаях, когда целевая функция достигает локального минимума, возникают тупиковые ситуации - на протяжении многих циклов подряд оценка практически не изменяется. Для выхода из таких ситуаций в пакете CLAB имеется процедура BUMP. Она вносит в карту синапсов случайный вклад, величина которого, называемая уровнем BUMP'а, задается при вызове процедуры.

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

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

При обучении сети пользователь может столкнуться с тупиковыми ситуациями, когда в верхней части экрана появляются сообщения "zero step" или "infinite step". В этих случаях можно порекомендовать следующие действия: применить процедуру BUMP; изменить положение курсоров; изменить веса примеров; проверить, нет ли в задачнике противоречивых примеров, например, примеров с одинаковыми входными сигналами, но относящихся к разным классам. Если в результате всех этих действий не удалось добиться никаких положительных изменений, то придется вернуться назад и вновь начать обучение сети.

При обучении нейросети можно воспользоваться "дыроколом". Это следует делать в тех случаях, когда нейросети будут предъявляться для классификации объекты, у которых информация о некоторых входных сигналах отсутствует. Имена таких входных сигналов должны быть помечены звездочками в ptn-файле. "Дырокол" позволяет заменять у примеров задачника сигналы на этих входах нулевыми значениями. При этом для обучения предъявляются все варианты расстановки "дыр" по отмеченным входам для каждого примера. Оценка примера представляется суммой оценок по всем вариантам. Наблюдая за процессом обучения, можно заметить определенные закономерности. Распознавать часть примеров нейросеть обучается быстро. При распознавании другой части примеров нейросеть может допускать ошибки, т.е. выходные сигналы нейросети для этих примеров не всегда соответствуют указанным в задачнике. Среди последних могут быть примеры, при распознавании которых нейросеть ошибается почти постоянно. Наличие таких примеров может стать предметом специального исследования. Чтобы проиллюстрировать это, рассмотрим один конкретный пример.

Рассматриваемые ниже эксперименты были проведены американским исследователем Кори Ваксманом и подробно описаны в его работе (см. приложение).

Пакет CLAB использовался для решения задачи предсказания результата выборов президента США. Входные сигналы в этой задаче представлялись в виде ответов на 12 различных вопросов. Эти вопросы касаются экономической и политической ситуации и социальных условий во время выборов, а также личностей кандидатов на пост президента. Выходные сигналы показывали, к какой партии принадлежал победитель выборов - к партии, которая является правящей в настоящий момент, или к оппозиционной. В качестве обучающей выборки использовались результаты выборов с 1860 по 1980 годы.

В ходе обучения было обнаружено, что хуже всего нейросеть обучалась предсказывать результаты выборов 1892, 1880 и 1896 годов.

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

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

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

Классификация объектов

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

В пакете CLAB для классификации служит программа tester. Сначала она предлагает пользователю выбрать имя файла, содержащего карту синапсов, и имя ptn-файла. Затем программа генерирует нулевые значения для входных сигналов и классифицирует такой объект. На экране, как и всякий раз после тестирования, появляется такая же картинка, как при работе программы Teacher, - крестик, соответствующий выходным сигналам, и оценки. Поскольку пример рассматривается один, а высвечиваются две оценки, поясним, как их трактовать. Красным цветом высвечивается оценка, соответствующая ситуации, в которой данный пример считается принадлежащим к классу "красных", синим цветом - к классу синих.

В нижней части экрана высвечивается указание "press any key" ("нажать любую клавишу"). После того, как пользователь нажмет любую клавишу, программа предложит ввести значения входных сигналов. При этом, как и при составлении задачника, на экране высвечиваются окно NEURON с именами входных сигналов и окно VALUE с их значениями. Кроме этого, высвечиваются еще два окна: одно с надписью "to red" ("к красным"), другое - "to blue" ("к синим"). Они предназначены для так называемых улучшателей. О том, что они собой представляют и для чего нужны, будет подробно рассказано дальше.

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

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

Дополнительные возможности нейросети

Как было сказано выше, после классификации объекта на экране наряду с другой информацией высвечиваются два окна - "to red" и "to blue". Каждому входному сигналу ставится в соответствие по числу в каждом из этих окон. Эти числа могут принимать значения в интервале [-1,1]. Таким образом, в этих двух окнах выводятся на экран два вектора. Каждый из них имеет такую же длину, как и вектор входных сигналов. Эти векторы называются улучшателями и представляют собой антиградиенты по входным сигналам. Изменение входных сигналов по указанному таким вектором направлению приводит к улучшению соответствующей оценки. Если изменить значения входных сигналов в направлении, указанном в окне "to red", то улучшится оценка, высвечиваемая красным цветом. Если же изменить значения входных сигналов согласно окну "to blue", то улучшится "синяя" оценка.

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

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

Знак компоненты улучшателя показывает, в какую сторону следует изменить значение соответствующего входного сигнала. Знак "+" означает увеличить, "-" - уменьшить.

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

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

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

Очевидно, следует ознакомиться с сортировкой вопросов, которая получена при помощи улучшателя соответствующего цвета (т.к. в демонстрационном примере правящей партии сопоставлен красный цвет, то это улучшатель из окна "to red").

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

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

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

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

Этот пример наглядно показывает, насколько полезной является возможность выяснить, какие вопросы более важны для достижения заданной цели.

Инструкции пользователю по работе с пакетом CLAB

Инсталляция

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

Для размещения пакета рекомендуется создать директорию, например, с именем CLAB. В эту директорию нужно скопировать с дискеты файл clab.exe. Поскольку в этом файле пакет находится в сжатом виде, его нужно разархивировать. Для этого следует запустить файл на выполнение, т.е. набрать имя clab и нажать клавишу "Enter". В результате в директории CLAB, кроме файла clab.exe, появятся следующие файлы:

clab.doc

editor.exe

netgener.exe

teacher.exe

tester.exe

clab.fnt

elect.pbl

elect.ptn

В файле clab.doc содержится текст настоящей документации. Файлы с расширением .exe содержат рабочие программы пакета. В файлах elect.pbl и elect.ptn содержатся задачник и ptn-файл для демонстрационной задачи. Файл clab.fnt предназначен для загрузки экранного шрифта в графическом режиме.

После этого можно начинать работу с пакетом CLAB.

Файл clab.exe для экономии места можно удалить из директории CLAB, оставив его на дискете.

Если пользователь собирается работать с пакетом не в директории CLAB, а в какой-либо другой директории, то ему следует включить в файл autoexec.bat в оператор path дорожку к созданной директории CLAB.

Обучение работе с пакетом CLAB на демонстрационной задаче

Работа с пакетом CLAB состоит из следующих шагов:

1) создание ptn-файла;

2) создание задачника;

3) создание нейросети;

4) обучение нейросети;

5) тестирование.

Для этих шагов (кроме первого) в пакете имеются соответствующие программы. Чтобы помочь пользователю приобрести основные навыки работы с этими программами, в пакет включена демонстрационная задача «Выборы президента США».

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

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

Чтобы создать нейросеть, нужно запустить программу netgener. Эта программа позволяет создать файл для хранения карты синапсов (назовем его test.map) и ввести значения параметров нейросети. Условимся, что в нашей задаче создавать этот файл будем в текущей директории.

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

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

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

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

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

Для ввода имени файла следует нажать клавишу "Enter".

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

Тем самым пользователю предлагается указать количество нейронов в создаваемой сети. Число 64 во второй строке - это максимальное допустимое количество нейронов.

Для рассматриваемой задачи рекомендуем указать число нейронов, равное 14. Это число есть сумма 12 входных нейронов (по числу входных сигналов) и 2 выходных нейронов.

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

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

Значение параметра TIME указывает число тактов времени от получения входных сигналов до выдачи результата. Число 10 является максимально возможным значением этого параметра. Для рассматриваемой задачи следует ввести значение параметра TIME, равное 3.

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

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

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

Далее следует сообщение

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

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

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

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

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

Далее программа просит указать имя ptn-файла. На экране высвечиваются надпись "Choose pattern File" и имена файлов с расширением .ptn, содержащихся в текущей директории.

Для нашей задачи нужно указать файл elect.ptn. Выбор ptn-файла, а затем и выбор задачника осуществляются точно так же, как и выбор файла с картой синапсов.

Для выбора задачника на экране высвечиваются надпись "Choose problembook" и имена файлов с расширением .pbl из текущей директории.

Для данной задачи нужно указать файл с именем elect.pbl.

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

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

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

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

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

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

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

Теперь, наконец, можно приступать к тестированию. Оно для рассматриваемой задачи заключается в следующем. Нужно ответить на 12 вопросов. Ответы кодируются следующим образом: 1 - да, -1 - нет, 0 - не знаю. Обученная нейросеть определит, кандидат от какой партии одержит победу в выборах. Правящей партии соответствует красный цвет, оппозиционной - синий.

Ответы на вопросы можно выбрать произвольно, но гораздо интереснее протестировать реальную ситуацию, например, определить, кто победит в выборах 1992 года - Буш или Клинтон.

Для тестирования нужно запустить программу tester. Программа предложит указать имя файла с картой синапсов, а затем имя ptn-файла. Это делается точно так же, как и при работе с программой teacher, поэтому здесь мы не будем описывать эту процедуру.

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

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

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

После нажатия любой клавиши на экране, как было рассказано ранее, высвечиваются окно NEURON с именами входных сигналов (они считываются из ptn-файла), окно VALUE со значениями входных сигналов и два окна с улучшателями ("to red" и "to blue").


Neuron Value to red to blue
Press F1 for Help      
1 - 'Да',  -1  - 'Нет',   0  - 'Не знаю'.      
Правящая партия была у власти более 1 срока ? 1.000 -1.000 1.000
Правящая партия получила больше 50% на прошлых выборах ? 1.000 0.651 -0.651
В год выборов была активна третья партия ? 1.000 -0.425 0.425
Была серьезная конкуренция при выдвижении от правящей партии ? -1.000 -0.586 0.586
Кандидат от правящей партии был президентом в год выборов ? 1.000 0.116 -0.116
Был ли год выборов временем спада или депрессии ? -1.000 -0.250 0.250
Был ли рост среднего нац. валового продукта на душу населения > 2.1% ? 0.000 0.530 -0.530
Произвел ли правящий президент существенные изменения в политике ? 1.000 0.404 -0.404
Во время правления были существенные социальные волнения ? 1.000 -0.549 0.549
Администрация правящей партии виновна в серьезной ошибке/скандале ? -1.000 -0.280 0.280
Кандидат правящей партии - национальный герой? -1.000 0.184 -0.184
Кандидат оппозиционной партии - национальный герой ? -1.000 -0.323 0.323

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

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

Выход из режима редактирования происходит автоматически после того, как введен самый последний входной сигнал. Если нужно выйти из режима редактирования раньше, то следует нажать клавишу "Esc". После выхода из режима редактирования мигающий курсор исчезнет. Заметим, что редактировать в программе tester можно только содержимое окна VALUE.

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

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

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

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

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

При редактировании значений входных сигналов используются клавиши с цифрами от 0 до 9, а также клавиши "+", "-", "BkSp" и "Del". Пользоваться ими следует точно так же, как и при работе с любым стандартным редактором.

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

Для перехода из режима редактирования в режим прсмотра используется клавиша "Esc", для тестирования - клавиша "пробел".

Чтобы вернуться к работе после просмотра таблицы Help, достаточно нажать любую клавишу. Заметим, что получить Help, нажав клавишу "F1", можно только в режиме просмотра значений входных сигналов.

Для выхода из программы tester нужно одновременно нажать клавиши "Ctrl" и "Q".

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

Инструкции по созданию ptn-файла

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

Поясним, как составляется ptn-файл. В первой строке первые 10 символов занимает имя класса "красных", следующие 10 символов - имя класса "синих".

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

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

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

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

Указывая число входных нейронов для каждого имени, мы тем самым задаем общее число входных нейронов для программ пакета CLAB.

В качестве примера ptn-файла пользователь может посмотреть ptn-файл для демонстрационной задачи, который содержится в файле elect.ptn.

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

Инструкции по выбору файлов и директорий при работе с пакетом CLAB

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

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

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

Для того, чтобы перейти на другой диск, нужно нажать клавишу "Esc". После этого на экране появится сообщение

 

No file selected

Try again ?

Y.

 

Если после этого нажать клавишу с буквой Y или клавишу "Enter", то программа предложит указать нужный диск, и на экране появится сообщение

 

Enter drive letter.

 

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

Если после сообщения

 

No file selected

Try again ?

Y

 

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

Сделаем одно важное замечание. Обычно файлам, которые создаются для работы с пакетом CLAB, присваиваются имена с соответствующими расширениями (для ptn-файла это расширение .ptn, для файла с задачником - .pbl, для файла с картой синапсов - .map). Однако файлы могут иметь имена с произвольными расширениями.

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

Инструкции по работе с программой editor.

Программа editor позволяет редактировать имеющийся задачник либо составлять новый. В начале работы данная программа предлагает пользователю выбрать ptn-файл. В случае отказа от его выбора программа создаст стандартный ptn-файл.

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

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

Во второй строке экрана высвечивается имя класса этого примера. Напомним, что имена классов задаются в ptn-файле. В стандартном ptn-файле классам присваиваются имена "red" и "blue". Если данный пример относится к классу "красных", то имя этого класса будет высвечиваться красными буквами на левом краю строки. Если же пример относится к классу "синих", то имя класса будет высвечиваться синими буквами на правом краю строки. Если в задачнике, кроме класса данного примера, содержался какой-либо комментарий, то этот комментарий также будет высвечиваться на экране рядом с именем класса (например, в файле elect.pbl для демонстрационной задачи в качестве комментария для каждого примера указан год выборов). В правом верхнем углу экрана высвечивается номер страницы задачника. О том, как редактировать задачник, будет рассказано немного ниже.

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

 

Enter the Problembook file name.

 

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

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

На экране, как и при редактировании старого задачника, высвечиваются окно NEURON и окно VALUE. В окне VALUE высвечиваются значения входных сигналов для "пустого" примера, т.е. нули. Поскольку класс этого примера неопределен, имя класса не высвечивается.

Дальнейшие действия пользователя одинаковы как при редактировании старого задачника, так и при составлении нового.

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

При составлении задачника следует помнить, что для каждого примера должна быть указана его принадлежность к одному из классов, иначе программа editor не включит этот пример в задачник. Для того, чтобы указать класс нового примера или изменить класс старого, нужно нажать клавишу с буквой R (для "красных") или с буквой L (для "синих"). После этого можно набрать комментарий к этому примеру, содержащий не более 20 символов (например, в качестве комментария к примеру можно использовать номер этого примера). Далее следует нажать клавишу "Enter". После этого во второй строке будет высвечиваться имя указанного класса с комментарием, если он был введен.

Для перехода от одного примера к другому в пределах текущей страницы используются клавиши "PgUp", "PgDn", "Home" и "End". Если нажать клавишу "PgUp", то на экране будут высвечиваться значения входных сигналов и имя класса для предыдущего примера, если "PgDn" - то для следующего. Клавиши "Home" и "End" позволяют перейти соответственно к первому или последнему примеру с данной страницы.

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

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

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

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

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

Чтобы перейти от текущей страницы задачника к предыдущей или следующей странице, нужно одновременно нажать клавиши "Ctrl" и "PgUp" или "Ctrl" и "PgDn" соответственно. Для перехода к первой странице задачника нужно одновременно нажать клавиши "Ctrl" и "Home", а для перехода к последней - клавиши "Ctrl" и "End".

Если в процессе составления или редактирования задачника возникнет необходимость сохранить текущее состояние задачника, то для этого нужно нажать клавишу "F2".

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

 

Problembook changed

Save it? [Y].

 

Если после этого нажать клавишу с буквой Y или клавишу "Enter", то в файле будет сохраняться отредактированный задачник. Если же нажать клавишу с буквой N, то файл не изменится, т.е. останется таким же, каким он был сохранен программой editor в последний раз.

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

Для удобства пользователя в программе editor имеется Help. Чтобы получить его на экране, нужно нажать клавишу "F1". В нем кратко перечислены описанные выше возможности программы editor. Для выхода из Help'а достаточно нажать любую клавишу.

Составление задачника без использования программы editor

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

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

Далее должны следовать примеры. Каждый пример занимает две строки. В первой строке указываются через пробел значения входных сигналов. Во второй строке буквой R или L указывается класс этого примера. Кроме этого, во второй строке можно ввести комментарий к данному примеру. Текст комментария может иметь произвольную длину, но следует помнить, что при работе с программой editor на экран будут выводиться только первые 20 символов комментария.

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

Инструкции по работе с программой netgener

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

Заметим, что если при выборе директории нажать клавишу "Esc", а затем клавишу с буквой N, т.е. отказаться от выбора директории, то произойдет выход из программы netgener без генерации нейросети.

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

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

Инструкции по работе с программой teacher

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

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

Для того, чтобы прервать процесс обучения, нужно нажать любую клавишу. После этого в нижней части экрана высвечивается надпись "Wait a bit, please!" (Подождите, пожалуйста!). Можно подождать, когда вместо нее загорится надпись "Change task" (Смените задачу), и затем нажимать нужную клавишу. Можно и не дожидаться смены надписи, а нажать нужную клавишу сразу. В этом случае в дальнейшем будет использоваться карта синапсов, обученная на предыдущем цикле, а градиент, насчитанный частично или полностью в текущем цикле, игнорируется.

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

Если нажать клавишу "F1", то на экране появится Help для программы teacher. В нем перечислены клавиши, которые можно использовать для вмешательства в процесс обучения, и даны краткие пояснения. Чтобы продолжить обучение после просмотра Help'а, достаточно нажать любую клавишу.

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

Чтобы переместить курсоры, нужно нажать клавишу "F3". После этого при помощи клавиш со стрелками "вверх", "вниз", "вправо" и "влево" можно передвигать курсоры в соответствующих этим стрелкам направлениях. Первым можно передвигать курсор, соответствующий текущему примеру. Если в момент прерывания насчитывалась оценка для "красного" примера, то можно передвигать красный курсор, если для "синего" примера, то синий. После того, как этот курсор установлен на нужное место, можно приступать к перемещению другого курсора. Для этого нужно нажать клавишу "Tab". Для того, чтобы продолжить процесс обучения после перемещения курсоров, нужно нажать клавишу "Enter".

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

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

Для того, чтобы применить процедуру BUMP, нужно нажать клавишу "F6". Тогда на экране появится сообщение

 

Are you to Bump? (y or n)

 

Если нажать клавишу с буквой N, то BUMP не выполнится. Если же нажать клавишу с буквой Y, то программа попросит ввести уровень BUMP'а, и на экране появится сообщение

 

Enter Bump Level (0<L<1):

 

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

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

 

How many entries are to set as 'unknown'?

 

Это число вводится точно так же, как и значение параметра Bump Level при вызове процедуры BUMP. После этого нажимается клавиша "Enter". Заметим, что это число не рекомендуется задавать слишком большим (больше 3), иначе время обучения может существенно возрасти.

Чтобы можно было применить "дырокол", в ptn-файле должны быть отмеченные звездочками имена входных сигналов. Если в ptn-файле звездочек нет, то программа проигнорирует описанные выше действия, и обучение будет продолжаться без "дыр". Если число звездочек в ptn-файле меньше, чем число "дыр", указанное при вызове "дырокола", то при обучении число "дыр" будет считаться равным числу звездочек.

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

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

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

Инструкции по работе с программой tester

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

Дальнейшая работа программы tester подробно описана в разделе с описанием демонстрационной задачи.


Оглавление | Введение | П1 | П2 | П3 | Литература
Лекции: 1, 2-3, 4-6, 7.1, 7.2, 8, 9, 10, 11.1, 11.2-12, 13-14, 15-16