Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

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

Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных
<
Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных
>

Данный автореферат диссертации должен поступить в библиотеки в ближайшее время
Уведомить о поступлении

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - 240 руб., доставка 1-3 часа, с 10-19 (Московское время), кроме воскресенья

Скрябцов Павел Вячеславович. Применение нейрокомпьютеров для представления и визуализации статических и динамических трехмерных данных : Дис. ... канд. техн. наук : 05.13.17 : Москва, 2003 166 c. РГБ ОД, 61:04-5/928

Содержание к диссертации

Введение

ГЛАВА 1. Предпосылки к применению нейрокомпьютеров для представления и визуализации трехмерных данных 9

1.1. Общий вид процесса визуализации трехмерных данных различной природы 9

1.2. Вычислительная сложность процесса синтеза 2D проекций 15

1.3. Предпосылки к применению нейрокомпьютеров на этапе синтеза 2D проекций 18

ГЛАВА 2. Постановка задачи нейросетевого представления и визуализации трехмерных данных 21

2.1. Обзор основных способов представления трехмерных данных 21

2.2. Математическая формулировка нейросетевого представления трехмерных данных, заданных в различных форматах 28

2.3. Алгоритмы визуализации на основе нейросетевого представления трехмерных данных 38

2.3.1. Визуализация триангулированных трехмерных объектов, заданных нейросетевым представлением 42

2.3.2. Визуализация вексельных данных в

нейросетевом представлении 45

ГЛАВА 3. Варианты нейросетевой постановки задачи 47

3.1. Входной сигнал нейронной сети 47

3.2. Типовые входные сигналы 48

3.3. Варианты требуемого (желаемого) выходного сигнала 49

3.4. Выходной сигнал нейронной сети 53

3.5. Функция ошибки 53

3.6. Функция активации 53

3.7. Структура нейронной сети 54

3.8. Функционал оптимизации 56

3.9. Выбор обучающей последовательности 58

3.10. Алгоритм настройки весовых коэффициентов 60

3.11. Выбор начальных значений весовых коэффициентов сети 66

ГЛАВА 4. Моделирование неиросетевого представления трехмерных данных 68

4.1. Исследование алгоритмов настройки весовых коэффициентов 68

4.1.1. Простой градиентный спуск групповой 69

4.1.2. Простой градиентный спуск - последовательный 69

4.1.3. Последовательный градиентный спуск с использованием функционала целевой ошибки 70

4.1.4. Групповой градиентный спуск с алгоритмом адаптивной настройки шага- метод RPROP 72

4.1.5. Метод сопряженных градиентов (Scaled Conjugate Gradient)... 73

4.1.6. Методы настройки сети с переменной структурой 73

4.1.7. Комбинированные методы 77

4.1.8. Характеристики методов 78

4.1.9. Выводы по характеристикам методов 79

4.2. Исследование влияния масштабирования входного сигнала на скорость настройки 87

4.3. Исследование влияния структуры нейронной сети на скорость и качество обучения 90

4.4. Исследование влияния выбора начальных весовых коэффициентов на скорость настройки 98

4.4.1. Метод случайных значений 99

4.4.2. Метод «simulated annealing» 100

4.4.3. Метод «касательных плоскостей» 102

4.4.4. Метод «от простого к сложному» 105

4.4.5. Сравнение методов инициализации весовых коэффициентов.. 106

4.5. Исследование влияния параметров обучающей последовательности на качество нейросетевого представления поверхностей триангулированных тел 109

4.6.Оценка качества получаемого изображения в зависимости от величины достигнутой ошибки 117

4.7.Нейросетевое представление динамических триангулированных тел 123

4.8. Описание компьютерной модели 126

4.8.1. Общая структура программы 127

4.8.2. Скорость работы и оптимизирование алгоритмов 130

ГЛАВА 5. Предварительные расчеты по разработке аппаратного ускорителя нейросетевого алгоритма трассировки лучей 137

