Реализация нейронной сети для распознавания изображений с помощью технологии Nvdia CUDA

№ 6 (36) 2011

А. А. Ферцев, аспирант Мордовского государственного университета им. Н. П. Огарева, г. Саранск

Реализация нейронной сети для распознавания изображений с помощью технологии NVDIA CUDA

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

Введение

Одним из перспективных методов исследования земной поверхности, океана, атмосферы является технология LIDAR (Light Detection and Ranging) — технология получения и обработки информации об удаленных объектах с помощью активных оптических систем, использующих явления отражения света и его рассеивания в прозрачных и полупрозрачных средах. Принцип действия LIDAR не имеет больших отличий от радара: направленный луч источника излучения отражается от целей, возвращается к источнику и улавливается высокочувствительным приемником (в случае LIDAR — светочувствительным полупроводниковым прибором); время отклика обратно пропорционально расстоянию до цели.

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

102 j-

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

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

Модель процесса распознавания образов

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

№ 6 (36) 2011

1 3

Рис. 1. Модель процесса распознавания

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

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

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

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

В качестве направлений дальнейшего исследования перспективным представляется переход к характеристикам изображений более высокого порядка, описанным, например, в работах [2 и 3]. Это позволит

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

Метод Левенберга-Марквардта

Метод Левенберга-Марквардта был предложен в работах [5 и 6] как метод для решения задачи о наименьших квадратах. Он был применен для обучения нейронных сетей, например в [7, 4 и 8]. Необходимо отметить, что в отличие от классического алгоритма обучения, алгоритм на основе метода Ле-венберга-Марквардта использует «обучение по эпохам» (в англоязычной литературе используется термин batch learning). В этом случае ошибка сети считается за всю эпоху обучения и параметры сети изменяются, когда сети уже предъявлены все элементы обучающего множества.

Согласно [4 и 9] нейронную сеть можно представить в виде вектор-функции вектор-аргумента:

Y = Y (х,е),

где X = (,..., хп) — входные данные, 0 = (01,...,05) — параметры сети, Y = (,..., ур) — выход сети. Тогда ошибка сети за одну эпоху будет выражаться формулой

1 N P 2

f

i=i ;=i

где d¡j — желаемый выход /-го выходного нейрона для ¡-го элемента обучающего множества. Пусть Е = (е11,...,е1Р,...,еН1,...,еыр) , где е^ = уц - d ^. Тогда формулу (2) можно переписать так:

103

№ 6 (36) 2011

F (Y ) = ETE

и матрица Якоби для уравнения (2) будет иметь вид:

J =

. Jt =

Эе,

эе1 эе2 эе5

Эе2

эе1 эе2 эе5

деР

30,

эе„

эеч

1

s q

I

I

S

-а §

§

и

1!

I Л

о §

is §

§ 5

SS

о £

0 f

1

S

1 I

Согласно [9] приращение параметров сети следует искать в виде решения уравнения

где J — матрица Якоби, полученная по формуле (2), I — единичная матрица. Однако, как отмечает Марквардт в [6], если 1 будет достаточно велик, то влияние аппроксимированной матрицы Гессе JTJ практически равно нулю. Чтобы избежать этого, в [6] предложено заменить единичную матрицу матрицей с диагональю аппроксимированной матрицы Гессе. Тогда формула (4) будет иметь вид:

(JTJ + 1-1 )Д0 = JTE.

Таким образом, алгоритм обучения нейронной сети на основе метода Левенберга-Марквардта будет иметь следующий вид:

1. Рассчитать ошибку сети за одну эпоху по формуле (2).

2. Рассчитать элементы матрицы Якоби по формуле (3).

3. Решить уравнение (5) и рассчитать ошибку сети для вновь полученных параметров сети. Если ошибка уменьшилась — перейти к шагу 5, иначе — перейти к шагу 4.

4. Вернуться к прежним значениям параметров сети и увеличить регуляризующий параметр 1 (обычно увеличивают в 10 раз). Перейти к шагу 3.

Принять полученные значения параметров сети, уменьшить значение параметра 1

