Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.abitu.ru/en2002/closed/viewwork.html?work=151
Дата изменения: Fri May 5 15:25:55 2006
Дата индексирования: Tue Oct 2 02:39:38 2012
Кодировка: koi8-r

Поисковые слова: п п п п п п п п п

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
ДЕТЕЙ «ЦЕНТР ТВОРЧЕСКОГО РАЗВИТИЯ И ГУМАНИТАРНОГО ОБРАЗОВАНИЯ ДЛЯ ОДАРЕННЫХ
ДЕТЕЙ «ПОИСК»»








Название работы «Разработка модулярных нейрокомпьютеров»


Автор работы:
Румянцева Елена


Место выполнения работы:
г. Ставрополь, центр «Поиск», 11 класс.

Научный руководитель:
к.т.н. Сахнюк Павел Анатольевич



















Ставрополь




СОДЕРЖАНИЕ





ВВЕДЕНИЕ
3

РАЗРАБОТКА МОДУЛЯРНЫХ НЕЙРОКОМПЬЮТЕРОВ 4

ЗАКЛЮЧЕНИЕ
19


СПИСОК ЛИТЕРАТУРЫ
20


Введение.

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

Нейрокомпьютерная технология на сегодняшний день является одним из
наиболее развивающихся направлений вычислительной техники. Нейросетевые
методы открывают широкие возможности для использования их в различных
сферах деятельности, ранее относившихся лишь к области человеческого
интеллекта. Наибольшие успехи достигнуты при решении задач обработки
сигналов, распознавания образов, оптимизации, сжатие данных и т.п. Это, на
ряду с возможностями массового параллелизма модулярных нейровычислений,
определило целесообразность создания специализированных вычислительных
систем для решения формализуемых, трудно формализуемых и не формализуемых
задач, трудных для традиционных средств вычислительной индустрии.
При современном уровне развития техники, когда даже бытовая техника
оснащается микропроцессорными устройствами, возникла потребность в
интеллектуальных адаптивных системах управления, способных
приспосабливаться к очень широкому диапазону внешних условий. Более того,
возникла потребность в универсальной технологии создания таких систем.
Научный опыт человечества свидетельствует о том, что в природе можно найти
великое множество ценных идей для науки и техники. Человеческий мозг
является самым удивительным и загадочным созданием природы. Способность
живых организмов, наделенных высшей нервной системой, приспосабливаться к
окружающей среде, может служить призывом к подражанию природе или имитации
при создании технических систем. Среди имитационных подходов выделяется
класс нейросетевых методов. Нейронные сети (НС) нашли широкое применение в
областях искусственного интеллекта, в основном связанных с распознаванием
образов, обработкой сигналов и с теорией управления.
Несмотря на большое разнообразие вариантов нейронных сетей, все они
имеют общие черты. Искусственные нейронные сети состоят из нейронов,
функциональные возможности которых аналогичны большинству элементарных
функций биологического нейрона. Эти элементы затем организуются по способу,
который может соответствовать анатомии мозга. Несмотря на такое
поверхностное сходство, искусственные нейронные сети демонстрируют
удивительное число свойств, присущих мозгу.
В качестве аналога нейрона используется вычислительный элемент, в
дальнейшем называемый линейным пороговым элементом (ЛПЭ) и определяемый
соотношением
[pic], (1)
где x=(x1, x2, ..., xN) - входной сигнал нейрона; a=(a1, a2, ...,aN) -
набор весовых коэффициентов; N - размерность входного сигнала; b - значение
смещения (пороговый параметр нейрона); [pic]- функция активации; y -
выходной сигнал.
Алгоритмы обучения НС можно разделить на два больших класса: с
учителем и без учителя [1]. В многослойных НС оптимальные выходные значения
нейронов всех слоев, кроме последнего, как правило, неизвестны. Трех- или
более слойный персептрон уже невозможно обучить, руководствуясь только
величинами ошибок на выходах сети.
Один из вариантов решения этой проблемы - разработка наборов выходных
сигналов, соответствующих входным, для каждого слоя НС, что, конечно,
является очень трудоемкой операцией и не всегда осуществимо. Второй вариант
- динамическая подстройка весовых коэффициентов синапсов, в ходе которой
выбираются, как правило, наиболее слабые связи и изменяются на малую
величину в ту или иную сторону, а сохраняются только те изменения, которые
повлекли уменьшение ошибки на выходе всей сети. Очевидно, что данный метод,
несмотря на кажущуюся простоту, требует громоздких рутинных вычислений. И,
наконец, третий, более приемлемый вариант - распространение сигналов ошибки
от выходов НС к ее входам, в направлении, обратном прямому распространению
сигналов в обычном режиме работы.
При решении с помощью нейронных сетей прикладных задач необходимо
собрать достаточный и представительный объем данных для того, чтобы обучить
нейронную сеть.
При решении таких задач обучающий набор данных - это набор наблюдений,
содержащих признаки изучаемого объекта. Первый вопрос, какие признаки
использовать и сколько и какие наблюдения надо провести. Выбор признаков,
по крайней мере, первоначальный, осуществляется эвристически на основе
имеющегося опыта, который может подсказать, какие признаки являются
наиболее важными. Сначала следует включить все признаки, которые, по мнению
аналитиков или экспертов, являются существенными, на последующих этапах это
множество будет сокращено.
Нейронные сети работают с числовыми данными, взятыми, как правило, из
некоторого ограниченного диапазона. Это может создать проблемы, если
значения наблюдений выходят за пределы этого диапазона или пропущены.
Для большинства реальных задач бывает достаточным нескольких сотен или
тысяч наблюдений. Для сложных задач может потребоваться большее количество,
однако очень редко встречаются задачи, где требуется менее 100 наблюдений.
Если данных мало, то сеть не имеет достаточной информации для обучения, и
лучшее, что можно в этом случае сделать, - это попробовать подогнать к
данным некоторую линейную модель.
После того как определено количество слоев сети и число нейронов в
каждом из них, нужно назначить значения весов и смещений, которые
минимизируют ошибку решения. Это достигается с помощью процедур обучения.
Путем анализа имеющихся в распоряжении аналитика входных и выходных данных
веса и смещения сети автоматически настраиваются так, чтобы минимизировать
разность между желаемым сигналом и полученным на выходе в результате
моделирования. Эта разность носит название ошибки обучения. Таким образом,
процесс обучения - это процесс подгонки параметров той модели процесса или
явления, которая реализуется нейронной сетью. Ошибка обучения для
конкретной конфигурации нейронной сети определяется путем прогона через
сеть всех имеющихся наблюдений и сравнения выходных значений с желаемыми,
целевыми значениями. Эти разности позволяют сформировать так называемую
функцию ошибок (критерий качества обучения). В качестве такой функции чаще
всего берется сумма квадратов ошибок. При моделировании нейронных сетей с
линейными функциями активации нейронов можно построить алгоритм,
гарантирующий достижение абсолютного минимума ошибки обучения. Для
нейронных сетей с нелинейными функциями активации в общем случае нельзя
гарантировать достижения глобального минимума функции ошибки.
При таком подходе к процедуре обучения может оказаться полезным
геометрический анализ поверхности функции ошибок. Определим веса и смещения
как свободные параметры модели и их общее число обозначим через М, каждому
набору таких параметров поставим в соответствие одно измерение в виде
ошибки сети. Тогда для всевозможных сочетаний весов и смещений
соответствующую ошибку сети можно изобразить точкой в, N-мерном
пространстве, а все такие точки образуют некоторую поверхность, называемую
поверхностью функции ошибок. При таком подходе цель обучения нейронной сети
состоит в том, чтобы найти на этой многомерной поверхности глобальный
минимум.
В случае линейной модели сети и функции ошибок в виде суммы квадратов
такая поверхность будет представлять собой параболоид, который имеет
единственный минимум, и это позволяет отыскать такой минимум достаточно
просто.
В случае нелинейной модели поверхность ошибок имеет гораздо более
сложное строение и обладает рядом неблагоприятных свойств, в частности
может иметь локальные минимумы, плоские участки, седловые точки и длинные
узкие овраги.
Определить глобальный минимум многомерной функции аналитически
невозможно, и поэтому обучение нейронной сети, по сути дела, является
процедурой изучения поверхности функции ошибок. Отталкиваясь от случайно
выбранной точки на поверхности функции ошибок, алгоритм обучения постепенно
отыскивает глобальный минимум. Как правило, для этого вычисляется градиент
(наклон) функции ошибок в данной точке, а затем эта информация используется
для продвижения вниз по склону. В конце концов алгоритм останавливается в
некотором минимуме, который может оказаться лишь локальным минимумом, а
если повезет, то и глобальным.
Таким образом, по существу алгоритмы обучения нейронных сетей
аналогичны алгоритмам поиска глобального экстремума функции многих
переменных.
Однако с учетом специфики нейронных сетей для них разработаны
специальные алгоритмы обучения, среди которых следует выделить алгоритм
обратного распространения ошибки.
При использовании алгоритма обратного распространения ошибки сеть
рассчитывает возникающую в выходном слое ошибку и вычисляет вектор
градиента как функцию весов и смещений. Этот вектор указывает направление
кратчайшего спуска по поверхности для данной точки, поэтому если
продвинуться в этом направлении, то ошибка уменьшится. Последовательность
таких шагов в конце концов приведет к минимуму того или иного типа.
Определенную трудность здесь вызывает выбор величины шага.
При большой длине шага сходимость будет более быстрой, но имеется
опасность перепрыгнуть через решение или уйти в неправильном направлении.
Классическим примером такого явления при обучении нейронной сети является
ситуация, когда алгоритм очень медленно продвигается по узкому оврагу с
крутыми склонами, перепрыгивая с одного склона на другой. Напротив, при
малом шаге, вероятно, будет выбрано верное направление, однако при этом
потребуется очень много итераций. На практике величина выбирается
пропорциональной крутизне склона (градиенту функции ошибок); такой
коэффициент пропорциональности называется параметром скорости настройки.
Выбор параметра скорости настройки зависит от конкретной задачи и обычно
определяется опытным путем; этот параметр может также зависеть от времени,
уменьшаясь по мере выполнения алгоритма.
Рассмотренный выше алгоритм обучения получил название процедуры
обратного распространения ошибки. Алгоритм обратного распространения ошибки
- это итеративный градиентный алгоритм обучения, который используется с
целью минимизации среднеквадратичного отклонения текущих от требуемых
выходов многослойных НС с последовательными связями. Согласно методу
наименьших квадратов, минимизируемой целевой функцией ошибки НС является
величина:
[pic] , (2)
где [pic] - реальное выходное состояние j-го нейрона выходного слоя НС при
подаче на ее входы k-го образа; [pic] - требуемое выходное состояние этого
нейрона.
Суммирование ведется по всем нейронам выходного слоя и по всем
обрабатываемым сетью образам. Минимизация методом градиентного спуска
обеспечивает подстройку весовых коэффициентов следующим образом:
[pic], (3)
где wij - весовой коэффициент синаптической связи, соединяющей i-й нейрон
слоя (q-1) с j-м нейроном слоя q; ( - коэффициент скорости обучения, 0 <(
<1.
В соответствии с правилом дифференцирования сложной функции:
[pic], (4)
где sj - взвешенная сумма входных сигналов нейрона j, т. е. аргумент
активационной функции. Так как производная активационной функции должна
быть определена на всей оси абсцисс, то функция единичного скачка и прочие
активационные функции с неоднородностями не подходят для рассматриваемых
НС. В них применяются такие гладкие функции, как гиперболический тангенс
или классический сигмоид с экспонентой. Например, в случае гиперболического
тангенса:
[pic]. (5)
Третий множитель [pic] равен выходу нейрона предыдущего слоя yi(q-1).
Что касается первого множителя в (4), он легко раскладывается
следующим образом:
[pic]. (6)
Здесь суммирование по i выполняется среди нейронов слоя (q+1).
Введя новую переменную:
[pic] (7)
получим рекурсивную формулу для расчетов величин (j(q) слоя q из
величин (j(q+1) более старшего слоя (q+1):
[pic]. (8)
Для выходного слоя:
[pic]. (9)
Теперь можно записать (5) в раскрытом виде:
[pic] . (10)
Иногда для придания процессу коррекции весов некоторой инерционности,
сглаживающей резкие скачки при перемещении по поверхности целевой функции,
(10) дополняется значением изменения веса на предыдущей итерации:
[pic], (11)
где ( - коэффициент инерционности; t- номер текущей итерации.
Таким образом, полный алгоритм обучения НС с помощью процедуры
обратного распространения строится следующим образом:
Шаг 1. Подать на входы сети один из возможных образов и в режиме
обычного функционирования НС, когда сигналы распространяются от входов к
выходам, рассчитать значения
[pic], (12)
где nq-1 - число нейронов в слое (q-1), вход нейрона j слоя q.
Шаг 2. Рассчитать [pic]для выходного слоя по формуле (9). Рассчитать
по формуле (10) или (11) изменения весов [pic]для слоя Q.
Шаг 3. Рассчитать по формулам (8) и (9) [pic] и [pic] для всех
остальных слоев, q=Q-1, ., 1.
Шаг 4. Скорректировать все веса в НС:
[pic]. (13)
Шаг 5. Если ошибка сети существенна, перейти на шаг 1. В противном
случае - конец.
Ошибка обучения для конкретной конфигурации нейронной сети
определяется путем прогона через сеть всех имеющихся наблюдений и сравнения
выходных значений с желаемыми, целевыми значениями. Эти разности позволяют
сформировать так называемую функцию ошибок (критерий качества обучения). В
качестве такой функции чаще всего берется сумма квадратов ошибок. При
использовании метода обратного распространения ошибки ошибка
распространяется от выходного слоя к входному, т.е. в направлении,
противоположном направлению распространения сигнала при нормальном
функционировании сети. В этом случае сеть рассчитывает возникающую в
выходном слое ошибку и вычисляет вектор градиента как функцию весов и
смещений. Этот вектор указывает направление кратчайшего спуска по
поверхности для данной точки, поэтому если продвинуться в этом направлении,
то ошибка уменьшится. Последовательность таких шагов в конце концов
приведет к минимуму. При таком подходе цель обучения нейронной сети состоит
в том, чтобы найти на этой многомерной поверхности глобальный минимум.
Однако этому алгоритму свойственны и недостатки, главный из которых -
отсутствие сколько-нибудь приемлемых оценок времени обучения. Определить
глобальный минимум многомерной функции аналитически невозможно, и поэтому
обучение нейронной сети, по сути дела, является процедурой изучения
поверхности функции ошибок. Отталкиваясь от случайно выбранной точки на
поверхности функции ошибок, алгоритм обучения постепенно отыскивает
глобальный минимум, что занимает значительное время.
Нейронная сеть является специфической параллельной вычислительной
структурой. Характеризуется она большим числом связей между каждым
процессорным элементом, т.е. нейроном. В НС все нейроны работают
конкурентно, а на результат вычисления влияет информация, зашифрованная в
связях между элементами сети. Нейронная сеть представляет собой
выскопараллельную динамическую систему с топологией направленного графа.
Такая сеть получает входной сигнал, реагирует на него и выводит конечную
информацию. А особенность такой сети состоит в том, что порядок обработки
информации заложен именно в степени прочности связей между нейронами.
Нейронные сети по сути дела являются формальным аппаратом описания только
основной части алгоритма решения задачи на ЭВМ. Это ограничение позволяет
разрабатывать высокопараллельные алгоритмы решения различных задач.
В чем же преимущество нейрокомпьютеров? Если алгоритм обработки
информации задан, но не хватает вычислительных мощностей, то после
представления алгоритма в нейросетевом логическом базисе, становится
возможным использование мощных аппаратных средств с массовым параллелизмом.
Там же, где алгоритмов нет или они недостаточно эффективны, нейронные сети
способны предложить многообещающий подход к созданию алгоритмов, которые
будут обладать многими привлекательными чертами. Такими как гибкость,
способность адаптироваться к изменяющимся условиям, сохраняя при этом
высокое качество работы.
Дальнейшая наша задача - найти способы ускорения операций сложения и
умножения, которые являются основными в нейросетевом логическом базисе [2].
Как один из способов решения этой задачи - внедрение непозиционной системы
счисления. Одним из нетрадиционных методов вычисления является применение
системы счисления в остаточных классах (СОК).
Если задан ряд положительных целых чисел
p1, р2, ...,рп,
называемых в дальнейшем основаниями системы, то под системой счисления в
остаточных классах будем понимать такую систему, в которой целое
положительное число представляется в виде набора остатков (вычетов) по
выбранным основаниям
N = [pic]
причем образование цифр осуществляется следующим процессом
[pic] для i=1, 2, ., n, (14)
т.е. цифра i-го разряда [pic] числа N есть положительный наименьший остаток
от деления N на pi.
Здесь образование цифры каждого разряда производится независимо друг
от друга. Цифра i-го разряда [pic] представляет собой положительный
наименьший остаток от деления самого числа N, а не предыдущего частного на
i-е основание. Очевидно, что [pic]. Если числа pi взаимно простые между
собой, то описание цифрами [pic] представление числа N является
единственным.
Объем диапазона представимых чисел в этом случае равен
[pic]
Здесь, как и в позиционной системе, диапазон представимых чисел растет
как произведение оснований, а разрядность чисел N растет как сумма
разрядностей тех же оснований.
К достоинствам системы в остаточных классах следует отнести:
- независимость образования разрядов числа, в силу чего каждый разряд
несет информацию обо всем исходном числе, а не о промежуточном числе,
получающемся в результате образования более младших разрядов. Отсюда
вытекает независимость разрядов числа друг от друга и возможность их
независимой параллельной обработки;
- малоразрядность остатков, представляющих число. Ввиду малого
количества возможных кодовых комбинаций открывается возможность построения
табличной арифметики, благодаря чему большинство операций, выполняемых
арифметическим устройством, превращаются в однотактные, выполняемые простой
выборкой из таблицы.
К основным недостаткам системы счисления в остаточных классах
относятся:
- невозможность визуального сопоставления чисел, так как внешняя
запись числа не дает представления о его величине;
- отсутствие простых признаков выхода результатов операций за пределы
диапазона [0,Р);
- ограниченность действия системы сферой целых положительных чисел;
- получение во всех случаях точного результата операции, что исключает
возможность непосредственного приближенного выполнения операций, округление
результата и т.п.
Устранение недостатков системы или, по крайней мере, ослабления
действия этих недостатков и наиболее полное использование ее достоинств при
реализации в вычислительных машинах составляют основное содержание машинной
арифметики в системе остаточных классов.
Рассмотрим правила выполнения операций сложения и умножения в системе
остаточных классов в случае, если оба числа и результат операции находится
в диапазоне [0,Р). Пусть операнды А и В представлены соответственно
остатками [pic] и [pic] по основаниям рi при i = 1, 2,..., п.
Результаты операций сложения и умножения А + В и АВ
представлены соответственно остатками [pic] и [pic] по тем же основаниям pi
т.е.
А = [pic],
B = ([pic]),
A +B = ([pic]),
АВ = ([pic]),
и при этом имеют место соотношения
[pic].
Утверждается, что [pic]сравнимо с [pic] по модулю рi, а [pic] сравнимо
с [pic] по тому же модулю, т.е.
[pic](mod pi),
[pic](mod pi),
при этом в качестве цифры результата берется соответственно
[pic] (15)
[pic][pic] (16)
Действительно, на основании (15) можно написать
[pic]
для i= 1, 2, ., n.

Из представления А и В следует, что
А = [pic] (17)
В = [pic]
для i = 1,2,..., п,
где ki и li - целые неотрицательные числа. Тогда
A+B = [pic]
[pic]
где i = 1,2,...,п
откуда
[pic]
что и доказывает (15).
В случае умножения
[pic].
[pic] Учитывая (17), получим
AB[pic]
[pic]
i = 1, 2,..., п.
Следовательно,
[pic][pic][pic][pic]
что и доказывает (16).[pic][pic]
Пример 1. Пусть основаниями системы являются
p1= 3, р2 = 5, р3 = 7.
Диапазон системы определится как
Р= p1p2p3=105.
Сложим число А = 17 с числом В = 63.
По выбранным основаниям числа А и В в системе остаточных классов будут
представлены как
А = 17 = (2, 2, 3),
В = 63 = (0, 3, 0).
В соответствии с (15) получим
А + В=(2, 0, 3).
Легко проверяется, что число (2, 0, 3) есть 80 и равно сумме
операндов.
Пример 2. Умножим число А = 17 на число В = 6.
В системе остаточных классов числа А и В будут представлены как
А =17 = (2, 2, 3),
В = 6 = (0, 1, 6).
В соответствии с (16) получим
AВ = (0, 2, 4) = 102.
Операции сложения и умножения над числами, представленными

в системе остаточных классов, сводятся к соответствующим операциям

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

любых сложных операций, составленных из операций сложения и

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

сложных операций является требование невыхода за пределы диапазона,

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

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

оказывается возможным ограничиться требованием невыхода из

диапазона лишь окончательного результата, оставляя за промежуточными
результатами возможность выходить за пределы диапазона [3].
При сопряжении вычислительных устройств, функционирующих в модулярной
арифметике, с позиционными устройствами возникает задачи эффективной
реализации перевода данных, представленных в модулярном коде в позиционное
представление.
Так, при использовании метода ортогонализации, число A в модулярном
коде преобразуется в позиционный код вычислением по модулю полного
диапазона P
A=[pic], (18)
где: Bi - ортогональные базисы, определяемые согласно выражению
Bi=mi[pic] (19)
для i =1, 2, . , k; mi - вес ортогонального базиса, удовлетворяющий
сравнению
[pic]=1.
(20)
Таблицы решения сравнения (18) приведены в [4]. Ортогональные базисы
Bi являются основными константами для выбранной системы оснований pi,
i=[pic], непозиционной системы счисления.
Пример. Требуется перевести число A=(1, 2, 3) представленное в
модулярном коде по основаниям p1=2, p2=3, p3=5 в позиционную систему
счисления.
Для заданной системы оснований P = p1( p2( p3 = 30. Вычислим [pic]=
15, [pic]= 10, [pic]= 6. Вычислим теперь [pic]=1, [pic]=1, [pic]=1. По
таблице сравнений [4] находим m1 = 1, m2 = 1, m3 = 1. Итак, B1 = 15, B2 =
10, B3 = 6. Число A в ПСС равно A=[pic]=(1(15+2(10+3(6(30=(15+20+18(30=23.
Т.о., выполнение арифметических операций в СОК производится независимо
по каждому из модулей, что и указывает на параллелизм данной системы и
приводит к появлению кодов с параллельной структурой. В отличие от
позиционной системы счисления исчезает необходимость «занимать» или
«переносить» единицу старшего разряда. Это приводит к появлению кодов с
параллельной структурой. Появляется возможность распараллелить основные
арифметические операции, которые выполняются в нейронной сети. Заметим, что
модулярная арифметика является альтернативным подходом к построению ВС,
которые в настоящее время базируются в основном на использовании двоичной
арифметики.
Следующей задачей в использовании НС является их программная
реализация. Решается она например, с помощью программируемых логических
блоков (ПЛИС).
ПЛИС представляет собой массив конфигурируемых логических блоков (КЛБ)
с полностью конфигурируемыми высокоскоростными межсоединениями.
Каждый КЛБ представляет собой набор из двух просмотровых таблиц - LUT
- таблиц (Look Up Table), блоков логики ускоренного переноса (carry logic)
и двух триггеров. Именно в LUT и возможно использование модулярной
арифметики вместо двоичной.
Существует несколько последовательных этапов построения нейронной сети
на основе ПЛИС:
1. а) Алгоритмы функционирования нейронной сети.
б) Эмуляция нейронной сети на PC, workstation
2. а) Создание регулярного сегмента (слоя) сети на основе
подключения библиотек.
б) Библиотека элементов нейронной сети (схематический редактор,
HDL)
3. Разбиение структуры сети по отдельным кристаллам.
4. Посторенние законченной сети со стандартным внешним интерфейсом.

При разработанном алгоритме функционирования нейронной сети
производится её эмуляция на PC или рабочей станции не в реальном масштабе
времени. На данном этапе быстродействие сети не играет принципиального
значения, поскольку производится лишь отладка алгоритма.
После окончания отладки сети, определения её архитектуры, основных
характеристик (быстродействия нейронов, частоты обновления весов и т.д.)
можно переходить к этапу аппаратной реализации.
Во-первых, по общей производительности сети производится расчёт объёма
требуемых логических ресурсов ПЛИС.
Во-вторых, на основе имеющихся библиотек (которые можно наработать
самим), включающих такие блоки, как умножители различного быстродействия,
разрядности, структуры, сумматоры произвольной разрядности, реализации
различных функций активации и в конечном счёте нейроны различной
архитектуры и быстродействия, построить регулярный сегмент нейронной сети,
например, часть слоя с фиксированной размерностью вектора входных
параметров.
На следующем этапе необходимо на основе известной размерности сети
произвести компоновку отдельных сегментов по кристаллам ПЛИС (критерии
выбора ПЛИС определяются требуемым быстродействием, стоимостью,
возможностью каскадирования и т. д.) и определить их межсоединения. Здесь
же необходимо определить структуру контроллера, управляющего процессом
обучения сети (в общем случае он может быть распределённым по всем ПЛИС) и
общим процессом загрузки-выгрузки данных, а также определить вид
стандартного интерфейса сети с внешними устройствами, например, PCI, VME.
Ядро нейронной сети представляет собой матрицу из ПЛИС 1, 2,3 и 4,
связанных максимально возможным числом межсоединений. В общем случае
размерность матрицы практически неограниченна. В каждом столбце ПЛИС
размещаются от одного до нескольких слоев сети, в то же время, наращивая
число строк матрицы ПЛИС, можно увеличивать размерность входного
пространства.
Входной демультиплексор и выходной мультиплексор размещается
непосредственно в ПЛИС крайних столбцов и предназначены для ввода-вывода
данных на стандартный интерфейс (системную шину).
Управляющий контроллер служит для общей синхронизации работы сети,
организации процесса обучения и загрузки весовых коэффициентов. Данный
контроллер непосредственно связан с контроллером стандартного интерфейса
(PCI, VME) и имеет специфический набор команд, необходимых и задаваемых
разработчиком.
Через стандартный интерфейс осуществляется связь сети с достаточно
медленными (по сравнению с возможностями межсоединений ПЛИС) периферийными
устройствами, например, PC, где осуществляется требуемая визуализация и
частичная обработка передаваемой и принимаемой из сети информации.
Особенно стоит остановиться на возможностях каскадирования ПЛИС
матрицы с целью создания сети более высокой размерности.
Высокоскоростные межсоединения, характерные для ПЛИС, позволяют
построить нейронную сеть с предельно высокими скоростями передачи данных
[5].
Каким образом на ПЛИС возможно реализовать нейронную сеть и почему
ПЛИС особенно хорошо подходят для выполнения подобной задачи?
Ввиду матричной структуры ПЛИС, состоящей из КЛБ, как элементарных
ячеек, на кристалле возможно построение иерархических блоков более высокого
уровня организации, например сумматоров, состоящих из КЛБ. На основе
сумматоров затем формируются умножители, из умножителей - отдельные
нейроны, а из нейронов строятся фрагменты нейронной сети.
Первоначальный массив элементарных КЛБ позволяет на основе имеющихся
библиотек арифметических блоков (сумматоров, умножителей, компараторов, и в
конечном счёте, нейронов) создавать более сложные структуры с высокой
степенью параллельности вычислительного процесса. и предельно высоким
быстродействием за счёт использования многоуровневой конвейеризации.
При этом вполне достижима реализация нейронной сети, функционирующей с
временами вычисления одного нейрона до 6 нс (восемь 8-разрядных входов).
Заключение.

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

1. Галушкин А.И. Теория нейронных сетей. - М.: ИПРЖ, 2000, 526 с.
2. Нейроматематика (коллектив авторов). - М.: издательское
предприятие журнала "Радиотехника" (ИПРЖ), 2002, 630 с.
3. Червяков Н.И., Сахнюк П.А., Шапошников А.В., Ряднов С.А.
Нейропроцессоры с параллельной арифметикой. - М.: "Физматлит", 2002, 350 с.
4. Акушский И.Я., Юдицкий Д.М. Машинная арифметика в остаточных
классах. - М.: "Советское радио", 1968. - 440 c.
5. Червяков Н.И., Сахнюк П.А., Шапошников А.В. Объединение ПЗУ и ПЛИС
в единую структуру и реализация ее на СБИС // М.: "Нейрокомпьютеры:
разработка, применение", 2002, ?11, с. 27-35.