5.1. Принципиальная схема аппаратного ускорителя нейросетевого алгоритма трассировки лучей 140

5.2. Теоретические оценки требований к рабочим параметрам системы и расчет возможной эффективности 147

5.3. Распараллеливание НС алгоритмов на несколько СБИС плат 148

5.4. План работ с модулем СуперНК 151

Заключение 154

Литература 159

Введение к работе

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

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

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

Сравнение нейрокомпьютеров с другими типами Супер-ЭВМ по критерию отношения производительности к стоимости были произведены известным разработчиком нейрокомпьютеров в США Хехт-Нильсеном и детально проанализированы в работе проф. А. И. Галушкина «О современных направлениях развития нейрокомпьютеров» [3]. Высокая производительность и относительно низкая цена нейрокомпьютеров

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

Целью работы является:

  1. Построение математических моделей и методик исследования процессов нейросетевого представления и визуализации трехмерных данных на базе многослойных нейронных сетей прямого распространения сигнала1 с нелинейной функцией активации;

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

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

  4. Создание расширяемой, оптимизированной, целевой программной среды с графическим интерфейсом для моделирования процессов нейросетевого представления и визуализации трехмерных данных;

  5. Предварительные исследования по возможности создания нейросетевого программно-аппаратного комплекса для решения

' В зарубежной литературе также обозначаются как MLP (Multi-Layer Perceptron) и Feed-Forward Neural Networks

задачи визуализации трехмерных данных в режиме реального

времени.

Апробация результатов. Результаты диссертационной работы

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

конференциях:

  1. VI Всероссийская конференция «Нейрокомпьютеры и их применение», Москва, 16-18 Февраля 2000г.

  2. VIII Всероссийская конференция «Нейрокомпьютеры и их применение», Москва, 21-22 Марта 2002г.

  3. International Conference on Neural Processing (ICONIP), Singapure, 18-20 November, 2002

  4. International Conference on Neural Processing (ICONIP), Istambul, 2003

  5. 5-ая Международная научно-техническая конференция и выставка "Цифровая обработка сигналов и её применение" ИЛУ РАН, г. Москва, 12-14 марта 2003 г.

  6. Научные конференции Московского Физико-Технического Института, 2000-2002 гг.

На защиту выносятся:

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

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

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

8 нейрокомпьютеры для представления статических и динамических трехмерных данных; 4) Методика построения и возможные варианты принципиальной схемы аппаратного ускорителя нейросетевого алгоритма представления и визуализации трехмерных данных.

Предпосылки к применению нейрокомпьютеров на этапе синтеза 2D проекций

Алгоритмы синтеза 2D проекций (алгоритмы визуализации) трехмерных данных требуют большого количества вычислений [2]. Чем более фотореалистичное изображение требуется получить, тем больше вычислений требует алгоритм.

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

В настоящее время может показаться, что существует множество удовлетворительных подходов к решению проблемы проектирования трехмерных объектов на двухмерные экраны. Такое мнение может сложиться, если судить по обзорам графических плат для персональных компьютеров, созданных для ускорения вывода трехмерной графической информации на экран или, так называемых, 3D ускорителей. Однако за характеристиками, ценой и устройством работы у большинства графических плат можно увидеть общую черту, а именно: реализуемый алгоритм построения проекции трехмерных объектов на 2х-мерный экран. Из обзорных работ [4,6] можно понять, что практически все платы производят вывод 3D объектов, поверхности которых аппроксимируются треугольниками, на экран с использованием метода удаления невидимых граней Z-buffer. Достоинства этого метода заключаются в простоте аппаратной реализации алгоритма и в линейной зависимости времени отображения одного кадра в зависимости от сложности отображаемой 3D сцены. Однако у этого метода имеются существенные недостатки, а именно: сложности с вычислением фотореалистичных теней, сложности с обработкой преломляющих, рассеивающих поверхностей, невозможность обработки объемных источников света. Поэтому, несмотря на многообразие плат -ускорителей трехмерной графики для персональных машин, большая часть из них не предназначена для расчета фотореалистичных изображений и не может быть использована для создания высококачественных изображений трехмерных объектов в режиме реального времени.