(обычно уменьшают также в 10 раз) и перейти к новой эпохе обучения.

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

Применение алгоритма на основе метода Левенберга-Марквардта

В рамках данной статьи реализовано обучение нейронной сети, состоящей из трех слоев: входного (n нейронов), скрытого (m нейронов) и выходного (p нейронов). Кроме того, на каждом слое присутствует нейрон, называемый пороговым нейроном (в англоязычной литературе используется термин bias или threshold), выход которого, в отличие от обычного нейрона, всегда равен 1. Введение такого нейрона делает алгоритм обучения нейронной сети более гибким.

Для нейронной сети с одним скрытым слоем формула (1) примет вид:

Y = Y (X, 0) = о (W(2) о (W(1) X + B(1)) + B(2)),

где W (1) — матрица весов нейронов скрытого слоя, W(2) — матрица весов выходного слоя, B (1) — веса пороговых нейронов скрытого слоя, B (2) — веса пороговых нейронов выходного слоя. Тогда элементы матрицы Якоби будут иметь следующий вид:

Если 6r есть вес нейрона скрытого слоя,

т. е. 0r = wj ,

тогда

эе

Э0

де, (2) / —^=w(2 /о'

aw(,1), i j

( f о

\

W

X w(1

V j=1

(1) у j Xj

Xj, о'

//

Xwf Xk

U=1

где хк — выход к-го нейрона скрытого слоя, о'() — значение производной функции активации в точке.

Если 9Г есть вес нейрона выходного слоя,

т. е. 0r = wj

тогда

104

дв: дв:

дег dwj

X

V k=1 0,/Ф/'

wf xk

Xj', / = /

Если 6Г есть вес порогового нейрона скрытого слоя, т. е. 0Г = Ь((,1), тогда

дв, дв,

f ( n > ( m \

wj) а' а XW Xj а' [Xwf Xk

V V j=1 У 7 V k=1 7

дег дьС

Если 6Г есть вес порогового нейрона выходного слоя, т. е. 0Г = Ь((,2), тогда

дв, дв,

дег дЬ

r / Г ,

а

m

X

V k=1 0, / Ф /'

w(2 Xk

, / = /

F (Y ) = aEw +PE,,

где Ed — ошибка сети (см. формулу (2)), Ew — среднеквадратичная сумма парамет-

в =

2Ew + trасв ((J ]-P • N

2Ed '

Стандартный алгоритм на основе метода Левенберга-Марквардта имеет ряд существенных недостатков.

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

2. Алгоритм очень чувствителен к выбору начальных значений весов.

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

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

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

где tracв ([JTJ] 1) — сумма диагональных

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

Для уменьшения чувствительности алгоритма к начальным значениям параметров сети был применен подход, предложенный Д. Нгуеном и Б. Уидроу в работе [13].

На практике этот подход реализуется следующим образом. Вначале все параметры сети инициализируются случайными значениями из отрезка [ - 0,5; 0,5]. Затем каждый параметр нормируется и умножается на коэффициент 0,7^m, где n — число нейронов текущего слоя, а m — следующего. В результате алгоритм быстрее сходится и менее подвержен флюктуациям начальных значений параметров нейронной сети. В [13] отмечается очень существенное сокращение числа эпох обучения (до нескольких порядков). В рамках настоящей работы применение данного подхода — сокращение числа эпох — было более скромным — порядка 20 - 30%.

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

ров сети, а и в — гиперпараметры. В ре- g зультате алгоритм стремится не только ми- ^ нимизировать ошибку сети, но и не допус- < тить неограниченного роста ее параметров. ^ В данной статье для расчета гиперпараметров используются формулы, предложенные Я. Поландом в работе [12]:

Y = S -a- trасв ([JT J ]-1);

Y

a=

№ 6 (36) 2011

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

Технология NVIDIA CUDA для обучения нейронных сетей

Как уже отмечалось, для уменьшения размерности входных данных, на входы нейронной сети в настоящей работе подаются средние яркости частей изображе-§ ния размером 8 на 8 пикселей. Несмотря ^ на это, обучение нейронной сети с помо-§ щью алгоритма на основе метода Левен-s берга-Марквардта является очень ресур-о соемким процессом, особенно в области § умножения матриц и нахождения обратной К матрицы.

§ В настоящее время вычисления на гра-| фических ускорителях — одно из наибо-g лее динамично развивающихся направлений в области параллельных вычислений. ig Основным фактором, благодаря которому «I вычисления на GPU обрели столь большую о популярность, является сравнительная де-^ шевизна графических ускорителей, которая | дает возможность проводить параллельные | вычисления с высокой скоростью на обыч-| ных графических ускорителях персонально ных компьютеров.

[S Фактически графический ускоритель s с поддержкой NVIDIA CUDA — это вычис-8 лительный кластер с множеством узлов Ц и общей памятью. В отличие от центральна ного процессора, графический ускоритель

'<§ изначально предназначался для парал-%

§ лельных вычислений — построение трех-Ü мерных моделей, хотя и требует высокой ! производительности, очень хорошо расой параллеливается. Вычислительная модель

GPU1 на верхнем уровне представляет собой сетку (grid) размерности N1xN2xN3. Каждый блок (block), в свою очередь, состоит из множества нитей (threads), производящих параллельные вычисления. Каждый блок обладает общей памятью (shared memory), доступной всем нитям блока. Каждая нить обладает локальной (local memory) и регистровой (register memory — недоступна разработчику) памятью. Общая память и локальная память — быстрые виды памяти, однако их объем очень ограничен. Все блоки могут взаимодействовать с тремя видами памяти, общей для всего графического ускорителя: глобальной (global memory), константной (constant memory) и текстурной (texture memory) памятью. Хотя глобальная память во много раз медленнее общей памяти блока и, тем более, регистровой памяти нити, она в несколько раз быстрее оперативной памяти компьютера и ее объем позволяет хранить в ней значительные объемы данных.

Результаты

В рамках настоящей работы была построена нейронная сеть, обучаемая по алгоритму на основе метода Левенберга-Мар-квардта, описанному выше. Исходными данными для практической задачи послужили растровые полутоновые изображения размером 64 на 64 пикселя. Изображения разбивались на части размером 8 на 8 пикселей и на вход нейронной сети подавались средние яркости этих частей — всего 64 яркости. Поскольку сеть училась распознавать изображения 26 латинских букв и 10 цифр, в качестве желаемых выходов сети в обучающей выборке присутствовали

1 CUDA Руководство по началу работы (Windows) [Электронный ресурс] Режим доступа: http://develop-er.download.nvidia.com/compute/DevZone/docs/html/C/ doc/CUDA_C_Getting_Started_Windows.pdf; CUDA C Руководство программиста [Электронный ресурс] Режим доступа: http://developer.download.nvidia.com/ compute/DevZone/docs/html/C/doc/CUDA_C_Program-ming_Guide.pdf.

двоичные представления номеров эталонов изображений в выборке. Шести выходных нейронов оказалось достаточно для кодирования всех 36 эталонов. Таким образом, входной слой нейронной сети содержал 64 нейрона, скрытый — от 6 до 24, а выходной — 6.

Для формирования тестового множества и тестирования сети в целом были созданы зашумленные варианты эталонных изображений. В качестве шума выбрали импульсный шум (в англоязычной литературе чаще используют термин salt and рвррвг no/sв) [14]. Под уровнем шума понимается доля пикселей, чьи яркости были заменены на случайные яркости, распределенные равномерно (т. е. уровень шума в 50% означает, что яркости 50% всех пикселей изображения заменены на случайные). Для каждого эталона были созданы 1000 зашумленных образцов — по 10 образцов на каждый уровень шума.

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

1. Выборка 0 — включает в себя только не зашумленные эталоны.

2. Выборка 0 - 5 — не зашумленные эталоны и зашумленные с уровнем шума 5%.

3. Выборка 0 - 10 — не зашумленные эталоны и зашумленные с уровнем шума 10%.

4. Выборка 0 - 20 — не зашумленные эталоны и зашумленные с уровнем шума 20%.

5. Выборка 0 - 30 — не зашумленные эталоны и зашумленные с уровнем шума 30%.

6. Выборка 0 - 5 -10 — не зашумленные эталоны и зашумленные с уровнем шума 5 и 10%.

Количество эпох обуч

7. Выборка 0 -10 -20 — не зашумленные эталоны и зашумленные с уровнем шума 10 ^ и 20%. <

8. Выборка 0 -10 -30 — не зашумленные ^ эталоны и зашумленные с уровнем шума 10

и 30%.

9. Выборка 0 -20 - 30 — не зашумлен-ные эталоны и зашумленные с уровнем шума 20% и 30%.

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

1. Количество эпох обучения должно быть наименьшим.

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

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

Таблица 1

1я на разных выборках

Выборка 0 0 - 5 0 - 10 0 - 20 0 - 30 0-5-10 0-10-20 0-10-30 0-20-30

Эпохи обучения 47 43 45 44 47 63 64 78 82

№ 6 (36) 2011

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

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

1 со

еа

I

г

-а

I §

и

1

I Л

0

§

§ §

3

5 ^

1

6

о £

0

1

I

¡8

I

I

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100

Уровень шума

Выборка 0 Выборка 0-20 Выборка 0-10-20

Выборка 0-5 Выборка 0-30 Выборка 0-10-30

Выборка 0-10 Выборка 0-5-10 Выборка 0-20-30

Рис. 2. Тестирование нейронной сети

108

№ 6 (36) 2011

выборки примерами, зашумленными шумом с уровнем 5 и 10% ведет к постепенному росту качества распознавания (график для выборки 0 - 10 лежит выше графика для выборки 0 - 5). Однако увеличение уровня шума добавочных примеров выше 20% не приводит к повышению качества распознавания (графики для обучающих выборок 0 - 20 и 0 - 30 почти совпадают). Похожие результаты достигнуты, например, в работе [1]. Построенная нейронная сеть способна распознавать образцы с уровнем шума до 40% с ошибкой не выше 10% (доля правильно распознанных образцов не ниже 90%). Если же повысить приемлемую ошибку до 20% (доля правильно распознанных образцов не ниже 80%), сеть будет способна распознавать образцы с уровнем шума до 50%.

Для сравнения производительности при использовании возможностей графического ускорителя (GPU) и только центрального процессора (CPU) было проведено тестирование нейронной сети с переменным количеством нейронов в скрытом слое — от 6 до 24 с шагом в 3 нейрона. Количества эпох при обучении с использованием GPU и без него практически идентичны. В табли-

це 2 показано соотношение среднего времени одной эпохи обучения нейронной сети ^ для каждого количества скрытых нейронов, < а в табл. 3 — соотношение общего време- ^ ни обучения.

Как видно из приведенных в табл. 2 и 3 данных, с ростом размерности нейронной сети преимущество, даваемое использованием графического ускорителя, возрастает. Если для нейронной сети со скрытым слоем из 6 нейронов ускорение обучения при использовании графического ускорителя составляет 8,5 раз, то для нейронной сети со скрытым слоем из 15 нейронов — уже 34 раза, а для нейронной сети со скрытым слоем из 24 нейронов — 110 раз. Ускорение обучения нейронной сети, достигнутое в настоящей работе, превышает результаты аналогичных исследований других авторов, представленные в работах [15 и 16]. В частности, в [15] коэффициент ускорения при обучении нейронной сети размерности сходной с сетью с девятью скрытыми нейронами данной работы, равнялся 6,9. В [16] было достигнуто максимальное ускорение в 63 раза для нейронной сети с 25 скрытыми нейронами, что также существенно меньше ускорения, достигнутого в нашей работе.

Таблица 2

Среднее время одной эпохи обучения

Кол-во скрытых нейронов 6 9 12 15 18 21 24

CPU 2,622 8,184 20,058 41,863 83,16 175,656 372,62

GPU 0,313 0,597 0,846 1,224 1,715 2,543 3,277

Таблица 3 Общее время обучения

Кол-во скрытых нейронов 6 9 12 15 18 21 24

CPU 74,4 531,96 1056,9 2237,22 4573,8 9381,54 19802,58

GPU 8,752 25,063 49,92 65,76 92,22 142,56 179,82

ч 109

№ 6 (36) 2011

1 и

s

Q

I

S

-a

i §

u

1

I Л

0 §

1

is §

§

5

t ss

о £

0 f

1

S

I

I

Заключение

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

Список литературы

1. Mohd Yusoff Mashor, Siti Noraini Sulaiman Recognition of Noisy Numerals using Neural Network // Internatioonal Journal of the computer, the internet and management, Assumption University. Bangkok, 2001. Vol. 9. No. 3. P. 158 - 164.

2. Bournau Y.-L, Bach F., LoCun Y, Ропсв J. Learning Mid-Level Features For Recognition // IEEE Conference on Computer Vision and Pattern Recognition, Colorado Springs, USA, 2010. P. 2559 - 2566.

3. Lowo D. Distinctive Image Features from Scale-Invariant Keypoints // International Journal of Computer Vision. 2004. Vol. 60. Issue 2. P. 91- 110.

4. Hagan M. T., M. Menhaj Training feedforward networks with the Marquardt algorithm // IEEE Transactions on Neural Networks, IEEE Computational Intelligence Society, Chicago, USA, 1994. Vol. 5. No. 6. Р. 989 - 993.

5. Kenneth Levenberg A Method for the Solution of Certain Non-Linear Problems in Least Squares // The Quarterly of Applied Mathematics, Brown University, Providence, USA. 1944. Vol 2. Р. 164 - 168.

6. Donald Marquardt An Algorithm for Least-Squares Estimation of Nonlinear Parameters // SIAM Journal

10

11

on Applied Mathematics, Society for Industrial and Applied Mathematics, Philadelphia, USA. 1963. Vol 11. № 2. Р. 431- 441.

7. Andorson Thomas J., Wilamowski B. M. A Modified Regression Algorithm for Fast One Layer Neural Network Training // World Congress of Neural Networks. Vol. 1. Р. 687 - 690. Washington DC, USA. July 17 - 21. 1995.

8. Jinhua Xu, Danbl W. C. Ho, Yufan Zhong. A Constructive Algorithm for Feedforward Neural Networks // 5th Asian Control Conference, 20 - 23 July 2004, Shanghai, China. Vol. 1. Р. 659 - 664.

9. Wilamowski B. M, Yixin Chon, Malinowski A. Efficient Algorithm for Training Neural Networks with one Hidden Layer // IJCNN '99. International Joint Conference, Washington DC, 1999. Vol. 3. Р. 1725 - 1728.

David J. C. MacKay A practical Bayesian framework for backpropagation networks // Neural Computation, MIT Press, Cambridge, USA. 1992. Vol. 4. Р. 448 - 472.

MacKay D. Bayesian methods for neural networks — FAQ, available on: URL: http://www.inference.phy.cam.ac.uk/mackay/Bayes_ FAQ.html, 2004.

12. Poland J. On the Robustness of Update Strategies for the Bayesian Hyperparameter alpha. [Online] November 2, 2001. URL: www-alg.ist.hokudai.ac.jp/~jan/alpha.pdf.

13. Nguyon D., Widrow B. Improving the learning speed of 2-layer neural networks by choosing initial values of the adaptive weights // Proceedings of the International Joint Conference on Neural Networks, Washington DC. Vol. 3. Р. 21 - 26. 1990.

14. Gonza^z R, Woods R. Digital Image Processing. Addison-Wesley Publishing Company, Boston, USA, 1992. — 528 p.

15. Изотов П. Ю., Суханов С. В., Головашкин Д. Л. Технология реализации нейросетевого алгоритма в среде CUDA на примере распознавания рукописных цифр // Компьютерная оптика. Самара. 2010. Т. 34. № 2. С. 243 - 252.

16. S^rra-Canto X., Madoгa-Ramiгoz F., Cotina V. U. Parallel Training of a Back-Propagation Neural Network Using CUDA // IEEE Computer Society, Washington, DC, 2010. Р. 307 - 312.

110