В настоящее время основным методом построения фотореалистичных проекций трехмерных объектов является метод трассировки лучей (Ray Tracing) [2], который основан на принципах геометрической оптики [7]. Группой экспертов из области компьютерной графики в работе [8] обсуждается перспективность метода трассировки лучей и его превосходство над алгоритмами, которые применяются в современных графических акселераторах для персональных машин. В указанной работе показывается, что настоящие ЭВМ обладают недостаточной производительностью для создания изображений объемных тел методом трассировки лучей в режиме реального времени. В связи с этим в работе показано, что для ускорения синтеза трехмерных изображений методом трассировки лучей, необходимы специализированные аппаратные ускорители. Некоторые разработчики аппаратных ускорителей алгоритма синтеза двухмерных проекций уже сейчас пошли по пути разработки аппаратных ускорителей процесса создания двухмерных изображений трехмерных объектов методом трассировки лучей [9-12]. В таблице 1.1 приведены свойства некоторых серийно выпускаемых устройств, которые могут использоваться в качестве процессора, выполняющего расчет проекций методом трассировки лучей.

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

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

С точки зрения классической компьютерной индустрии - нейронные сети можно считать квинтэссенцией технологии RISC (reduced instruction set computer) и parallel computing, т.к. нейрокомпьютер это набор большого числа (100-100 000 и более) параллельно работающих нейронов, где каждый нейрон это отдельный процессор, который может выполнять несколько простейших операций - операцию сложения, умножения и вычисление одной нелинейной функции [1, 3, 14, 15, 16]. За счет малого размера каждого процессора (нейрона) можно осуществлять более эффективный обмен данными. Однородная структура нейрочипов облегчает технологический процесс их изготовления [13].

Как показывают работы [17-24], нейросетевые алгоритмы уже успешно применяются на более ранних этапах общего процесса визуализации -сканировании трехмерных объектов, реконструкции формы объектов из томографических данных, и т.п. В работах [1,3,14,15,16] описываются базовые нейросетевые алгоритмы генерации решеток, поиска, сортировки,

Алгоритмы визуализации на основе нейросетевого представления трехмерных данных

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

Через данную последовательность введем следующий функционал среднеквадратичной ошибки, являющийся условным приближением «настоящего» интегрального функционала Альтернативный функционал, рассматривающийся в данной работе, это максимум ошибки: Поскольку на практике посчитать такой функционал в общем случае не представляется возможным, как и в случае с интегральным функционалом, он заменяется на некоторое его условное приближение вида При одинаковом значении функционала (3.17) и (3.20), функционал максимума ошибки (3.20) гарантирует более качественное соответствие желаемого выходного сигнала текущему. Из равенства нулю функционала максимума модуля ошибки следует равенство нулю интегрального функционала. Обратное не верно. Однако на практике работать с функционалом (3.21) неудобно, и не всегда эффективно. Для повышения эффективности предлагается использовать следующий оригинальный «сжимающий функционал» В данной работе этот функционал будет называться «функционал целевой ошибки» (или «targetError»). Идея этого функционала заключается в том, что если для выбранного є 0, этот функционал обращается в ноль, то введения этого функционала будет описываться более подробно. Из выражений (3.19), (3.21), (3.22) следует, что выбор той или иной последовательности {гр}, может существенно повлиять на степень приближения соответствующих функционалов. Это, в свою очередь, может повлиять на качество найденного решения. Поэтому выражения, определяющие обучающую последовательность, должны выбираться из следующих условий: обучающая последовательность должна содержать достаточно информации обо всех объектах, которые описывают исходные трехмерные данные; точки обучающей последовательности должны содержать информацию обо всех особенностях структуры поверхностей тел (т.е. например, должны передавать информацию обо всем разбиении поверхностей тел на подповерхности); обучающая последовательность должна содержать точки не только в областях присутствия объектов, но и в областях их отсутствия для избежания появления мнимых объектов в пространстве. обучающая последовательность не должна быть слишком длинной, чтобы задача составления обучающей последовательности не превышала по сложности саму нейросетевую задачу.

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

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

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

Методологии поиска минимума функционала оптимизации путем настройки весовых коэффициентов сети посвящаются многие исследования [80-103], поскольку для многих нейросетевых задач, особенно в случае применения нейронных сетей с большим общим количеством связей, эта задача является одной из наиболее сложных1. В общем, различные методы могут быть классифицированы по диаграмме, отображенной на Рис. 3.1. Рассмотрим более детально уровни этой диаграммы.

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

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

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

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

Основное отличие данного метода от других методов второго порядка [90, 91] заключается в том, что он не требует инвертирования матрицы вторых производных функционала оптимизации, что для больших нейронных сетей представляет очень трудоемкую задачу. Вместо этого в пространстве весовых коэффициентов строится система сопряженных векторов, которая позволяет за конечное количество шагов, равное размерности пространства (количеству всех весовых коэффициентов сети) находить экстремум квадратичной формы, образованной матрицей вторых производных функционала оптимизации. В данной работе указанный метод будет называться SCG (Scaled Conjugate Gradient). Недостаток этого метода заключается в том, что он не предполагает итераций по изменению весов, приводящих к увеличению значения функционала оптимизации. Это приводит к зависанию алгоритма в локальных минимумах (Рис. 4.2), особенно часто это проявляется при больших значениях ошибки. Чтобы избегать этой проблемы в данной работе метод SCG используется совместно с другими методами, которые сначала добиваются достаточно низкой ошибки, после чего применяется метод SCG.

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

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

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

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

В данной работе также изучались комбинированные методы, которые заключались в том, что до определенного уровня ошибки сначала применяется один метод, а затем другой. Для обозначения таких комбинированных методов используется сложение их обозначений. Например, TEL+SCG означает, что до определенного уровня ошибки использовался метод Target Error Learning, а затем Scaled Conjugate Gradient.

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

Принципиальная схема аппаратного ускорителя нейросетевого алгоритма трассировки лучей

Поэтому в рамках исследований данной работы был написан специфицированный код на языке assembler, реализован как DLL (Dynamic Link Library) и подключен через Java Native Interface к модулю нейросетевой библиотеки. Принципы, использующиеся для построения данной библиотеки можно разделить на две части - принципы оптимизации структуры данных и структуры кода. Чтобы понять, как производится оптимизация кода и представления данных, необходимо представлять себе основы архитектуры современного процессора (Рис. 4.30). Основная проблема с данными заключается в том, что арифметическо-логическое устройство (ALU -arithmetical-logical unit) может производить быстрый обмен данными с регистрами и кэшем (внутренним ОЗУ процессора) в то время как обмен данными с внешней памятью медленнее на порядок величины. Когда программа обращается, к какому либо адресу, если этот участок памяти еще не «отображен» в кэше, тогда чтение и запись происходит со скоростью работы системной шины, что достаточно медленно по сравнению с тактовой частотой самого процессора [115].

Как только к данным обратились, если не указано иначе, содержимое участка памяти копируется в кэш. Если программа повторно обращается к этому участку памяти, то обмен происходит со скоростью работы тактового генератора процессора. Поскольку размер кэша ограничен, процессор может удерживать в кэше только определенное количество участков памяти. Из этого можно сделать несколько выводов: необходимо по максимальной возможности использовать регистры процессора для хранения значений переменных вместо оперативной памяти, это особенно относится к счетчикам циклов и других часто используемых переменных. Стоит отметить, однако, что обмен данными между регистрами ММХ и регистрами общего назначения достаточно медленное, к примеру, команда, movd еах, mmO занимает целых несколько тактов необходимо хранить все переменные, использующиеся в теле главного цикла близко друг к другу. необходимо повторно использовать те же участки памяти для различных (всех) целей, если возможно. К примеру, тот же самый участок памяти может использоваться для хранения входных и выходных векторов слоя нейронной сети (Рис. 4.31). необходимо использовать стек для хранения промежуточных данных. Поскольку область памяти, выделенная под стек используется довольно часто, высока вероятность того, что этот участок памяти будет уже прокеширован. Стек может эффективно использоваться в алгоритме обучения нейронной сети для хранения промежуточной информации, собранной во время прямого прохода (например, выходные значения нейронов и т.п.), поскольку эта информация потребуется во время обратного прохода в «обратной последовательности». Структура данных в данном случае хорошо согласуется с поведением стека. необходимо избегать частых смен «чтение\запись» в память. Это базовые знания и базовые выводы об оптимизации структуры данных, чтобы сделать более глубокие выводы необходимо ознакомиться более подробно с архитектурой конкретного процессора (или, например, семейства процессоров IA-32) под которые пишется программа. Особый принцип, называемый SIMD (Single Instruction Multiple Data) и реализованный в расширенных наборах команд современных процессоров под именами SSE (Streaming SIMD Extension), 3DNow!, SSE2 крайне удобен для оптимизации кода производящего нейровычисления. Основной принцип состоит в том, что одна команда выполняет некоторую элементарную математическую операцию сразу над несколькими парами операндов, при этом эта команда выполняется за существенно меньшее число тактов, чем занял бы аналогичный код для стандартного математического сопроцессора (FPU). SSE расширение доступно во всех процессорах совместимых с Pentium-Ill, включая также процессор Athlon ХР фирмы AMD. К примеру, такая операция как addps xmmO, xmml выполняет следующие действия над специальными 128-битовыми регистрами (ХММ registers), которые могут хранить 4 числа с плавающей точкой одинарной точности (Рис. 4.32). Выполнение данной команды занимает всего лишь 2 такта. Стоит также отметить, что во время выполнения команд SSE сопроцессор не используется, что позволяет параллельно запускать вычисления в FPU. Можно сделать краткие выводы: Необходимо корректировать структуру архитектуры вашей нейронной сети для того, чтобы код было легче оптимизировать с использованием SIMD. Например, так как SSE инструкции работают с 4 операндами, значит, имеет смысл делать количество нейронов в слое кратным 4 (для больших сетей это несущественное ограничение, т.к. нейронные сети с большим числом нейронов ведут себя схоже при небольшом изменении числа нейронов). Необходимо корректировать код программы, чтобы он эффективно использовал особенности конкретной нейронной сети. Например, если нейронная сеть имеет 3 входа (например, нейронная сеть для обработки 3D данных), то код для обработки первого слоя может быть отличным от кода для обработки других слоев, это может также потребовать хранить веса для первого слоя «по столбцам», а не по «строчкам». Вместо самостоятельного написания ассемблерного кода с использованием SIMD можно воспользоваться готовой библиотекой, такой как, например Intel Signal Processing Library 4.5. Однако практика показывает, что специализированный код «подогнанный» очевидно работает эффективней.

Техника, описанная выше, была протестирована на процессоре AMD Athlon 1.3GHz с 133-мегагерцовой шиной. Интерфейс был написан на языке Java с вызовами к native methods. Библиотеки (DLL) для native methods были написаны на C++ с ассемблерными вставками. Для компиляции SSE инструкций использовалась Microsoft Visual Studio .NET. Средняя производительность программы после всех шагов оптимизации для данной машины превысила 2Giga flops/sec, что дало выигрыш в скорости обучения нейронной сети по сравнению с не оптимизированным кодом на языке Java приблизительно в 40 раз.

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